如標題所示,
目前測試環境CPU是使用F28069,CCS v8.1 執行C2000Ware內f2806x的ecan_back2back範例
那看範例內說明是啟動self-Test Mode所以不需任何電路,
但在執行該程式的過程發現她會一直卡在底下程式的While回圈內,那我有去翻暫存器說明如果卡在那回圈內代表說發送沒有成功,
所以也不會進行到下面的判斷Mail Box內資料的部分。
想問說是否有人有遇過同樣問題?以及該問題該如何解決
for(;;)
{
//
// Set TRS for all transmit mailboxes
//
ECanaRegs.CANTRS.all = 0x0000FFFF;
//
// Wait for all TAn bits to be set
//
while(ECanaRegs.CANTA.all != 0x0000FFFF ) —–> 會一直停在這回圈內
{
}
Green Deng:
你好,我会在测试后给你答复。
Green Deng:
你可以试一下:
1、更换代码,只使用MBX0:
// // Set TRS for all transmit mailboxes // ECanaRegs.CANTRS.all = 0x00000001;// // Wait for all TAn bits to be set // while(ECanaRegs.CANTA.all != 0x00000001 ) -----> Stuck point你可以尝试任何一个MBx,但一次只能尝试一个。
2、检查一下邮箱RAM,可以下载应用报告:https://www.ti.com/lit/an/spra876b/spra876b.pdf?ts=1595645969964
然后运行MBXRAMRW例程,不过里面的app.note是基于F28335的,需要注意更换的SYSCLKOUT寄存器的配置。CANBTR寄存器的话应该不需要更改,因为你只测试RAM而不进行外部通信。请确保SYSCLKOUT频率配置正确(90 MHz)。
user1373333:
回复 Green Deng:
HI Green Deng
測試過第一個方法還是無效,仍然會卡在While Loop內無法往下進行。
而方法二則是想請問說該範例是在那裡可以下載,我根據PDF內路徑說明在C2000Ware內尋找可是都找不到,
(path: C:\ti\c2000\C2000Ware_1_00_01_00\device_support\f2833x\examples)
我看我電腦內安裝的C2000Ware內範例只有兩個分別為ecan_back2back, 和 ecan_a_to_b,
想請問說是否我C2000Ware有未安裝完整的部分?還是該範例只在c2000 Ware_1_00_01內而已?
謝謝。
(Note: 底下圖片為我電腦內C2000 Ware內的example)
Green Deng:
回复 user1373333:
这个例程不属于C2000ware,需要单独下载。在文档的第一页中有指出:可从以下URL下载项目文件:www.ti.com/…/spra876。
user1373333:
回复 Susan Yang:
HI Susan
謝謝你的回應,我這邊最後有找到問題
目前測試用的板子是自己設計的板子,那由於當初CAN沒有用到所以該兩隻腳位是直接10K下地,
那由於當初看手冊內寫CAN 的Self Test模式是內部底層處理所以就沒對外部電路做修改,
那目前測試就算在STM Mode下該腳位不能10K下地,要改為3.3V接4K接著再接到CAN腳位
這樣程式就可正常運行。
Susan Yang:
回复 user1373333:
很高兴您能解决问题,谢谢分享您的解决方案