WCH沁恒单片机
直播中

张国厚

7年用户 1347经验值
私信 关注
[问答]

CH579串口发送中断错误如何解决?

1. 沁恒微的CH579M开发板
2. 使用串口1,采用UART_II_THR_EMPTY中断方式发送(中断方式发送不阻塞CPU),打开FIFO
3. 间隔100ms发送32字节数据,波特率115200


思路:
1. 发送时首先在R8_UART1_THR寄存器连续写8字节
2. 等待FIFO发送完成,产生UART_II_THR_EMPTY中断
3. 在中断函数中继续向R8_UART1_THR寄存器连续写8字节,直到发送完32字节。


问题:
发送数据大部分没问题,偶尔会出现发送错位的情况。
发送数据不变的情况下,错误的位置和错误数据都不变,出现时间随机
每次错误数据都是8字节,一个FIFO的数据
如图:



回帖(2)

李龙

2022-7-26 11:18:40
有没有其他中断?是不是被其他高优先级中断打断了
举报

刘双喜

2022-7-26 11:18:44
解决了,在“思路第一步”后面加10us延时就可以了,但是这个时间会锁着波特率变化而变化,测试9600,38400,115200都是10us还可以。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分