[Linux]UART-基于S3C2440
[Linux]UART-基于S3C2440
Linux学习总结
艾恩凝 2021/3/26
一、串口基本信息
1)UART框图
2)配置uart0串口引脚
这个根据原理图和文档即可配置成功
3)配置中断查询模式
根据上图,我们设置中断查询方式
3)配置波特率
手册上说明了配置数据格式
4)配置数据格式
现在只需关注最后数据长度就可以,还有停止位
5)状态寄存器
查看状态寄存器是否可以接收发送
6)缓冲寄存器
当数据就绪后,通过该寄存器接收发送
二、串口代码实现
1void uart0_init()
2{
3 /* 设置引脚用于串口 */
4 /* GPH2,3用于TxD0, RxD0 */
5 GPHCON &= ~((3<<4) | (3<<6));
6 GPHCON |= ((2<<4) | (2<<6));
7 GPHUP &= ~((1<<2) | (1<<3)); /* 使能内部上拉 */
8 /* 设置波特率 */
9 /* UBRDIVn = (int)( UART clock / ( buad rate x 16) ) –1
10 * UART clock = 50M
11 * UBRDIVn = (int)( 50000000 / ( 115200 x 16) ) –1 = 26
12 */
13 UCON0 = 0x00000005; /* PCLK,中断/查询模式 */
14 UBRDIV0 = 26;
15 /* 设置数据格式 */
16 ULCON0 = 0x00000003; /* 8n1: 8个数据位, 无较验位, 1个停止位 */
17 /* */
18}
19int putchar(int c)
20{
21 /* UTRSTAT0 */
22 /* UTXH0 */
23 while (!(UTRSTAT0 & (1<<2)));
24 UTXH0 = (unsigned char)c;
25}
26int getchar(void)
27{
28 while (!(UTRSTAT0 & (1<<0)));
29 return URXH0;
30}
31int puts(const char *s)
32{
33 while (*s)
34 {
35 putchar(*s);
36 s++;
37 }
38}
吾心信其可行,
则移山填海之难,
终有成功之日!
——孙文
则移山填海之难,
终有成功之日!
——孙文
评论
0 评论