cancel
Showing results for 
Search instead for 
Did you mean: 

Knowledge Base Articles

Traveo II: 最後に送信したCANFD TXバッファのインデックスを取得する – KBA231463 - Community translation (JA)

JennaJo
Moderator
Moderator

Traveo II: 最後に送信したCANFD TXバッファのインデックスを取得する – KBA231463 - Community translation (JA)

Translated by: 

Traveo II: 最後に送信したCANFD TXバッファのインデックスを取得する – KBA231463

 

Author: HongyanW_86            Version: **

 

Toraveo™ II MCUでは、TxバッファのCAN FDメッセージが送信された後、CANFDx_CHx_TXBTOレジスタの対応するビットがセットされますが、新しい送信が要求された時のみリセットされます。従って、最後に送信されたTxバッファインデックスは、CANFDx_CHx_TXBTOレジスタの値によって直接認識されない場合があります。

TVII-B-E-1M Register TRM (002-19567 Rev. *F) のCANFDx_CHx_TXBTO レジスタの以下の記述をご参照ください:

 
JennaJo_0-1614921360959.png

 

 

 

 

 

Txバッファインデックスを取得するための代替ソフトウェア手法は以下の例で示されます:

  1. Tx送信が要求されている場合、CANFDx_CHx_TXBTIEレジスタの対応するビットを設定することによりTxバッファ送信割込みが有効化されます。

//一つのTxバッファ割込みが有効化

pstcCanFD->M_TTCAN.unTXBTIE.u32Register = 1ul << vTxBufferIndex;

//TxバッファのTxメッサージを送信

Cy_CANFD_UpdateAndTransmitMsgBuffer(CY_CANFD_TYPE, vTxBufferIndex, &stcMsg);

  1. 送信完了割込みがセットされている場合(CANFDx_CHx_IR.TC = 1)、最後に送信されたTxバッファインデックスは、CANFDx_CHx_TXBTIE およびCANFDx_CHx_TXBTOレジスタを調べて確認する事ができます。両方のレジスタのこのビットがセットされている場合、対応するビットは、最後に送信されたTxバッファのインデックスです。
  2. CANFDx_CHx_TXBTIEレジスタをクリア

//Get TXBTIE register value

vTxBufIntStatus = pstcCanFD->M_TTCAN.unTXBTIE.u32Register;

//Check bits of register TXBTIE and TXBTO

for(vIndex=0;vIndex < 32;vIndex++)

{

        vTxbufStatus = Cy_CANFD_GetTxBufferStatus(pstcCanFD,vIndex);

        //TXBTIE.bit == 1 and TXBTO.TOx =1, TX buffer transmit occured/successful and TXBCF.CFx =0 no cancel

        if (((1ul << vIndex)& vTxBufIntStatus) && (vTxbufStatus == CY_CANFD_TX_BUFFER_TRANSMIT_OCCURRED))

        { 

            //disable Tx buffer interrupt 

            pstcCanFD->M_TTCAN.unTXBTIE.u32Register = 0x00000000;  

            //vIndex is the last transmitted Tx buffer index

            gTxBufferIndex = vIndex;

        }

    }

0 Likes
Version history
Revision #:
1 of 1
Last update:
‎Mar 04, 2021 09:16 PM
Updated by:
 
Contributors