CH438Q在8串口同时收发数据的时候,会根据回传上来的数据再进行对应串口的数据发送,但是8串口同时工作的时候,就会出现乱码以及无接收的现象。请问在8串口同时收发数据的时候,都会进入同一个外部中断,这样会不会造成错乱的现象,以及在接收数据长度不等的情况下适合放在接收数据超时中断还是接收数据可用中断里。还有就是发送数据的时候也好触发中断,跟接收的时候会不会有冲突。
您好,8串口同时收发是可以的,在触发中断后,单片机只需要正常去处理中断即可,对于丢数据等问题,您可以提高接口通讯速度,以及将fifo触发中断的值设定小一些(例如一半)。这样就不容易出现FIFO一处丢中断的问题
我接收的字节长度不固定,用什么中断比较好
您好,CH438Q串口接收会报接收数据可用中断(达到fifo触发值)以及接收数据超时中断(一定时间未收到新的数据流),这个与您接收字节长度不定长并无直接关系。来一包数据,满fifo触发值会报接收数据可用中断,您去那个中断做接收处理即可,剩下不足fifo触发值的数据,或给您MCU报超时中断,去那边做剩余数据的接收处理即可。
请问如果用查询方式来判断接收的数据,这样准确性会高一点吗?感觉串口数据一接收,中断就会出问题。
您好,您可以使用查询的方式去判断INT脚的电平。通过INT脚去接收数据这个是最准确的。您使用CH438Q如果会频繁报中断的话,那您可以根据双方实际的数据传输,调整波特率。或者如果数据量较多,可以适当增加fifo触发值的大小。
我使能FIFO后,设置触发数量是16,为什么接收数据小于16也触发中断呢?
您好,CH438的中断有两个触发,一个是达到Fifo触发值之后的接收中断,还有一个是接受超时中断(Time_out),这串口4个数据位时间里面未收到新的数据,那么CH438会报这个超时中断,让主控芯片取走数据。
设置FIFO 触发点为112字节,接收200字节时,仅触发一次接收可用中断(接收112字节),未再触发接收超时中断,是什么原因呢?
您好,您可以看一下是不是最后出发了接受线路状态中断里面的OVER,也就是缓冲区溢出中断。
一般来说,FIFO触发值不值很推荐设置过大,您可以设置一半比如64字节。这样即使在接口通讯速度较慢的情况下,也能有足够的缓冲区去准备。