[Linux]UART-基于S3C2440

[Linux]UART-基于S3C2440

Linux学习总结

艾恩凝 2021/3/26

一、串口基本信息

1)UART框图

001.png

2)配置uart0串口引脚

这个根据原理图和文档即可配置成功

3)配置中断查询模式

003.png
004.png

根据上图,我们设置中断查询方式

3)配置波特率

002.png
0022.png

手册上说明了配置数据格式

4)配置数据格式

006.png

现在只需关注最后数据长度就可以,还有停止位

5)状态寄存器

007.png

查看状态寄存器是否可以接收发送

6)缓冲寄存器

008.png

当数据就绪后,通过该寄存器接收发送

二、串口代码实现

 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 评论
avatar

取消