我在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的工作模式。