TI中文支持网
TI专业的中文技术问题搜集分享网站

AWR1642 中加入 CAN发送报错

我在SRR的代码中加入CAN发送功能。

CAN的发送程序CAN_transmitData放在MmwDemo_mboxReadTask中

当我发送某一个固定的CAN ID时,可以正常工作。

当我参考论坛的参考代码准备实现不同ID发送时,进行如下配置:

CAN_MsgObjHandle txMsgObjHandle[0x0f]

Can_Initialize()

{

..

appDcanTxcfgParams.msgIdentifier = 0x300

txMsgObjHandle[1] = CAN_creatMsgObject(canHandle,1,&appDcanTxcfgParams,&errCode);

appDcanTxcfgParams.msgIdentifier = 0x400

txMsgObjHandle[2] = CAN_creatMsgObject(canHandle,2,&appDcanTxcfgParams,&errCode);

appDcanTxcfgParams.msgIdentifier = 0x500

txMsgObjHandle[3] = CAN_creatMsgObject(canHandle,3,&appDcanTxcfgParams,&errCode);

..

}

然后我在MmwDemo_mboxReadTask中发送CAN

当只发送CAN_transmitData(txMsgObjHandle[1],&appDcanTxData,&errCode)时,可以正常工作。

当只发送CAN_transmitData(txMsgObjHandle[2],&appDcanTxData,&errCode)时,会报错

当只发送CAN_transmitData(txMsgObjHandle[3],&appDcanTxData,&errCode)时,也会报错

错误提示如下:

 ti.sysbios.gates.GateMutex:line 99:assertion failure:A_BadContext:bad calling context.See GateMutex API doc for details.xdc.runtime.Error.raise:terminating excution

请问哪里出问题了,为什么只能发送txMsgObjHandle[1]的信息~~

user4861090:

另外当我没有连接上CAN网络时,执行程序并不会报错。但是当我接上CAN网络之后,执行中的程序立马就会报错。

Wesley He:

回复 user4861090:

你好,
有没有加上对应的发送?可以尝试下把对应的接收加一下,不确定ACK是否需要把发送enable。
谢谢。

Wesley He:

回复 Wesley He:

另外,
问下你开发使用的是AWR1642的EVM还是自己做的板卡?
AWR1642BOOST EVM上引出的是CAN-FD接口。

user4861090:

回复 Wesley He:

"有没有加上对应的发送?"

不是很理解这句话~~

CAN_transmitData(txMsgObjHandle[2],&appDcanTxData,&errCode),这个CAN_transmitData不是对应的发送函数吗?

而且我发送CAN_transmitData(txMsgObjHandle[1],&appDcanTxData,&errCode)是可以发送成功的,外面的CAN网络上也收到了发送的信息。

我是在AWR1642BOOST EVM上稍微改一下,把CANFD断开了,换成了CAN口。

Wesley He:

回复 user4861090:

你好,
不好意思,说错了,是接收。

另外, CAN-FD口可以跑普通CAN协议。使用CAN-FD的软件驱动,设置为普通CAN的工作模式。

赞(0)
未经允许不得转载:TI中文支持网 » AWR1642 中加入 CAN发送报错
分享到: 更多 (0)