最新情報
ナウいマイコン 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文字、バッファに格納されたようです。
この関数を使えば、受信データがあるかどうか?確認できそうです。
なかなかナウいですね。
加納 大裕 (かのう だいゆう)
-
- 2023.02.28
- 薪ストーブ 新聞で掲載されました
-
- 2023.01.26
- ナウいマイコン PSoC4200 の EEPROM(EmEEPROM)(備忘録)
-
- 2023.01.19
- ナウいマイコン PSoC4200 の WDT(備忘録)
-
- 2023.01.17
- ナウいマイコン PSoC4200 でHX711を試してみた