简介
7840支持4路CAN-FD
Demo调试
官网下载demo,烧录,打开串口发现打印如下。原因是没有连接CAN盒子,总线错误。
CAN收发器端波形
CAN_L有信号,CAN_H没有
波形放大
GPIO端波形
有持续波形输出
波形放大查看,有50Us延迟(不排除测试仪表的延迟原因)
接CAN盒子
以图莫斯为例(便宜好用,500-1200RMB)
总线协议使用CAN,可以快速探测找到仲裁域波特率为500K
双击进入数据展示界面
重启发现串口没有数据打印了
测试CAN1
Demo板子的CAN1因为接了LED灯暂时不能使用为CAN
测试CAN2
CAN2接上之后,将代码的CAN2开启,代码写的还行,可以在这里直接修改使用的CAN通道
编译烧录后没有信号
难道是没有CAN收发器的原因??
于是把CAN2的GPIO引脚接在CAN0引脚上,此时CAN0没有初始化。
发现有信号了。
仔细一看,是PC16,也就是RX有信号,感觉很奇怪,demo只写了发送,没有做接收处理。
于是怀疑是高低电平的原因,把CANRX接在3.3V的电源上,果然有了同样的信号。
在此有了疑问,为什么直接给3.3V电源就能产生RX信号,需要和大佬请教下。
通过断点发现,在走完这一行代码后开始有接收信号出现。
分析CANRX出现的原因
留坑 后续再填
分析CAN2没有信号的原因
需要配置内部上拉,对上拉理解更深了。
GPIO_DRV_SetPullSel(PORTC, 16U,PORT_INTERNAL_PULL_UP_ENABLED);
GPIO_DRV_SetPullSel(PORTC, 17U,PORT_INTERNAL_PULL_UP_ENABLED);
CAN0在硬件上做了上拉
测试CAN3
同样上拉后,有数据
至此,Demo的测试已经OK,下一步看看CAN的细节