Part Number: MSPM0-SDK
Other Parts Discussed in Thread: MSPM0G3507
HI,我在基于MSPM0G3507的串口+DMA实现不定长数据的收发,由于MSPM0G3507的寄存器特殊性,当使用DMA时,因为DMA及时半空FIFO所以超时中断无法触发,如果引入定时器轮询会浪费外设的同时效率不高,频繁的接收中断也会拉低CPU的效率。
我看到并参考:https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1220244/faq-uart-rx-ms-level-timeout-realization-based-on-event-for-mspm0?tisearch=e2e-sitesearch&keymatch=UART%20timeout%20MSPM0 来进行设计,但是发现偶尔会出现字节多收,理论上此拓扑应该能行的通,但是我试验多次,发现一旦数据多了还是会多收字节,表现为DMASZ的数量跟实际发送不一致。
对于MSPM0G3507的架构特殊性,我严重怀疑TI的芯片设计是否有用过串口。
此问题依然存在,最后我只能使用串口中断+超时中断,使用仅仅4字深的FIFO来接收数据。
各位如果有更好的建议,还请让我知道,谢谢!