最新情報

ナウいマイコン PSoC4200 シリアル受信バッファ(備忘録)

Arduino で「Serial.available()」という

「シリアルポートに何バイトのデータが到着しているかを返します」という便利な関数があります。

PSoC4でも、同じような関数が無いのか探してみました。

 

説明書をよーく探してみると

uint32 SCB_SpiUartGetRxBufferSize(void)

という、それらしい関数があります。

 

わずかしかない、英語能力を使用してよんでみると

レシーブバッファ内の、データ数を返す・・・・・・のような事が書いてあります。

早速試してみましょう。

コンポーネントは、UART(UART_1)と確認用LCDのためのI2C(I2CM)のみです。

UARTコンポーネントの「RX buffer size」を 「10」にして試してみます。

シリアルデータは、パソコンから「TeraTerm」を使用してテキストデータ(テンキーから適当に数字)を送信します。

 

ソースはこれ。

#include 	"project.h"
#include	<stdio.h>
#include	<stdlib.h>
#include	"I2CLCDDRV.h"

char	lcd_str[32];
uint32	rx_buf;

int main(void)
{
	
    CyGlobalIntEnable; /* Enable global interrupts. */

    /* Place your initialization/startup code here (e.g. MyInst_Start()) */
    I2CM_Start();		// I2C 開始
	I2C_LCD_Init();		// I2C LCD 初期化
	
	UART_1_Start();		// 232通信開始
	
    for(;;)
    {
        /* Place your application code here. */
		rx_buf = UART_1_SpiUartGetRxBufferSize();	// 受信バッファに溜まってるデータ数
		sprintf(lcd_str,"%5ld",rx_buf);				// データ数を文字に変換
		I2C_LCD_position(1,1);
		I2C_LCD_Char_PrintString("Buf  = ");			// LCDで確認
		I2C_LCD_Char_PrintString(lcd_str);			// LCDで確認
	}
}

/* [] END OF FILE */

 

 

結果(テスト動画)

 

 

10文字、バッファに格納されたようです。

 

この関数を使えば、受信データがあるかどうか?確認できそうです。

なかなかナウいですね。

 

加納 大裕 (かのう だいゆう)

 

 

 

 

最新の投稿記事

加納製作所の商品開発

  • 薪ストーブ
  • メッキアノード
  • 粉体塗料
  • ミニトマト選別機

開発でお悩みの方、

まずは新たな発想を生む
私達の開発環境へお越しください。
知識・経験・ノウハウがそのお悩みを解決します。

開発のご相談