XMC7000 MCU: 最後に送信された CANFD Tx バッファのインデックスを正しく取得する方法 - KBA231463

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
NXTY_hayashi
Level 6
Level 6
Distributor - NEXTY (Japan)
50 solutions authored 25 solutions authored 50 replies posted

Hi,

I want to translate the following article into Japanese, please confirm to my work.
URL:https://community.infineon.com/t5/Knowledge-Base-Articles/XMC7000-MCU-Get-the-index-of-the-last-tran...

Best Regards,
Kazunari Hayashi

0 Likes
1 Solution
NXTY_hayashi
Level 6
Level 6
Distributor - NEXTY (Japan)
50 solutions authored 25 solutions authored 50 replies posted

XMC7000 MCUファミリでは、Txバッファ内のCAN FDメッセージが送信されると、CANFDx_CHx_TXBTOレジスタの対応するビットが設定されますが、これは新しい送信が要求されたときにのみリセットされます。
したがって、CANFD_CH_TXBTOレジスタは期待する値にならない場合があり、配慮が必要です。

XMC7000 MCUファミリーのCANFD_CH_TXBTOレジスタについては、Technical Reference Manualの説明を参照してください。
XMC7100 TRM Page95
XMC7200 TRM Page98

CANFD_CH_TXBTOレジスタを処理するソフトウェア例を下記に示します。

1. Tx送信要求時にCANFDx_CHx_TXBTIEレジスタの対応ビットを設定し、Txバッファ送信割り込みを有効にする

//1つのTxバッファ割り込みを有効にする
CANFD0_CH1 ->M_TTCAN.TXBTIE = 1ul << vTxBufferIndex;

//TxバッファのTxメッセージを転送する
Cy_CANFD_UpdateAndTransmitMsgBuffer((CANFD_HW,CAN_HW_CHANNEL, &CANFD_txBuffer_0,CAN_BUFFER_INDEX, &canfd_context);)

2. 送信完了割り込みが設定(CANFDx_CHx_IR.TC = 1)されている場合、CANFDx_CHx_TXBTIEとCANFDx_CHx_TXBTOレジスタを確認することにより、最後に送信したTxバッファインデックスを特定することができる

3.CANFDx_CHx_TXBTIEレジスタをクリアする

//TXBTIEレジスタの値取得
vTxBufIntStatus = CANFD0_CH1_M_TTCAN->TXBTIE;

//TXBTIEとTXBTOレジスタのビットをチェックする
for(vIndex=0;vIndex < 32;vIndex++)
{

vTxbufSatus=Cy_CANFD_GetTxBufferStatus(CANFD_HW,CAN_HW_CHANNEL,1);

//TXBTIE.bit == 1かつTXBTO.TOx =1、TXバッファ送信発生/成功かつTXBCF.CFx =0キャンセルなし
if (((1ul << vIndex)& vTxBufIntStatus) && (vTxbufStatus == CY_CANFD_TX_BUFFER_TRANSMIT_OCCURRED) ))
{

//Txバッファ割り込みを無効にする
CANFD0_CH1_M_TTCAN.TXBTIE = 0x00000000;

//vIndexは最後に送信されたTxバッファのインデックス
gTxBufferIndex = vIndex;

}

}

以上

 

 

View solution in original post

0 Likes
5 Replies
IFX_Publisher2
Community Manager
Community Manager
Community Manager
25 likes received 1000 replies posted First like given

Hi, Kazunari Hayashi- san

Confirm to work on this KBA

Thanks,
BIndu

0 Likes
NXTY_hayashi
Level 6
Level 6
Distributor - NEXTY (Japan)
50 solutions authored 25 solutions authored 50 replies posted

XMC7000 MCUファミリでは、Txバッファ内のCAN FDメッセージが送信されると、CANFDx_CHx_TXBTOレジスタの対応するビットが設定されますが、これは新しい送信が要求されたときにのみリセットされます。
したがって、CANFD_CH_TXBTOレジスタは期待する値にならない場合があり、配慮が必要です。

XMC7000 MCUファミリーのCANFD_CH_TXBTOレジスタについては、Technical Reference Manualの説明を参照してください。
XMC7100 TRM Page95
XMC7200 TRM Page98

CANFD_CH_TXBTOレジスタを処理するソフトウェア例を下記に示します。

1. Tx送信要求時にCANFDx_CHx_TXBTIEレジスタの対応ビットを設定し、Txバッファ送信割り込みを有効にする

//1つのTxバッファ割り込みを有効にする
CANFD0_CH1 ->M_TTCAN.TXBTIE = 1ul << vTxBufferIndex;

//TxバッファのTxメッセージを転送する
Cy_CANFD_UpdateAndTransmitMsgBuffer((CANFD_HW,CAN_HW_CHANNEL, &CANFD_txBuffer_0,CAN_BUFFER_INDEX, &canfd_context);)

2. 送信完了割り込みが設定(CANFDx_CHx_IR.TC = 1)されている場合、CANFDx_CHx_TXBTIEとCANFDx_CHx_TXBTOレジスタを確認することにより、最後に送信したTxバッファインデックスを特定することができる

3.CANFDx_CHx_TXBTIEレジスタをクリアする

//TXBTIEレジスタの値取得
vTxBufIntStatus = CANFD0_CH1_M_TTCAN->TXBTIE;

//TXBTIEとTXBTOレジスタのビットをチェックする
for(vIndex=0;vIndex < 32;vIndex++)
{

vTxbufSatus=Cy_CANFD_GetTxBufferStatus(CANFD_HW,CAN_HW_CHANNEL,1);

//TXBTIE.bit == 1かつTXBTO.TOx =1、TXバッファ送信発生/成功かつTXBCF.CFx =0キャンセルなし
if (((1ul << vIndex)& vTxBufIntStatus) && (vTxbufStatus == CY_CANFD_TX_BUFFER_TRANSMIT_OCCURRED) ))
{

//Txバッファ割り込みを無効にする
CANFD0_CH1_M_TTCAN.TXBTIE = 0x00000000;

//vIndexは最後に送信されたTxバッファのインデックス
gTxBufferIndex = vIndex;

}

}

以上

 

 

0 Likes
IFX_Publisher2
Community Manager
Community Manager
Community Manager
25 likes received 1000 replies posted First like given

Hi Kazunari Hayashi san,

Can you please Translate the Title of the KBA also?

Thanks,
Bindu

0 Likes
NXTY_hayashi
Level 6
Level 6
Distributor - NEXTY (Japan)
50 solutions authored 25 solutions authored 50 replies posted

Hi, Bindu-san,

the title has been translated to Japanese.

0 Likes
IFX_Publisher2
Community Manager
Community Manager
Community Manager
25 likes received 1000 replies posted First like given

yes, Confirmed to receive this KBA.

Thank you for your contribution.

Thanks,
Bindu

0 Likes