我用AM3359 ICE V2 板子 (2013年买的) ,软件用sysbios_ind_sdk_2.1.1.2\sdk\starterware,调试CAN报错如下:
StarterWare DCAN Application!!
BOARDInit status [0x0]
SoC : [AM335X]
Core : [A8]
Board Detected : [ICE Ver 2]
Base Board Revision : [UNKNOWN]
Daughter Card Revision: [UNKNOWN]
Invalid device ID!!
Device is not available on this board!
FAILURE!!!
This example is not supported on this board
由于这版SDK没有DCAN例程,就把sysbios_ind_sdk_2.1.0.1里面的DCAN拷来编译,结果ID报错
Steven Liu1:
是TI官方的ICEV2 EVM吗?http://processors.wiki.ti.com/index.php/AM335x_Industrial_Communications_Engine_Board_Design_Files
你用的是哪个目录下的历程?看上去像是GPEVM板的,因为还有daughter board的识别。
putpen:
回复 Steven Liu1:
我在2013年从TI官方购买的AM3359 ICE V2.1A, 软件用sysbios_ind_sdk_2.1.1.2\sdk\starterware, 这版SDK没有DCAN例程, 就把C:\ti\sysbios_ind_sdk_2.1.0.1\sdk\starterware\examples\dcan\frame_tx_rx拷贝到sysbios_ind_sdk_2.1.1.2\sdk\starterware\examples,编译完成后,运行DCAN,就出现了上面无效ID问题。
Steven Liu1:
回复 putpen:
注意查代码里面的EEPROM ID的辨识,是不是没有ICEv2等字样的分支?目前走到的哪个分支去了?
putpen:
回复 Steven Liu1:
frame_tx_rx_app_main.c: 在main()函数 status = DcanAppBoardInfoGet(&gDcanTxRx);返回不对,不是S_PASS 在 DcanAppBoardInfoGet(dcanAppCfgObj_t *pObj)函数 /* Get the DCAN connector data on the board. */ modId = BOARDGetDeviceCtrlModId(DEVICE_ID_DCAN_CONNECTOR, DCAN_CONNECTOR_INST_NUM); 这里modId是-1,所以报错
putpen:
回复 putpen:
经查,pBoardData = BoardGetDataAm335x();没有得到DCAN相关数据。sysbios_ind_sdk_2.1.0.1和sysbios_ind_sdk_2.1.1.2在starterware的board库函数,用在AM335x ICE V2是有问题的1.在starterware\board\am335x\am335x_icev2_pinmux_data.c,要增加static pinmuxPerCfg_t gDcan0PinCfg[] 配置2.在starterware\board\am335x\am335x_ICEv2.c, 对 gBoardAm335xIceV2DevData[] 要增加DCAN配置3.重新编译libboard.a