摘要:
在搞启用fifo和BDMA的UART时,确实走了不少弯路。昨天一下午的时间我都在用轮询法检测DMA的运行情况,加上BDMA配置上犯了这样那样的错误,昨天一直都在报RUNOVER。总算在昨晚熄灯的最后时刻,停止了溢出,可接包总是丢失。对于这种最稳定的模式,这种现象是不该出现的。 考虑来考虑去,原来是我犯了低级错误。轮询怎么能用在DMA模式呢?而且我保接包数量放在普通函数中计算,通过轮询BDCON的SET位。结果可想而知。本身BDMA的数据传输就不经过CPU,而执行计数函数前又要执行其他函数或中断函数,漏查是在所难免的。好在今天觉悟了。换成中断。void Uart_BDMAInit(void){ 阅读全文
摘要:
针对zgpswh在串口使用上的一些难题,总结个人在前一阶段的理解,比较片面,不对的地方请高手指正。1、LPC2000 系列芯片的串口的接收模块包括接收缓冲寄存器和移位寄存器。接收的数据进入移位寄存器后经移位处理并行传入缓冲寄存器,事实上,UART的FIFO是一个硬件环形的缓冲队列,物理上不可寻址,不可见,仅U0RBR这个FIFO出口可见。U0RBR就是接收FIFO的第一位。FIFO的长度是可设的,也叫触发点,低于这个长度的字符串不会引起中断,但在实际应用中,不可能串口读入的数据长度总为触发点值的整数倍,为此,引入了CTI即字符接收超时中断,当有不足触发点值规定的字符串读入时,将引起中断,其与串 阅读全文