微控制器通信任务在后台

时间:2015-12-23 18:07:28

标签: communication microcontroller

我正在使用ARM Cortex M4,我想询问是否可以从主要例程中卸载通信任务并让它们在后台运行。

例如我在ARM MCU上使用这个外设:

  • ADC
  • I2C
  • UART
  • SPI

当adc_start(ADC);在后台调用ADC启动转换,所以我不需要等到ADC完成转换,我可以转到下一个istruction,然后读取ADC结果。

我想问一下是否可以对通信周边球做同样的事情。 I2C和SPI可以很快,但由于这种MCU类型可以达到50Mhz甚至更多,如果我需要等到I2C完成传输400kHz或SPI为20Mhz或最差UART时,则浪费MCU速度。此外,如果我执行某些任务并且我不想中断它们,我需要能够从外围设备的任何中断卸载MCU,​​让它们重新接收数据包,缓冲它们以及何时需要读取它们。

这样的事情有可能吗?

1 个答案:

答案 0 :(得分:1)

如果我正确理解了这个问题,那么您正在寻找基于自动中断的快速通信外设(如I2C和SPI)的处理方式。据我所知,是的!它至少可以在德州仪器基于TIVA的ARM CORTEX M4系列MCU上实现。当你正在研究计算密集型算法并且没有让CPU陷入等待SPI完成任务时,这是一个非常好的小功能。 为了对CORTEX M4外设进行编程提供一个很好的参考,我建议您放心使用本书: http://www.amazon.com/TI-ARM-Peripherals-Programming-Interfacing-ebook/dp/B00L9DRAI2

本书第6章中的表6-7详细介绍了TM4C123G MCU(TIVA启动板附带的一个)上的中断向量表。中断50和53分别为SSI / SPI和I2C外设分配。一旦取消屏蔽正确的中断,进程应该是相当直接的。