TIwilliam hill官网
直播中

林剑连

7年用户 197经验值
私信 关注
[问答]

關於AM335x starterware CAN driver問題(使用IDK及ICE V2的開發版)

各位先進大家好:
我來自台灣,我用AM335x的IDK及ICE V2開發版做工業控制應用,
遇到了幾個難題未解在dcantxrx這個starterware的project中,
首先starterware裡面有profile=EVMProfileGet();這個程序,無論ICE V2或是IDK都會在這程序內做無窮迴圈,
請問這邊是否是需要修正程序為profile=1;
其次startware監看UART串口部分的定義跟CAN使用的UART口都是UART0,所以我有修改了UART console相關程序,
並指定為UART3此程序在ICE V2下,UART監看口正常,但是在IDK以此程序運行,則會再設置baudrate程序下又是陷入死迴圈??
請問這是怎麼回事?
最終UART0設置成DCAN1不改任何設定,UART3是監看的UART串口,但是CAN口ICE V2(J9)無訊號輸出
打印出At least one of the errors.........**DCAN is in Bus-off state
請問有使用過starterware裡dcan 的先進們,知道這個問題在哪嗎?
本人在ti E2E社群有反映這個問題,但因為回覆狀況不理想,請求這邊的先進協助。

回帖(7)

吴思莹

2018-5-15 00:40:32
你好!建议你看一下Starterware的release notes,里面有device support的,一般来说这个DCAN的driver是支持AM335X GPEVM板的,如果你要在ICEV2或者IDK上面实现,是需要自已做移植的。
举报

林剑连

2018-5-15 00:46:55
引用: hwjj940056201 发表于 2018-5-15 00:40
你好!建议你看一下Starterware的release notes,里面有device support的,一般来说这个DCAN的driver是支持AM335X GPEVM板的,如果你要在ICEV2或者IDK上面实现,是需要自已做移植的。

Hi! Steven兄:
明白,但俺已經移植兩個禮拜了,卡住了幾個關卡不明白,但是也有自行衝破幾處大穴,所以開文裡講的直白,
首先明顯的dcan用的是UART0硬件串口,其中的pinmux我看來是沒啥問題的,
但是裡面的打印監看串口UART也設置成UART0是故開文裡,俺有註明自己衝開的大穴是platform.lib
其中uartConsole.c需修正
#define UART_CONSOLE_BASE (SOC_UART_3_REGS) //原先是UART_0
但是以上修改ICE V2能使,IDK EVM板不能使,根據之前俺移植EtherCAT使用RTOS經驗,理應UART監看口都是UART3才是,
為何同樣的源碼運行到IDK就是死機??
另外主要大穴未沖開,因為UART0所有設置完後,俺有用watch設置讓其能運行單一封包或是多封包收發,
但是都出現bus off的錯誤訊息,這狀況只能在ICE V2跑出,而IDK用原源代碼則是啥都沒有。
附上幾個俺糾錯出現的截圖來示意一下此狀況



來此求助情非得已,因為已在米國TI E2E論壇求救許久,且往下糾錯亦無進展,想詢問高手之經驗解惑。
 
举报

吴思莹

2018-5-15 01:04:15
引用: vitamin维他命 发表于 2018-5-15 00:46
Hi! Steven兄:
明白,但俺已經移植兩個禮拜了,卡住了幾個關卡不明白,但是也有自行衝破幾處大穴,所以開文裡講的直白,
首先明顯的dcan用的是UART0硬件串口,其中的pinmux我看來是沒啥問題的,

你好,我先确认几点: 在你的设计中,你是想使用了UART3作为调试串口,实现信息的输出;同时想把UART0的两个管脚配成CAN接口实现CAN通信。
UART3的调试串口实现已经在ICE板上调通了,但是IDK调不通;CAN通信的话两个板子都没有成功。
是这样的情况吗?
首先,在硬件设置上,我想知道你的UART3的调试串口,和CAN通信接口的transceiver都是通过外加一个板子来实现的吗?在配置的时候有没有把UART0的pinmux配成CAN0的模式呢?
其次,你大可以不必费劲儿把调试串口从UART0改到UART3上,CAN0的通信接口有3种复用的模式,你可以选择另外的两种来实现,不会干扰到你的UART0调试唇口的使用,设置一下pinmux就好了。
举报

林剑连

2018-5-15 01:18:36
引用: hwjj940056201 发表于 2018-5-15 01:04
你好,我先确认几点: 在你的设计中,你是想使用了UART3作为调试串口,实现信息的输出;同时想把UART0的两个管脚配成CAN接口实现CAN通信。
UART3的调试串口实现已经在ICE板上调通了,但是IDK调不通;CAN通信的话两个板子都没有成功。
是这样的情况吗?

Hi!Steven:
感謝您提示的調試方向,但我有個愚蠢的問題,我之前看過版上跟台灣FAE都有您截圖上的pinmux配置工具的視窗,
請問這是怎麼使用的?工具是在CCS下嗎?還是需要加裝插件?
在ICE V2上以前跑過UART監控串口是在USB(VCP)的接口 ,而IDK使用的則是J10的位置(使用RTOS Uart driver毫無問題,問題是在Uartcolsole.c不改情況下,無輸出,所以才將UART_0_BASE改成UART_3_BASE).
您提及UART0可以復用,但是問題是UART0目前已經給UART轉CAN的硬件用去了,想必把UART直截當打印串口,還是得用掉一個硬件口才是,
所以原始的starterware範例,完全不改,其實是CAN口跟UART打印口都用到UART0,這不怎麼合邏輯的,但我理解mode可能不同。
我在這論壇裡有先做過功課,曾經搜尋到有先人提及dcantxrx或是dcanloopback的範例,其can口實是can1使用的是UART0,
比對TI wiki上電路原理圖(IDK及ICE V2),也是這樣沒錯,但除了uart位址對應I/O口對應到UART0外,以原本的dcantxrx源代碼dcan.c(platform.lib)
裡面又有啥是需要怎樣的修改調適,實在是無頭緒。
感謝您在這的提示,我得到在TI E2E美國那邊不同的調適偵錯方向,以上怎麼使用pinmux Tool及是否能提示uart0使用dcan1的設置欠缺甚麼,
若有心神協助,我在此非常感激。
Henry Chou
举报

更多回帖

发帖
×
20
完善资料,
赚取积分