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.

TCAN4550 接收报文问题

Other Parts Discussed in Thread: TCAN4550, TCAN4550-Q1

Dear TIer 

    在使用TCAN4550 过程中发现 当报文速率较快 大概两帧间隔在300uS 发送一段时间发现  CAN收到一帧报文后 通过读取TCAN4550 发现是之前发报文,大概之前4帧或5帧, 程序是在  TCAN455x Driver Library Demo_1.2_manifest   这个Demo 基础上修改的, 想咨询一下可能是哪里的问题。 

  • 您好,
    您的意思是CAN收不到前3帧或4帧报文,还是说CAN接收的报文会滞后4帧或5帧呢
  • Dear Amy
    通讯过程中速率慢的话都正常,但速率快了后边的报文会滞后,也不定时4帧,5帧 也可能3 帧, demo 程序接收报文是放在while(1)循环中,我放在了一个TIrtos 中的任务中,中断触发执行,但觉得应该不是这里的问题。
  • Dear Amy
    在线Debug 发现 使用调试工具发送报文 比如快速发送报文 10000条,进入中断的次数可能是9999次,那么报文就会滞后一帧,这是否是nINT 脚并非是一帧报文产生一次中断,可能 会有丢失,
  • 你说的速率是指can帧数据速率,还是spi时钟频率?你是指的哪种情况呢
    不管怎样,感觉像是spi限制,并且由于将报文从spi转换为can的额外时间,当您的can报文更短时,这种延迟将更加明显。
  • CAN 速率是500K SPI 频率是10M ,理论上SPI 这个10M速率应该是足够了吧, 如果不清除中断标志位,那么是无法再次进入中断的吧,但报文会持续接收,只是不进入中断?
  • 目前您的问题是nINT产生中断次数小于发送报文数吗,还是进入中断次数小于发送报文数?
    我知道有的控制器是自动清除中断标志位的,关于中断标志位的问题,请查看所用控制器的工作原理。
  • 我是这样测试的, 进入一次中断就在一个全局变量+1 实测调试工具发出的报文间隔小的时候 发送报文数量会大于该全局变量
    中断标志位不是单片机的中断标识,是 TCAN4x5x_MCAN_ClearInterrupts(&mcan_ir); // Clear any of the interrupt bits that are set. 类似这样的TCAN4550 内部的中断标识
  • Nint可用于指示报文已被发送和接收,但必须在寄存器空间中启用中断,并且它们必须是总线上另一个发送ACK位的CAN节点,以便TCAN4550-Q1知道报文已被正确接收。
    “发送报文数量会大于该全局变量”具体是在什么情况下呢