各位先進大家好:
我來自台灣,我用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社群有反映這個問題,但因為回覆狀況不理想,請求這邊的先進協助。
Henry Chou1:
回复 Steven Liu1:
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論壇求救許久,且往下糾錯亦無進展,想詢問高手之經驗解惑。
Steven Liu1:
回复 Henry Chou1:
你好,我先确认几点: 在你的设计中,你是想使用了UART3作为调试串口,实现信息的输出;同时想把UART0的两个管脚配成CAN接口实现CAN通信。
UART3的调试串口实现已经在ICE板上调通了,但是IDK调不通;CAN通信的话两个板子都没有成功。
是这样的情况吗?
首先,在硬件设置上,我想知道你的UART3的调试串口,和CAN通信接口的transceiver都是通过外加一个板子来实现的吗?在配置的时候有没有把UART0的pinmux配成CAN0的模式呢?
其次,你大可以不必费劲儿把调试串口从UART0改到UART3上,CAN0的通信接口有3种复用的模式,你可以选择另外的两种来实现,不会干扰到你的UART0调试唇口的使用,设置一下pinmux就好了。
Henry Chou1:
回复 Steven Liu1:
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
Steven Liu1:
回复 Henry Chou1:
了解。
Pinmux是个独立的工具,下载地址:http://processors.wiki.ti.com/index.php/Pin_Mux_Utility_for_ARM_MPU_Processors
对于AM335x,不要用Pinmux v3,就是你说的那个CCS下的工具,目前支持不完善。用上面连接中的工具就好了。
Henry Chou1:
回复 Steven Liu1:
感謝您的連結及耐心的回覆,實在得褒獎一下中國TI社群的技術支持,稍後我會用這個工具來輔助我調試糾錯,
目前我總結一下我的問題,也就是一個DCAN1的移植調試問題,因為未找到前人完整調試出來的發文,但隱約中看出是用UART0轉成CAN1去做CAN控制,
我搜尋過論壇裡其他做CAN口控制的例子,可惜得大家都是直截用EZSDK6.0然後用linux開發的例子,然後I/O口是外接到BBB或是ICE V2板的外擴接口,沒用現成的J9接口的經歷。
另外的小問題是只用Starterware裡面的UartConsole驅動UART監看口,發覺ICE V2能使,但IDK 卻是死機在UART_3 baudrate設置中.
然而用過RTOS裡面的Uartecho範例的經驗.函式引數uartInstance=3無誤.這個IDK,ICE V2通用.只有ICE舊版為1.
另外分享移植調試的修改部份getprofile()需要屏敝掉.並把profile引數指定為1.也就是prfile=1;不然會有 cpld內一些硬體無窮迴圈在read I2C硬件無法脫離.
Henry Chou