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

CAN数据提取与合成

各位大侠,小弟使用TM4C129X开发板初学CAN,目前遇到一个CAN0数据提取和合成的问题

 

ExpectID = CAN0RxMessage.ui32MsgID;

For (i=0; i <CAN0RxMessage.ui32MsgLen; i++)

{

 Data[i] = CAN0RxMessage.pui8MsgMsgData

}

ExpectID是32位,Data一般为8个字节,如何把ExpectID和Data连接在一起构成一个Frame呢?

此外,请教TM4C129X的CAN模块的 正常发送和接收模式的模式写法?是直接向下面这样写寄存器为TEST模式吗,LOOPBACK模式我作为发送写法是不是合适呢,接收写法请教各位大神。

HWREG(CAN0_BASE + CAN_O_CTL) = HWREG(CAN0_BASE + CAN_O_CTL) | CAN_CTL_TEST;
HWREG(CAN0_BASE + CAN_O_TST) = HWREG(CAN0_BASE + CAN_O_TST) | CAN_TST_LBACK;

xyz549040622:

1.如何把ExpectID和Data连接在一起构成一个Frame呢

采用正常的移位就可以了,你需要把4个8位变成32位呢,还是想把32位分解为8位呢

2.寄存器的没细看。你可以直接操作库的。配置参数就好了。

HG:

建议你直接使用ccs中提供的demo示例。

Engineer:

回复 xyz549040622:

分解为8位,正常配置是怎么配置,找不到相关资料啊

xyz549040622:

回复 Engineer:

u32的数据直接移位就能得到每个8位数据了,右移8位,16位,24位,然后分别取低8位就好了。关于CAN的例程,应该是去掉回环模式,直接在接收和发送口抓数据就好了。

Engineer:

回复 xyz549040622:

您的意思是只保留TEST这一句话吗?

HWREG(CAN0_BASE + CAN_O_CTL) = HWREG(CAN0_BASE + CAN_O_CTL) | CAN_CTL_TEST;

我做过实验,只保留这一句的确可以。但是我看寄存器还有一个Basic和Slient模式,这两种模式是干什么的呢,我们必须把寄存器打到TEST模式才能完成发送和接收吗?

赞(0)
未经允许不得转载:TI中文支持网 » CAN数据提取与合成
分享到: 更多 (0)