Mini210S 開発キット詳細URL
第XII章 シリアルポート設定-文字の入力および出力
第二節 プログラム説明
ステップ3 ボーレートを設定
ボーレートは毎秒伝送のデータビット数です、2つのレジスタに関わります::UBRDIV0 和 UDIVSLOT0
ボーレート設定式:UBRDIVn + (num of 1's in UDIVSLOTn)/16 = (PCLK / (bps x 16))−1、 Maximum Operating Frequency for Each Sub-block図で、UART は PSYS 下で作動します、よって、 PCLK 即 PCLK_PSYS = 66.5MHz、ボーレートbpsを 115200と設定します、よって(66.5MHz/(115200 x 16)) – 1 = 35.08 = UBRDIVn + (num of 1's in UDIVSLOTn)/16、 UBRDIV0=35、UDIVSLOT0=0x1
getc()と putc()コード:
// 一文字受信
char getc(void)
{
while ((UFSTAT0 & 0xff) == 0); // RX FIFOは空の場合、待ちます
return URXH0; //データを読み取り
}
//一文字送信
void putc(char c)
{
while (UFSTAT0 & (1<<24)); // RX FIFOは満ちの場合、待ちます
UTXH0 = c; //データを書き込み
}
UARTデータ送信レジスタ
UARTデータ受信レジスタ
送信/受信ステータスレジスタ
UTRSTAT0送信/受信ステータスレジスタを読み取り、Receive buffer data ready= 1 の場合はデータを受信で、URXH0 レジスタを読み込まれば、 8bit のデーだを受け取ります;Transmitter empty = 1の場合はデータを送信でき、そしてUTXH0に8bitのデータを書き込みます。
第三節 コードコンパイルとプログラミングの実行
コードをコンパイルし、Fedora端末で下記のコマンドを実行します:
# cd 12.uart_putchar
# make
12.uart_putcharのディレクトリ下にuart.binを生成し、それを開発ボードにプログラムします。
第四節 実験現象
シリアルケーブルを接続、ポートを開きます、PCで任意文字を入力し、シリアル端末ではASCIIコード表の次の文字を表示します、例えば入力文字は゛a゛、シリアル端末では゛b゛が表示します。
本章では UARTを初期化して、端末で文字入力は可能になりました、これはコードをデバッグすることに効率が大幅に上がりますが、現在のコードは簡単で、一文字だけ入力/出力できます。次の章ではputc()和 getc()の関数をしようして、プログラムにprintf()と scanf()機能を加えます。
---続く