UARTを使う方法
今日はUART通信が出来るようになりました
というわけで以下のように設定する方法をメモ
U0C0 UART送受信制御レジスタ0
UFORM | CKPOL | NCH | - | TXEPT | - | CLK1 | CLK0 |
変更するビット : CLKx
- clk0=0
- clk1=0
-
- BRGカウントソースをf1に設定
-
U0BRG UARTビットレートレジスタ
UiBRG |
変更するビット : UiBRG
- UiBRG=0x40
- ビットレート0x40(19200bps)に設定
//****UART0の初期設定************************************* // U0MRの設定 smd0_u0mr = 1; // UART0 8bit Mode smd2_u0mr = 1; // U0C0の設定 clk0_u0c0 = 0; clk1_u0c0 = 0; // BRGカウントソースをf1に設定 // U0C1の設定 te_u0c1 = 1; // 送信許可 re_u0c1 = 1; // 受信許可 // U0BRG ビットレートの設定 u0brg = 0x40; // 約19200bps
送信する方法
- ti_u0c1 : 送信バッファ空フラグ
- u0tb : 送信バッファ(16bit)
while(ti_u0c1 == 0); // 送信バッファ空き待ち u0tb = tx_data; // 送信バッファに書き込み→後は自動で送信
受信する方法
- ri_u0c1 : 受信完了フラグ
- u0rb : 受信バッファ(16bit)
※u0rbは必ず16ビットで読み出さないと受信完了フラグがクリアされない(手動クリアも不可)
if(ri_u0c1 == 1){ // 受信バッファにデータ有か? rx_data = u0rb; // 受信データをメモリに保存 }