This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

SPI中断问题

Other Parts Discussed in Thread: HALCOGEN

标准SPI方式调试。关于SPI的“接收/发送中断”有些疑惑:

使用HalCoGen工具时,发现SPI2模块的中断使能TXINT和RXINT只能二者择其一,中断线可以自由选择Low Level/High Level。由此引起我对接收/发送中断的疑问。我的理解如下:

发送中断使能后,在TXINTFLG置1后产生中断,即TXBUF为空的时间点(=数据刚移到shift Register=移位操作前):在中断函数里将源数据写入DAT1;

接收中断使能后,在RXINTFLG置1后产生中断,即数据被移到SPIBUF的时间点(=移位操作后):在中断函数里将接收数据写入目标数据区。

以主机为例,虽然发送数据的同时也接收从机数据,但从时间上来看,主机的接收中断和发送中断产生的时间点应该是不同的,所以发送/接收中断可以选择同一条中断线,High Level或Low Level。 不知道上面的理解是否正确?

那么,HalCoGen工具为什么只能二者择其一呢?

一般来讲,RXINT、TXINT和其他中断的中断线如何选择更合适?哪个为level 0,哪个为level 1?

多谢。

  • Hi Liang,

    Halcogen中TXINT和RXINT只能二选一,可能是一个BUG,我会向开发Halcogen的部门反映。

    你对发送中断和接收中断的理解是正确的。

    一般地,可以把发送、接收入在一条中断线上,其他的一些异常中断放在另一条线上。当然,如果你不想处理异常的中断,那样,发送和接收可以各分一条中断线,那样进行中断就不用判断中断源是哪一个。

    Regards,

    Jay