TMS320F2800156-Q1: can 和 sci 出现了冲突

Part Number: TMS320F2800156-Q1

can 单独调试,报文能正常收发,sci 单独调试,报文也能正常收发,两个集成在一起,收发异常了,sci 用SCIB这路,can用canA,can的接收中断有两句  CAN_clearGlobalInterruptStatus(CANA_BASE, CAN_GLOBAL_INT_CANINT0); Interrupt_clearACKGroup(INTERRUPT_ACK_GROUP9);

,SCI 中断有这两句 

    SCI_clearInterruptStatus(SCIB_BASE, SCI_INT_TXFF);

    // Issue PIE ACK
    Interrupt_clearACKGroup(INTERRUPT_ACK_GROUP9);

是不是这两组都属于group9 ,导致冲突了

  • 感谢您对TI产品的关注。
    我们正在核实您的问题,请等待我们的答复。

  • 这可能取决于数据在缓冲区中的可用速度以及中断服务程序(ISR)正在执行的操作。如果串行通信接口(SCI)数据先可用,则会触发SCI中断并处理所有数据(如有),然后执行ISR中的例程。它会优先完成SCI ISR中的所有操作,再处理CAN ISR。尽管两者都属于组9,但根据PIE映射,SCI具有优先级。如果在SCI ISR正在执行期间持续发送CAN帧,则由于CPU仍忙于SCI操作,发送的CAN帧可能无法及时得到CAN的处理。

  • 是的 ,现在现象是,can 和 sci 集成后,报文的can发送异常了,哪怎么办? 选用哪两个引脚才能避开这个问题?

  • 我想更多地了解SCI和CAN的用例是什么。它是像一个桥,串行数据由SPI接收并发送到CAN,这样就可以作为CAN帧传输,还是相反?知道这一点,我们也许能够想出一个更有效的程序。

  • SCI、CAN参考的是官方例程,产品是空调控制器,现在通过SCI接受数据(一些电压值), can的话,接收的配置是中断(接受内容是其它控制器发过来的指令),发送配置的是周期发送(数据内容是控制器状态反馈)

  • 如果sci 接收不配置成中断模式 ,can接受配置成中断模式,是不是sci 就不用Interrupt_clearACKGroup(INTERRUPT_ACK_GROUP9);  两者就不会干涉到了,can和sci 能实现正常收发?

  • 我清楚地看到,SCI和CAN接收均采用中断服务程序(ISRs),且其他控制器发送的CAN帧是周期性的。这些帧发送的频率是多少?CAN的波特率又是多少?在SCI方面,数据发送的频率如何?是否也是周期性的?我正在评估这些中断服务程序是否存在潜在的时序冲突,依据是SCI和CAN数据在F2800156x芯片上的到达频率。此外,在SCI和CAN的中断服务程序中,是否还存在多个变量和函数调用?这些同样会影响中断服务程序的执行。
    回答你的另一个问题,如果SCI接收器未配置为中断模式,则无需使用中断确认功能。