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.

关于C6748 GPIO中断频繁开关操作的问题



由于需要使用的串口数量较多,使用某款SPI扩展Uart芯片,扩展了四个串口。通过SPI向扩展Uart发送指令,对扩展芯片进行操作。四个扩展串口共用一根GPIO中断线,考虑到SPI时序问题,在进行扩展Uart芯片寄存器操作时,需要先关闭中断,操作完成后,再打开中断。

目前当多个扩展串口同时通信时,出现了C6748不响应中断的问题,只能重启。该问题是否与中断频繁开关有关,怎样规避或解决。

另外,该款扩展Uart芯片已经在其他平台验证过,可以正常工作。

望论坛各位大侠帮忙解答一下,多谢!

  • 中断服务函数是怎样子的?中断频繁只会影响到中断丢失的问题。

    还有你说的中断不响应时的GPIO寄存器状态,IFR状态等如何?软件其它功能是否依然正常?

  • 中断服务子程序要尽可能简单以免处理时间过长影响下一个中断的响应,出现丢中断的情况。
  • 1.当前板卡使用TI-RTOS操作系统,中断服务函数中,只确认是否为所用GPIO的中断,然后向进程发送信号量,进程对扩展串口的数据进行操作;
    2.当异常发生时,GPIO中断使能位正常,中断标志无置位;
    3.系统中其他部分正常工作,包括SPI驱动和扩展串口芯片的驱动。这个在异常发生时,在其他任务加过调试代码验证过。
  • 1.当前板卡使用TI-RTOS,中断处理函数中只进行是否为所用GPIO产生中断的判断,然后向进程任务发送信号量,读写扩展串口操作未在中断执行;
    2.异常发生时,GPIO的中断使能置位,中断标志未置位;
    3.异常发生时, 系统其他部分正常运行,包括SPI驱动和扩展串口芯片驱动,这个专门验证过。
  • 目前,中断处理只进行了是否为所用GPIO中断的操作,然后向处理发送信号量,具体执行由任务执行。
    异常发生后,再通过扩展串口通信时,DSP不能产生中断,只能重启
  • user5269968 说:
    2.异常发生时,GPIO的中断使能置位,中断标志未置位;

    这个应该是说明外部这个扩展芯片没有给出GPIO的中断信号吧。你可以做个简单的测试,想办法在这个GPIO上给一个脉冲,比如用镊子跟VCC或者GND短接一下。看是否会进GPIO中断。

    然后再查为什么扩展芯片没有给出GPIO中断信号。

  • 用示波器量了下,异常发生时,扩展串口芯片中断发生异常。但是之前使用裸板测试,不加TI-RTOS系统测试时,一切正常。移植到带有TI-RTOS操作系统的工程,就会出现中断异常,请问这个大概什么原因?
  • 感谢解答,问题点已经找到,通过SPI读取扩展串口芯片数据时,由于多次开关GPIO中断导致未及时处理个别GPIO中断,使得扩展串口芯片陷入异常。修改后,该问题排除。感谢Tony的耐心解答
  • 感谢解答,问题点已经知道到,由于未及时处理个别GPIO中断导致扩展芯片状态异常,再次感谢