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的数据

如图:

image.png


有没有其他中断?是不是被其他高优先级中断打断了


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


只有登录才能回复,可以选择微信账号登录