编辑: 怪只怪这光太美 | 2016-05-09 |
robomodule.net Page
1 1. 终端电阻问题. 必须保证 can 总线布线拓扑是手拉手的形式,并且在首尾各有一个 120Ω的电阻.在断电情况下,用万用 表测量 CANH 和CANL 的电阻,正常时候,大约为 60Ω. 2. CAN 线断了,或者接触不良. 这种情况,也出现了不少案例,传统的成品杜邦线,可靠性不好.可靠性要求高的应用上,请勿使用杜邦 线.粗略统计客户反馈,已经出现过
20 多例杜邦线接头处没有压好铜芯的情况导致无法正常通信. 3. 编译器不能生成正确的程序. 出现了几次,用户的开发环境,编译下载的程序根本就不能运行,导致 can 通信不能正常工作.比如优化 过度、keil 工程上芯片没有选择正确. 4. 假芯片问题. 华强北流出了大把的假的 can 芯片, 这类芯片完全不能工作. 在跑着 can 程序的板上, 直接用示波器测 CANH 引脚的波形,如果波形完全是平的,则可以断定芯片为假货,或者芯片已经坏了. 5. 芯片供电错误问题. 一些开发板,完全不测试就出货了.TJA1050 此类的芯片,必须要 5V 供电才能正常工作,有些开发板给它 供电了 3.3V,然后就拿出去卖了.然后出售开发板的也不做测试是否能用,简直是坑死用户. 6. CAN 编组错误. 给的例程,都是针对
0 组的驱动器广播,如果编组不在
0 组,直接下载例程是无法通信的,需要修改程序 再使用.最省事的方法,直接对驱动器进行恢复出厂设置,即可使用. 7. 串口线数据异常导致编组编号异常. 有一些通信不正常的串口线,把意外的不确定的 id 号写入了驱动器,也会造成无法通信.发生这种情况, 直接将驱动器恢复出厂设置即可. 8. 波特率不匹配问题. 驱动器默认的波特率是 1M,如果主控程序上的波特率不是 1M,就必然通信异常. 9. 晶振问题. 如使用 STM32,有些人设计的 PCB,给的晶振是 8MHz,也有 12MHz,16MHz,25MHz.如果硬件上的晶振与程 序上的晶振不同,则一定要先修改程序再使用.否则,波特率一定是错的,一定无法通信.另外注意,从 淘宝购买的 STM32 开发板,有的厂家原理图上标的晶振与实际焊接的晶振不同,一定要看清楚,此类问题 困扰过不少客户,浪费了大量时间去排查问题. 10.提供的例程,仅针对于主频 72MHz 和168MHz 的MCU,如果 MCU 主频设置为其他,则需要修改相应的 CAN 初 始化参数.例如:STM32F429,主频 180MHz 的情况下,要修改 CAN 的CAN_BSx 寄存器. CAN 总线不能正常通信的原因总结: RMDS系列直流伺服电机驱动器用户手册 www.robomodule.net Page
2 11.给can 收发器供电的电源纹波过大. 出现过一些客户硬件经验不足, 自行设计板卡, 开关电源布线不考究, 导致纹波巨大,造成 can 收发器供电不稳定.此类情况,建议按 datasheet 提供的开关电源布线参考图来 进行布线.如信心不足,建议 DC-DC 降压到 5.5V,再用 LDO 降压至 5.0V 给5V 的can 收发器供电,LDO 降 压至 3.3V 给3.3V 的can 收发器供电. 12.另外建议, 为避免 can 通信的收发器之间压差过大导致 can 收发器损坏. CAN 线布线, 请多走一根 GND 线, 即can 线为三根线:CANH CANL GND. 13.STM32 接出的 CAN-TX/CAN-RX 与CAN 收发器的 TX 和RX,使用直连方式连接是正确的,请勿交叉连接.例如:STM32 的PB9/PA12 需要接的是 CAN 收发器的 TX,STM32 的PB8/PA11 需要接的是 CAN 收发器的 RX. 14.如果主控板是正点原子的开发板,注意 PA11/PA12,也就是 CANTX 和CANRX 有跳线帽,与USB 共用,需要修 改跳线帽到 CAN 端. RMDS系列直流伺服电机驱动器用户手册 www.robomodule.net Page