基於ARM裸機的UART驅動
UART:
-
軟件協議:通用異步收發器,使用的是rs232協議。
-
硬件接口:db9接口,9根插針,實際使用 2,3,5
2 ----> 接收
3 ----> 發送
5 ----> 接地
rs232協議
串行、全雙工、異步的通信協議。
- 串行:所有的數據排隊進行發送。
- 全雙工:同一時刻,可以接收,也可以發送。
- 異步:沒有同時時鐘源。
電平規則
邏輯1: -3v — -15v
邏輯0: 3v — 15v
rs232協議的一些規則
波特率:115200
發送速率:115200bit/s
發送格式 8 N 1:8bit發送, N 無奇偶校驗 1位停止位
寄存器配置
int uart0_init(void)
{
GPA0CON &= ~0xff;
GPA0CON |= 0x22; /* 設置引腳爲uart功能 */
ULCONn &= ~0x3f;
ULCONn |= 0x3; /* 設置8N1模式 */
UCONn &= ~0xf;
UCONn |= 0x5; /* 設置收發倫循模式 */
UBRDIVn = 53;
UFRACVALn = 4;
return 0;
}
int put_char(char ch)
{
while (!(UTRSTATn & 0x2));
UTXHn = ch;
if (ch == '\n')
put_char('\r');
return 0;
}
char get_char(void)
{
char ch;
while (!(UTRSTATn & 0x1));
ch = URXHn;
if (ch == '\r')
ch = '\n';
put_char(ch);
return ch;
}