本帖最后由 szt1993 于 2023-4-16 16:11 编辑
SSI/USCI中的 UART通讯使用注意事项
1) RD8G403的 SSI三合一中的 UART发送中断标志 TI和接收中断标志 RI在同一个寄存器上, 此寄存
器不能位操作,所以在清除 TI和 RI时会对整个寄存器进行与操作,这样当 UART进行全双工通信时
发送和接收中断有可能同时产生,或者是两者之间间隔时间很短,会出现 TI或者 RI被误清除导致中
断丢失的风险,因此在全双工通信应用场景中,通信需要有容错机制,不能因为某次中断丢失就导致
通讯崩溃,在发送数据后不能通过死等发送标志来判断发送是否完成,需要加入超时监测保证在一段
时间后可以退出等待 ;
2) RD8X36/37以及 RD8X05的 USCIX三合一接口中的 UART发送中断 标志 TI和接收中断标志 RI在
寄存器 US0CON0、 US1CON0和 USxCON0上 由于 US0CON0、 US1CON0和 USxCON0寄存器
不能进行位操作,为了防止全双工通信过程中对 RI和 TI进行清零时两者相互影响, USCIX的 UART发送中断标志 TI和接收中断标志 RI的清除方式为 “写 1清零 ”,这样可以更好的实现全双工通信,而RI和 TI的清除不会相互影响,具体操作示范如下:
3) 对于通信,要特别注意通信双方的配合,通信逻辑要特别注意,要做好通信的错误冗余,不能因为某
一次或者是某几次通信错误就导致通信出现终止现象,建议在通信超过一定时间没有接收到正确的数
据后重新启动通信,重新启动通信包括通信相关的寄存器清零再重新配置,以及通信使用到的一些变
量,包含数据缓存数组,以及计数的相关变量都要进行清零,以保证通信逻辑出错后重新启动通信,
可以使通信从最原始状态开始运行。
|