- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
Solved! Go to Solution.
- Labels:
-
XMC7000
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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;
}
}
以上
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi, Kazunari Hayashi- san
Confirm to work on this KBA
Thanks,
BIndu
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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;
}
}
以上
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Kazunari Hayashi san,
Can you please Translate the Title of the KBA also?
Thanks,
Bindu
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi, Bindu-san,
the title has been translated to Japanese.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
yes, Confirmed to receive this KBA.
Thank you for your contribution.
Thanks,
Bindu