在RS485通讯的时候,为了同步数据,想在UART初始化的时候只开启奇偶校验中断(这个奇偶校验中断实际上是当做地址位用),当检测到合法的起始字符后再使能接收中断和接收超时中断。请问这样操作可行吗?会不会造成FIFO数据溢出呢?或者应该在监测到奇偶校验中断(地址位)后再开启FIFO呢。
期望高手帮忙解答下,谢谢了!
你这样做既不合理也是不行的,UART的奇偶校验中断是在出错时才触发的。而且即使没有奇偶的问题,FIFO也会溢出。
RS485总线是一主多从的总线,在使用RS485总线时一般都是在数据帧中增加地址判断来让从机识别,不会在数据链路层上去判断。
我不清楚你的具体应用是如何的,建议你定义一个数据帧格式,在数据帧中添加同步字和地址字。从机做一个环形BUFFER,用LM3S的DMA把UART接收到的数据搬移到环形BUFFER中,然后再BUFFER中去找同步字和地址字。
这样相对更合理。
即使你不使用DMA,使用FIFO也可以较好的处理这类问题。不要太担心UART传输时每个字节带来的中断开销,实际上那个开销非常小。