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

cross mob
lock attach
Attachments are accessible only for community members.
Translation_Bot
Community Manager
Community Manager
Community Manager
100 likes received

嗨,

從範例 MCMCAN_1_KIT_TC375_LK 和 ADC_Single_Channel_1_TC375_LK 開始,我必須使用 CAN 訊息傳送從類比通道取得的值。 這就是我嘗試這樣做的方式:

無效傳輸CanMessage (無效)

{

/* 使用預設配置初始化 RX 訊息 */

IfxCan_Can_initMessage(&g_mcmcan.rxMsg); // @suppress("欄位無法解析")

 

/* RX封包資料內容失效 */

memset(( void *)(&g_mcmcan.rxData[0]), INVALID_RX_DATA_VALUE, MAXIMUM_CAN_DATA_PAYLOAD * sizeof ( uint32 )); // @suppress("欄位無法解析")

 

/* 使用預設配置初始化 TX 訊息 */

IfxCan_Can_initMessage(&g_mcmcan.txMsg); // @suppress("欄位無法解析")

 

/* 定義要傳輸的資料內容 */

//g_mcmcan.txData[0] = TX_DATA_LOW_WORD; // @suppress("欄位無法解析")

//g_mcmcan.txData[1] = TX_DATA_HIGH_WORD; // @suppress("欄位無法解析")

 

/* 定義要傳輸的資料內容 */

g_mcmcan.txData[0] = ( uint16 )(g_result & 0xFFFF); // @suppress("欄位無法解析")

g_mcmcan.txData[1] = ( uint16 )((g_result >> 16)& 0xFFFF); // @suppress("欄位無法解析")

 

/* 設定接收接受階段使用的訊息ID */

g_mcmcan.txMsg.messageId = CAN_MESSAGE_ID; // @suppress("欄位無法解析")

 

/* 發送帶有先前定義的TX封包內容的CAN封包 */

while ( IfxCan_Status_notSentBusy ==

IfxCan_Can_sendMessage(&g_mcmcan.canNode, &g_mcmcan.txMsg, &g_mcmcan.txData[0]) ) // @suppress("欄位無法解析")

{

}

}

 

但它不起作用。

我處於初級水平,這是一個 scolar 項目,有人可以幫助我嗎?

感謝您的建議,我也會在上傳部分分享整個文件。

1 解決方案
Translation_Bot
Community Manager
Community Manager
Community Manager
100 likes received

你好@mattep99

根據您的問題描述和附件,我有以下評論/問題:

1) 我已經檢查了您附加的文件並審查了與 CAN 功能相關的程式碼。 您能否澄清一下您嘗試實施的 CAN 用例?

根據代碼,您嘗試接收 ID 為 0x777 的 CAN 訊息,並使用更新的 ADC 資料傳輸相同的訊息。 這種理解正確嗎? 請澄清。

 

2)您可以嘗試如下所示的CAN引腳配置並嘗試測試嗎?

Kavya_B_0-1713867285555.png

 

3) 預設配置將經典 CAN 通訊的波特率設定為 500kbps。 您能否嘗試在 500kbps 下進行測試,無需任何額外的波特率設置,並讓我們知道觀察結果?

 

4)您可以參考執行緒上附加的範例程式碼https://community.infineon.com/t5/AURIX/TC387-CAN0-filter-configuration/td-p/687906

所附範例在 Aurix TC375 Lite 套件上進行了測試。 相關CAN節點配置可以參考。

 

謝謝,

卡維亞

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/How-to-transmit-data-with-CAN-message-TC375/m-p/745237

在原始文章中檢視解決方案

0
6 回應
Translation_Bot
Community Manager
Community Manager
Community Manager
100 likes received

你好@mattep99

根據您的問題描述和附件,我有以下評論/問題:

1) 我已經檢查了您附加的文件並審查了與 CAN 功能相關的程式碼。 您能否澄清一下您嘗試實施的 CAN 用例?

根據代碼,您嘗試接收 ID 為 0x777 的 CAN 訊息,並使用更新的 ADC 資料傳輸相同的訊息。 這種理解正確嗎? 請澄清。

 

