
各模式下的UART
文章平均质量分 53
咕唧咕唧shuboLK
这个作者很懒,什么都没留下…
展开
-
虽然是LPC但对UART FIFO的硬件原理说的比较清楚
LPC2000 UART串口使用心得针对zgpswh在串口使用上的一些难题,总结个人在前一阶段的理解,比较片面,不对的地方请高手指正。1、LPC2000 系列芯片的串口的接收模块包括接收缓冲寄存器和移位寄存器。接收的数据进入移位寄存器后经移位处理并行传入缓冲寄存器,事实上,UART的FIFO是一个硬件环形的缓冲队列,物理上不可寻址,不可见,仅U0RBR这个FIFO出口可见。U0RBR就是接收FIFO的第一位。FIFO的长度是可设的,也叫触发点,低于这个长度的字符串不会引起中断,但在实际应用中,不可能串口读入转载 2010-05-31 15:31:00 · 10499 阅读 · 9 评论 -
44b0 uart 启用FIFO 使用小体会
开始我把FIFO看得过于神秘(虽然定义很明确,先入先出缓冲区),外加发送缓冲区和FIFO入口地址一样。发送缓冲区时16位的,低8位为数据区,而FIFO单位以字节算起(实际是字符,因为每帧数据有起始位和停止位等等)。搞得我一头雾水,它的工作机制是怎么样的? 本人实在是能力有限,搞一下午才弄明白。FIFO定义说了,先入先出缓冲区,在UART中有什么用呢。我们可以用它来批量发送数据,能在一定程度上提高数据发送速度。还有就是避免数据包的的丢失(这个问题,目前还没体会)。 对于使用,说一下原理,代码很简单可原创 2010-05-31 17:34:00 · 3006 阅读 · 1 评论 -
高效FIFO串口双机通信在ARM7上的实现
高效FIFO串口双机通信在ARM7上的实现S3C44B0X(时钟频率为60 MHz)的UART单元提供2个独立的异步串行I/O口,每个通信口均可工作于中断或DMA模式。即UART能产生内部中断请求或DMA请求,在CPU和串行I/O口之间传送数据。它支持高达115.2 Kb/s的传输速率,每1个UART通道包含了2个16位的分别用于接收和发送信号的先进先出(FIFO)通道。S3C44B0X UART包括可编程波特率、红外发送/接收、1个开始位、1个或2个停止位、5/6/7/8位数据宽度和奇偶校验。每个UART转载 2010-05-31 16:20:00 · 3132 阅读 · 0 评论 -
FIFO接收数据
老规矩,先说下问题:串口在接收pc端发来的数据时(100个bytes,每200ms发送一次),偶尔会丢一些数据。某一次的测试记录如下:第一次丢数据 发送总量60多万字节 丢了27个第二次丢数据 发送总量80多万字节 (在上一次发送的基础上又)丢了40个第三次丢数据 发送总量190多万字节 (在上一次发送的基础上又)丢了37个 以上数据要说明的是所丢的数据是一个随机情况,因为如果我把环境清空(例如断电重启)而pc端的发送条件不变,那么丢数据的情况就不是上面显示的记录了。 分析,所谓的丢原创 2010-05-31 20:32:00 · 3960 阅读 · 0 评论 -
UART+FIFO+DMA for 44b0
在搞启用fifo和BDMA的UART时,确实走了不少弯路。昨天一下午的时间我都在用轮询法检测DMA的运行情况,加上BDMA配置上犯了这样那样的错误,昨天一直都在报RUNOVER。总算在昨晚熄灯的最后时刻,停止了溢出,可接包总是丢失。对于这种最稳定的模式,这种现象是不该出现的。 考虑来考虑去,原来是我犯了低级错误。轮询怎么能用在DMA模式呢?而且我保接包数量放在普通函数中计算,通过轮询BDCON的SET位。结果可想而知。本身BDMA的数据传输就不经过CPU,而执行计数函数前又要执行其他函数或中断原创 2010-06-02 16:31:00 · 2859 阅读 · 0 评论