TQ2440 Uart的基本应用
来源:互联网 发布:顶点软件 603383 股吧 编辑:程序博客网 时间:2024/06/06 02:55
S3C2440的Uart包含两种模式:FIFO模式和非FIFO模式
FIFO模式:
发送数据:数据先写到发送FIFO寄存器,然后数据从发送FIFO寄存器复制到发送移位寄存器,最后数据从TXDn移出。
接收数据:数据从RXDn引脚接收数据到接受移位寄存器,然后数据从接受移位寄存器复制到接受FIFO寄存器。最后CPU从接收FIFO寄存器中读取数据。
非FIFO模式:
发送数据:数据先写入到发送保持寄存器,然后数据从发送保持寄存器复制到发送移位寄存器,最后数据从数据引脚TXDn发送出去。
接受数据:数据从RXDn引脚接受数据到接受移位寄存器,然后复制到接受保持寄存器,最后CPU从接受保持寄存器中读取数据。
由图中可以看出在非FIFO模式下 , Transmit buffer Register 里底下一个为发送保持寄存器。而Receive buffer Register 里最上面的一个为接受保持寄存器
由上图可以看出,时钟有三个来源
1.PCLK
2.FCLK/n
3.UEXTCLK
在基本使用Uart时(不涉及硬件流控制),涉及的寄存器有:
1.ULCONn 配置数据长度,停止位,奇偶校验等
2.UCONn 配置发送模式,接受模式
3.UBRDIVn 设置波特率
4.UTRSTATn 串口状态信息
5. UTXHn和URXHn 发送和接受缓冲器
波特率的计算公式:
初始化串口的一般步骤:
1.设置GPH相应引脚为第二功能,RX和TX (GPHCON)
2.设置通信数据协议,(ULCONn)
3.设置发送模式(中断,查询等)(UCONn)
4.设置波特率(UBRDIVn)
5.设置中断向量表(pISR_UARTn = ...)
6.使能中断(需要注意,UART有子中断,需要使能相应的子中断(INTMSK,INTSUBMSK))
示例代码:
/*程序的功能是使用串口从PC接收数据并发送回PC**在接受的数据中,如果接收到了s则关闭led,o则点亮led*/#include "2440addr.h"#include "config.h"#define PCLK 50000000void UartInit(int baudrate);void __irq uartISR(void);void ledInit(void);void Main(void){UartInit(115200);ledInit();while(1);}void UartInit(int baudrate){/*设置IO为RX和TX*/rGPHCON &= ~((3<<4) | (3<<6));rGPHCON |= (2<<4) | (2<<6);/*正常模式,无奇偶校验,一个停止位,和8位数据*/rULCON0 &= ~(0xff);rULCON0 |= (3<<0);/*时钟来源PCLK,发送和接受都是中断或者查询模式*/rUCON0 &= ~(0xffff);rUCON0 |= (1<<2) | (1<<0);/*设置波特率*/rUBRDIV0 = (int)(PCLK/baudrate/16) - 1;pISR_UART0 = (unsigned int)uartISR;rSUBSRCPND |= ((1<<0) | (1<<1));rSRCPND |= (1<<28);rINTPND |= (1<<28);/*使能发送和接受中断*/rINTSUBMSK &= ~((1<<0) | (1<<1));rINTMSK &= ~(1<<28);}void ledInit(void){rGPBCON &= ~(3<<10);rGPBCON |= (1<<10);rGPBDAT &= (1<<5);}void __irq uartISR(void){char buf;if (rSUBSRCPND & (1<<0)) //RX{buf = rURXH0;if (buf == 's')rGPBDAT |= (1<<5);else if (buf == 'o')rGPBDAT &= ~(1<<5);rUTXH0 = buf;rSUBSRCPND |= (1<<0);}else{rSUBSRCPND |= (1<<1);}rSRCPND |= (1<<28);rINTPND |= (1<<28);}
- TQ2440 Uart的基本应用
- TQ2440 ADC基本应用
- 11.5 UART串口通信的基本应用
- TQ2440裸机上的UART程序分析
- TQ2440 定时器中断--基本应用
- Uart串口实验--TQ2440
- TQ2440之UART
- S5PV210的Uart应用
- S5PV210的Uart应用
- TQ2440 软中断的基本使用
- TQ2440裸奔程序>>串口UART的PC机按键测试程序
- TQ2440开发板学习纪实(7)--- 基于中断的UART串口接收
- TQ2440-UART(查询及中断方式)
- ARM裸机实验 UART串口(S3C2440A) TQ2440
- Embedded Linux UART的使用-基本介绍
- CSR8670的UART功能的应用笔记
- 关于UART的学习与应用
- S3C2440中UART的原理和应用
- java源代码String.java
- 防止Windows安装更新后自动重启
- UVa 11865 Stream My Contest 二分+最小树形图
- POJ1936-All in All(java版)
- java RandomAccessFile类的用法
- TQ2440 Uart的基本应用
- 正确处理好工作任务和自身技术发展的关系
- strcpy和memcpy的区别
- Raspberry - MAC上使用USB转串口线连接访问树莓派
- 动态规划经典入门
- 《数据结构、算法与应用》8.(顺序查找数组中第一个出现指定元素的位置)
- 昨晚想了一宿交的研究生作业
- PipedInputStream类与PipedOutputStream类完全解析
- hashmap 模板实现