大家好,我是个新手, 向研究过c8051F040中bosch CAN模块的高手们请教一个问题。 我遇到几个很奇怪的问题,在实验中将消息对象1配置为发送,将消息对象2配置为接收,将发送与接收成功中断标志都置1,数据帧配置为扩展帧,ID均配置为0x5555555,波特率是1Mb/s。 第一个问题是,在测试阶段,将控制寄存器中Test位置1,进入测试模式,并将测试寄存器中LoopBack置1,则可以自收自发,但无法向外发送数据。而将LoopBack与Silence均配置为1,也可自发自收,但是仅将Silence位置1,则无法自发自收,参考Bosch User Guide,应该是都可以自发自收的。不知还有哪里有问题。 第二个问题是,在测试阶段,将LoopBack与Silence位均置1,且利用中断自发自收均成功的前提下。将Test位置0后,与外部的CAN卡,无法实现正常通讯,即无法正常收发。我在调试时通过keil中提供的外设寄存器观察,发现,状态寄存器显示的是0x61,就是busoff位和EPass位置1,还有表示总线上发送五个相同的位,不符合CAN通讯要求。我不清楚状态寄存器为什么会呈0x61。 第三个问题是,如果我想用示波器观察CAN总线上的数据帧,参考点取哪儿,是CANL,还是GND。 不知问题提出是否清楚,希望得到有调试经历的师傅的帮助。 我的邮箱是ggyz-2003@163.com。谢谢! |