最新情報
ナウいマイコン 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文字、バッファに格納されたようです。
この関数を使えば、受信データがあるかどうか?確認できそうです。
なかなかナウいですね。
加納 大裕 (かのう だいゆう)
-
- 2024.11.11
- 11月17日、薪ストーブイベント出展、ふれあいパークほうらい
-
- 2024.11.10
- 薪ストーブ展示場所リニューアル
-
- 2024.10.31
- 11月3日イベント出展、売木村&東栄町
-
- 2024.09.19
- 薪ストーブ、新城軽トラ市「49番ブース」、出店します。
-
- 2024.01.20
- 薪ストーブ出展 新城消防祭