Part Number:TMS320F28374SOther Parts Discussed in Thread:C2000WARE
大家好,我在使用F28374S时CANB通信异常,求助,谢谢!
问题描述:CANA、CANB都有使用,波特率1MHZ,扩展帧,1-16号邮箱发送,17-28号邮箱接收,同样的初始化,CANA可以正常收发,CANB不能,通信流程是PC通过CAN上位机软件给分别F28374S的CANA、CANB发数据,CANA、CANB收到之后应答2包数据给PC,仿真查看CANA、CANB的寄存器,发现有一处不一样CAN_TEST,查询手册CAN_TEST = 0x80,表示其bit7 (RX)为1(隐形),但CANB为0(显性),用万用表量CANA、CANB的RX都为高电平(隐形),为何CANB的CAN_TEST的RX位不更新 ?用示波器测量过CANH、CANL差分信号,波形是很好的,错误寄存器也没报错。
PS:测试过程中发现一些奇怪的现象
- 在工程中交换CANA、CANB初始化顺序,CANB可能收发成功
- 假设CANB当前可以工作,然后再工程中添加更多的代码,这些代码跟CAN无关,CANB也会收发失败
查看存储器的空间使用,并未使用满,增加Flash存储空间,CANB仍然收发失败。
Yale Li:
参考的是哪个例程?
看一下CAN_TEST Register的描述:
spruhx5g_TMS320F2837xS Microcontrollers Technical Reference Manual (Rev. G)第2382页21.15.2.6 CAN_TEST Register (Offset = 14h) [reset = 0h]
,
xb wang:
抱歉,您发的图片打开不了,我是根据C2000Ware里3.03版本“ f2837xs\examples\cpu1\can_external_transmit\cpu01\can_external_transmit.c”修改的,我想知道是CAN_TEST的RX具体有什么作用,数据什么时候会更新,因为我用示波器测CAN收发器的RX引脚是高电平(隐性状态),该引脚直连DSP的RX引脚,为啥CAN_TEST的RX不是1呢 ?
,
Yale Li:
我重新编辑了一下,试一下现在是否能打开?
,
xb wang:
这个描述我看了,我奇怪的是RX用于检测CANRX引脚的状态,这个引脚实际(示波器测试)是隐形状态,但CAN_TEST的RX并未置1
,
Yale Li:
CAN TEST寄存器是在test mode中使用的。可以看一下TRM的21.4.3 Test Modes,每一种test mode的信号连接都不同。
在正常的工作模式中是不参考这个寄存器的。
,
xb wang:
问题已找到,是在初始化CANB的RX管脚时不小心使能了输入反相(GPAINV寄存器),导致CAN_TEST的RX异常时为0,关闭输入反相后可以正常通信。
,
Yale Li:
问题解决就好~也感谢分享