4组串口UART使用DMA收发 @STC32G,易用,高效,稳定 !精品实战代码 - DMA: 支持4组串口,3组SPI,I2C,TFT-i8080/M6800,ADC 国芯技术交流网站 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)
神农鼎 发表于 2024-6-17 15:42
4组串口UART使用DMA收发 @STC32G,易用,高效,稳定 !精品实战代码 - DMA: 支持4组串口,3组SPI,I2C,TFT-i8 ...
这段代码我看了,其实也正是由于我提出那个改进建议没有得到解决时,无耐之举,只能这样写!
1. 缓存区接收满数据后,产生中断,而在这份代码中,什么都不做,马上开始下轮接收,如果硬件DMA支持FIFO接收数据,这里的代码是不需要的
2. 第2个无耐之举,是下面这里的代码,检查已接收字节数,先取出高字节,再取出低字节,然后再取出高字节,再判断两次取出是否一致,这也是没有办法的办法吧,因为是否有数据不是硬件去维护。。。
3. DMA的串口在接收数据时,只能用查询的办法,并不能等缓存满了再产生中断,因为串口通讯中,大部分所要接收的数据的长度,并不是固定的,比如做modbus从机时,,所以查询是最好的办法,而要想不丢数据,就不能停止DMA,只要把缓存区加大点,并自动循环接收就行了。
以上种种,我觉还是很有必要改进一下硬件的。。。
页:
1
[2]