基于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;
}