这个问题来自于实际产品开发中的疑问,在我们的产品中MCU和1*RF_IC通过SPI总线进行连接。该RF_IC和MCU还有一个中断引脚,通过该中断引脚通知MCU产生中断。
目前的软件架构为,主程序中间隔一定时间通过SPI操作RF_IC发包,对应的中断函数中也有一定量通过SPI操作RF_IC的代码,目前有以下疑问:
a. 针对一个SPI时序的代码,如果不加临界区保护,那么有可能在主循环中一个spi时序还没有完成,就进入中断,在中断中也有SPI访问,实际导致产生的SPI时序异常。
b. 针对一个SPI时序的代码加临界区保护,但是没有对一些api函数使用临界区保护。有些操作是一些列的SPI操作,虽然单个SPI时序不会被打断,但是一系列SPI操作如果被打断,将导致API的功能异常。
c. 针对所有API的代码价临界区保护,这回导致部分SPI操作较长的API影响中断的响应。
这还只是1个SPI总线上只有1个SPI设备的情况,如果有多个SPI设备,如何协调线程、中断之前对设备的访问?以及在UCOS这类抢占式系统中,如何对控制对这些设备的访问?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>