リモートフレーム送受信機能を検証したいのですが、リモートフレームを受信できません。データフレームを送受信するのは正常です。コード内の赤くマークされた部分を変更して、リモート フレームを送受信できますか?CAN リモート フレーム受信用のコードを提供できます。
can_buff_config_t バフ構成 = {
.enableFD= 偽、
.enableBRS= 偽、
.fdパディング= 0U、
.idタイプ= CAN_MSG_ID_STD、
.isRemote=真
};
/* インデックス RX_MAILBOX で RX バッファを構成する */
CAN_ConfigRxBuff(&can_pal1_instance, RX_MAILBOX, &buffCfg, RX_MSG_ID);
ながら(1)
{
/* 受信バッファを定義する */
can_message_t recvMsg ;
/* RX_MAILBOX でデータの受信を開始します。*/
CAN_Receive(&can_pal1_instance, RX_MAILBOX, &recvMsg);
/* 前回のFlexCAN受信が完了するまで待機します */
CAN_GetTransferStatus(&can_pal1_instance, RX_MAILBOX) == STATUS_SUCCESS が継続します。
/* 受信したメッセージIDとペイロードを確認します */
if( recvMsg.id == RX_MSG_ID ) //
{
/* 出力値 LED1 を切り替える */
PINS_DRV_TogglePins(GPIO_PORT、(1 << LED0));
}
こんにちは、
ご返信ありがとうございます。
こんにちは、
デフォルトでは、リモート要求フレームはどの MB にも保存されません。これはCTRL2[RRS]によって決定されます。55.3.10.4章を読む詳細についてはリモート フレームを参照してください。
FLEXCAN_DRV_ConfigRemoteResponseMb 関数を使用して、リモート要求応答用に MB を準備できます。これは一度だけ呼び出す必要があり、毎回 MB を構成する必要はありません。設定された ID を持つリモート要求フレームが受信されると、メッセージ バッファーは TX になり、リモート応答を送信し、RX 1 にスイッチしてリモート要求フレームを再度認識し、応答フレームを送信します。
BR、ペトル