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

cross mob
keni_4440091
Level 7
Level 7
500 replies posted 100 solutions authored 50 solutions authored

Dear supporter

I like to translate the following KBA if it is still available, please confirm to my work.

Traveo II: Get the Index of the Last Transmitted CANFD TX Buffer - KBA231463

Regards,

Nino

0 Likes
1 Solution
keni_4440091
Level 7
Level 7
500 replies posted 100 solutions authored 50 solutions authored

Hi Jenna

Translation in Japanese was completed. Please confirm the following.

Thanks.

Regards,

Nino

 

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 レジスタの以下の記述をご参照ください:

 

keni_4440091_1-1614745848120.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;

        }

    }

View solution in original post

0 Likes
3 Replies
JennaJo
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

Hi, Nino-san

Confirm to translate this KBA.

Thanks, 

Jenna Jo
0 Likes
keni_4440091
Level 7
Level 7
500 replies posted 100 solutions authored 50 solutions authored

Hi Jenna

Translation in Japanese was completed. Please confirm the following.

Thanks.

Regards,

Nino

 

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 レジスタの以下の記述をご参照ください:

 

keni_4440091_1-1614745848120.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
JennaJo
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

Hi, Nino-san

https://community.cypress.com/t5/Knowledge-Base-Articles/Traveo-II-%E6%9C%80%E5%BE%8C%E3%81%AB%E9%80...

Thank you for your work.

It has been published as above, let you know there is any issues to update. 

You will be received the score based on your words#.

However, currently the scoring system is now working on.

I will be back to this Thread - when we finalize the score system by end of Feb. 

Thanks,

Jenna Jo
0 Likes