F29H859TU-Q1: F29H859TU-Q1: F29 Can发送问题

Part Number: F29H859TU-Q1

Hi,

    F29H85x,Mcal Can配置Tx邮箱类型为BASIC_CAN,CanHwObjectCount不为1,压测发送报文周期时,发现存在漏帧,是因为报文请求发送时,读取空闲object的索引,跟最终发送时使用的索引不一致,导致发出的报文不对;把CanHwObjectCount改为1,问题解决了,但是为什么CanHwObjectCount大于1时,有漏帧的问题 。测试时总线负载率在50%-60%之间,通过canoe观测can总线上Tx报文漏发一帧,TxProcessing和Rxprocessing配置的都是interrupt,Tx报文的周期,10ms周期2帧报文,25ms周期2帧报文,50ms周期1帧报文,100ms周期2帧报文,200ms周期3帧报文,漏帧报文的周期是200ms,CanHwObjectCount为10

    6763.image.png

    7838.image.png

    2543.image.png

以下可以看到canTxRxPduld[2]=7、canTxRxPduld[3]=8,这是调用Can_Write()存的索引号,对应的报文分别是0xF7C0000、0xF7C0001,所以此时应发送的报文顺序应该是0xF7C0000、0xF7C0001;test_CANWrite[0]=2、test_CANWrite[1]=3表示待发送的索引,可以看到Ram中是数据并没有0xF7C0000,但是已经请求过了,最后发到总线上的是0xF7C0001,还是之前的存的数据;在Can_WriteMsgRamPriv()中,因为是basiccan,所以idx重新从MCAN_TXFQS_TFQPI获取了一次,不是调用Can_Write()后读取的MCAN_TXFQS_TFQPI(bufNum) 。

   pastedimage1790127552570v1.png-640x480.png

   pastedimage1790127765164v3.png-640x480.png

   pastedimage1790128852571v4.png-640x480.png