Tip / ログイン to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Translation_Bot
Community Manager
Community Manager
Community Manager

你好:在使用标准can发送数据,调用这个接口函数时,发送数据有时候会返回:CY_CANFD_BAD_PARAM,是由于

(pstcCanFDChMTTCAN->unTXBRP.u32Register & (1ul << u8MsgBuf)为真。对应说明

送信要求保留中

我尝试每次发送遅延,还是会有问题,这个需要怎么处理??麻烦给解答一下!

if(CY_CANFD_SUCCESS == Cy_CANFD_UpdateAndTransmitMsgBuffer(CanObj,msgBufIndux,&stcCanFDmsg))

/* CAN FD コントローラが INIT 状態でなく、Tx バッファが空でないかチェック */
if((pstcCanFDChMTTCAN->unCCCR.stcField.u1INIT != 0) ||
((pstcCanFDChMTTCAN->unTXBRP.u32Register & (1ul << u8MsgBuf)) != 0)
)
{
return CY_CANFD_BAD_PARAM;
}

0 件の賞賛
1 解決策
Translation_Bot
Community Manager
Community Manager
Community Manager

你好,

可能是保留的标志位没有清掉导致的,可以把TXBCR置1来清除

JimmyLiu_0-1694674940696.png

 

元の投稿で解決策を見る

0 件の賞賛
6 返答(返信)
Translation_Bot
Community Manager
Community Manager
Community Manager

你好,

从描述来看是因为CAN没有被初始化且buffer里面为空。

您可以试下用SDL的サンプル コード进行测试,路径如下\T2G_Sample_Driver_Library_7.9.0\tviibe1m\src\examples\canfd\Classic_CAN。

关于CAN的应用可以参考AN220278_How_to_Use_CAN_FD_in_Traveo_II_Family

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

你好,can进行了初始化,can报文也是可以正常发送的,只不过判断发送函数的返回值,有时候回出现我上面所描述的现象。

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

你好,

在发生这种情况的时候,可以检查下CCCR.Init的状态,如果置1了,CANFD可能处于INIT状态,或者在待处理期间可能存在发送请求,这时需要检查原因并将 CANFD 设置为正确的通信状态(例如,将 CCCR.INIT 设置为"0"或在挂起期间取消发送请求)。在正常情况下,Cy_CANFD_UpdateAndTransmitMsgBuffer() 函数不应发生上述两种情况。

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

_sul__0-1694658900676.png

_sul__1-1694658931594.png

怎么可以设置挂起期间取消发送请求

 

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

你好,我使用了MCU的两路can,两路can都在不停的往外发送数据,发现如果那路can我用can盒接收MCU对外发送的数据,就不会出现错误的现象,另一路没有用can盒接收数据,它就会出现上述错误现象,这是什么原因。

 

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

你好,

可能是保留的标志位没有清掉导致的,可以把TXBCR置1来清除

JimmyLiu_0-1694674940696.png

 

0 件の賞賛