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.

TMS320F28335中断对SPI模块读写的影响



28335的SPI模块主机master在发送接收过程中,28335有中断发生,28335会怎么响应,是否就会打乱SPI的时序,那我应该怎么处理,难道要在读写过程中关掉28335的所有中断,等到发送接收完成后才能开中断 ?    或者SPI发送接收就是中断处理,但是这是有更高等级的中断来了,28335怎么响应,我该怎么处理

SpiaRegs.SPITXBUF=temp1; 这时候发生中断

while(SpiaRegs.SPISTS.bit.INT_FLAG != 1);这时候发生中断

temp2 = SpiaRegs.SPIRXBUF; 这时候发生中断

  • xiaoliang,

    如果你是用中断的方式来收发SPI的数据,那没什么关系,因为C2000默认是不支持中断嵌套的,高级别的中断不能打断,除非特殊设置才能中断嵌套。

    如果你是用查询方式的话,我不认为会有问题,因为你把一个数据写到SPI的BUF中,应该不用一两个系统时钟,只要把数据写到BUF中,SPI就会根据自己的时序把这个数据发出去,SPI发送接收时序不会受CPU中断影响,只有在读取数据或发送数据会有延时而已。

    Eric

  • Eric Ma:

    这样的话,中断优先级就只有在开了中断嵌套功能才有用了,是吧?我现在在做SPI串口扩展,用的是VK3224,1扩4,只用了它接收数据的功能,不知道哪儿的时序除了问题还是怎么的,4个通道同时接收数据,工作10几分钟以后,就不能再进中断了。

  • xiaoliang,

    对,中断嵌套是需要相关代码进行操作的,TI有相关的说明文档教客户怎么操作,默认不打开。

    4个通道同时打开的情况,你是怎么判断没有再进入中断的?你可以在中断服务函数里面放一个GPIO 翻转,然后用示波器观察。在出错的时候,查看一下SPI的相关标志位,比如接收发送错误等,看有没有什么异常。

    Eric

  • VK3224有一个中断引脚IRQ, 中断下降沿,,我通过在示波器上观察它的下降沿脉冲表明它在正常工作,当出现错误,IRQ一直是低电平或者高电平,就说明没有进入中断了。因为当满足中断条件时,IRQ处于低电平,当不满足中断条件,IRQ硬件自动跳转到高电平,我通过捕捉下降沿,进入28335中断处理程序。VK中有相关寄存器,可以通过读取相关寄存器,查看是哪个通道接收有中断