TC334 RX バフの長さ

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

cross mob
Translation_Bot
Community Manager
Community Manager
Community Manager

フィルターを使用してメッセージを受信し、rxbuff に入れます。ID 0x1234568 は受け入れられます。ID 0x1234569 を受信すると、MCU がクラッシュします。構成は次のとおりです。設定が間違っているのはどこですか?

g_mcmcan.canNodeConfig.filterConfig.standardListSize= 1; //標準フレーム
g_mcmcan.canNodeConfig.filterConfig.extendedListSize= 16; //拡張フレーム
g_mcmcan.canNodeConfig.filterConfig.messageIdLength= IfxCan_MessageIdLength_extended;

g_mcmcan.canNodeConfig.messageRAM.standardFilterListStartAddress= 0x0;
g_mcmcan.canNodeConfig.messageRAM.extendedFilterListStartAddress= 0x80;
g_mcmcan.canNodeConfig.messageRAM.rxFifo0StartAddress= 0x100;
g_mcmcan.canNodeConfig.messageRAM.rxFifo1StartAddress= 0x200;
g_mcmcan.canNodeConfig.messageRAM.rxBuffersStartAddress= 0x300;
g_mcmcan.canNodeConfig.messageRAM.txEventFifoStartAddress= 0x400;
g_mcmcan.canNodeConfig.messageRAM.txBuffersStartAddress= 0x440;
g_mcmcan.canNodeConfig.messageRAM.baseAddress = MODULE_CAN0_RAM;

g_mcmcan.canFilter.number = 7;
g_mcmcan.canFilter.elementConfiguration= IfxCan_FilterElementConfiguration_storeInRxBuffer;
g_mcmcan.canFilter.id1 = (uint32)0x1234568;
g_mcmcan.canFilter.rxBufferOffset= IfxCan_RxBufferId_7;
IfxCan_Can_setExtendedFilter(&g_mcmcan.can00Node, &g_mcmcan.canFilter);

g_mcmcan.canFilter.number = 8;
g_mcmcan.canFilter.elementConfiguration= IfxCan_FilterElementConfiguration_storeInRxBuffer;
g_mcmcan.canFilter.id1 = (uint32)0x1234569;
g_mcmcan.canFilter.rxBufferOffset= IfxCan_RxBufferId_8;
IfxCan_Can_setExtendedFilter(&g_mcmcan.can00Node, &g_mcmcan.canFilter);

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/tc334-rx-buff-length/td-p/646957

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

https://github.com/Infineon/AURIX_code_examples/tree/master/code_examples/MCMCAN_Filtering_1_KIT_TC3...

このプロジェクトを使用して設定を再試行してください。

dw_0-1701056460089.png

 

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/tc334-rx-buff-length/m-p/647437

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

だわ

64 個の ID メッセージを設定し、それらを 64 個の RXBUFF にフィルタリングしました。buff0~buff7とbuff32buff39は受信できるのですが、rxbuff8~buff31とrxbuff40~buff63は受信できないことが分かりました。CAN0 NODE0 を使用して、node0 に 64 個の rxbuff があるかどうか、または node0-4 が 64 個の rxbuff を共有しているかどうかをテストしました。ありがとうございます。

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/tc334-rx-buff-length/m-p/647507

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

1.各ノードには独自の FIFO0 と FIFO1 があります。FIFO0 と FIFO1 はどちらも最大 64 個の要素を保存できます。詳細については、ユーザー マニュアルの第 40 章、セクション 3.2.4.2 の「Rx FIFO」を参照してください。これらの Rx FIFO を設定するには、RXF0 にはレジスタRXF0Ci (i の範囲は 0 ~ 3) を使用し、RXF1 にはレジスタRXF1Ci (i の範囲は 0 ~ 3) を使用します。

2. M_CAN システムは、最大 64 個の専用Rx バッファを使用できます。RXBCi (i の範囲は 0 ~ 3) と RBSA を使用して、このセクションの開始アドレスを設定します。各 Rx バッファーは、標準または拡張メッセージ ID フィルター要素を使用して構成する必要があります。

3. すべてのノードで 64 個のバッファを利用できます。以下のコード スニペットを参照してください。

 IfxCan_RxBufferId bufferId = IfxCan_RxBufferId_0;

 

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/tc334-rx-buff-length/m-p/647568

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

Node0 ~ 4 が 64 個の専用 Rx バッファを共有しているのか、それとも Node0 に 64 個の専用 Rx バッファがあるのか?

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/tc334-rx-buff-length/m-p/647598

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

すべてのノードには.rxBuffersStartAddressというプロパティがあります。これは、各ノードに 64 個のバッファが割り当てられていることを意味します。この関数を参照してください: IfxCan_Node_getRxBufferElementAddress

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/tc334-rx-buff-length/m-p/647611

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

以下のアドレスは必要に応じて変更する必要があります。

        .messageRAM                                  = {
            .baseAddress                    = (uint32)&MODULE_CAN0,
            .standardFilterListStartAddress = 0x0,
            .extendedFilterListStartAddress = 0x80,
            .rxFifo0StartAddress            = 0x100,
            .rxFifo1StartAddress            = 0x200,
            .rxBuffersStartAddress          = 0x300,
            .txEventFifoStartAddress        = 0x400,
            .txBuffersStartAddress          = 0x440
        }, 

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/tc334-rx-buff-length/m-p/647737

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

JQ_0-1701148624301.png

こんにちは、DW: JQ_1-1701148672137.png

1 ノード (128+128+1152+1152+1152+64+576)*4=4352*4=17408 バイト

4 ノード = 17408 バイト * 4 = 69632 バイト

しかし、RAM SIZE IN BYTE IS 32768が見つかりました。4つのノードで32768バイトを計算する方法、ありがとう。

 

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/tc334-rx-buff-length/m-p/648351

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

こんにちは、JQ さん。RAM が制限されているということは、すべての要素に対応できないことを意味します。実際のニーズに合わせて RAM のサイズを調整することを提案します。

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/tc334-rx-buff-length/m-p/648375

0 件の賞賛