因需要使用了MSP430F267的两个UART的模块,但此时因为又需要使用SPI的模式,但其中一个UART和SPI的需求是只接不发。他们使用同一个中断向量,能不能在同一个中断函数里面做处理,该怎么处理,通过中断标志位来判断吗?求指教
Young Hu:
您好!
我觉得比较麻烦的一点就是UART数据和SPI数据的冲突,所以你要随时切换成UART模式或者SPI模式。
我觉得比较可行的办法是,一个硬件UART,一个硬件SPI,用IO软件实现UART。
ZHIchen TU:
回复 Charles Wu:
谢谢您,我使用的是MSP430F2617,我刚开始也是这样想的,是通过同一个中断函数,不同标志位来判断。但自己没有尝试过,两个功能是要通过配置相应的寄存器来切换使用的,这边SPI做从机只接受数据,异步的UART也是只收数据,但如果两者同时收到数据的话,我自己这里理解的有点模糊了。若在while(1)里面查询的话,因为数据量较大,怕丢失数据,请问您通过中断复用了两个功能吗?
ZHIchen TU:
回复 Young Hu:
谢谢您,因为数据量较大,且复用的功能都是用从机,怕会丢失数据。
Charles Wu:
回复 ZHIchen TU:
USCIA和USCIB都有接受缓存来处理数据的接受,所以即使UART和SPI的数据同时到达,也会分别由各自的buffer来存储,并不会发生数据丢失的情况。只是若SPI的速度过快,而MCLK的速度过慢,则可能会发生数据丢失的情况。这就需要降低SPI速度或者提高MCLK频率了。
TI中文支持网