2)您可以嘗試如下所示的CAN引腳配置並嘗試測試嗎?

Kavya_B_0-1713867285555.png

 

3) 預設配置將經典 CAN 通訊的波特率設定為 500kbps。 您能否嘗試在 500kbps 下進行測試,無需任何額外的波特率設置,並讓我們知道觀察結果?

 

4)您可以參考執行緒上附加的範例程式碼https://community.infineon.com/t5/AURIX/TC387-CAN0-filter-configuration/td-p/687906

所附範例在 Aurix TC375 Lite 套件上進行了測試。 相關CAN節點配置可以參考。

 

謝謝,

卡維亞

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/How-to-transmit-data-with-CAN-message-TC375/m-p/745237

0
Translation_Bot
Community Manager
Community Manager
Community Manager
100 likes received

嗨,

我將嘗試解釋它,但我從 Aurix 公司的一些專家給出的解決方案開始,我們接受該解決方案作為「黑盒子」:

1)是的,這就是我正在嘗試做的事情。 但是我看了你的examole程式碼,可能這行不通,我是否必須使用不同的訊息ID來傳輸和接收?

2)我已經嘗試過你的新配置但沒有改進。

3)和以前一樣。 無論如何,我是否需要另一塊板來查看傳輸是否正常,或者我應該在我的板中看到 LED1 亮起嗎?

0
Translation_Bot
Community Manager
Community Manager
Community Manager
100 likes received

@mattep99

1) 具有不同的 Rx 和 Tx ID 較好。 這會讓事情變得更容易。

3)你們有CAN分析儀用來測試嗎? 與使用另一個 Aurix 板相比,這將使測試更容易、更省時。

 

問候,

卡維亞

0
Translation_Bot
Community Manager
Community Manager
Community Manager
100 likes received

看看我在線程末尾的示例......但也請閱讀該線程

已解決:回覆:使用 TC334 在 MCMCAN 中進行過濾(僅 1 個過濾器... - Infineon 開發者社區

(希望連結有效)

 

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/How-to-transmit-data-with-CAN-message-TC375/m-p/745339

0
Translation_Bot
Community Manager
Community Manager
Community Manager
100 likes received

嗨,

非常感謝,無論如何我不明白某些部分。 為什麼只發送 1 則訊息卻收到 3 則訊息? 如何在傳輸的訊息中新增資料? 例如我嘗試過這個:

g_mcmcan。 txData [0] = g_結果。; //最低有效位

g_mcmcan。 txData [1] = g_結果。; //最高有效位

0
Translation_Bot
Community Manager
Community Manager
Community Manager
100 likes received

g_mcmcan.txData[0] = .....這是一個字的長度

所以嘗試做

uint8 TestArray[8] ;

 

TestArray[0] = ( uint8 )(AN0_Raw >> 😎 ; // 0x00 ;

TestArray[1] = ( uint8 )(AN0_Raw ); // 0x01 ;

TestArray[2] = ( uint8 )(AN1_Raw >> 😎 ; // 0x02 ;

TestArray[3] = ( uint8 )(AN1_Raw ); // 0x03 ;

測試數組[4] = 0x04 ;

測試數組[5] = 0x05 ;

測試數組[6] = 0x06 ;

測試數組[7] = 0x07 ;

 

// 現在我們要建立數據,使其看起來像CAN 分析器上的BIG Endian ..

 

uint32 TestWord0 = 0x00000000 ; // 只是為了初始化

uint32測試字1 = 0x00000000 ; // 只是為了初始化

 

 

TestWord0 = ( (TestArray[3] << 24) + (TestArray[2] << 16 ) + (TestArray[1] << 😎 + TestArray[0] ) ;

 

TestWord1 = ( (TestArray[7] << 24) + (TestArray[6] << 16 ) + (TestArray[5] << 😎 + TestArray[4] ) ;

 

 

g_mcmcan。 txData [0] = TestWord0;

g_mcmcan。 txData [1] = TestWord1;

 

 

 

 

 

0