本帖最后由 wsdymg 于 2018-5-7 10:39 编辑
基于英飞凌TC275控制器设计了开发板,配置了三路独立的CAN通讯,现场调试中CAN通讯一直调不通。错误很多,基本报文能出的错误来了个大集合。尴尬……,程序已经在Demo板上测试过,初步怀疑是硬件电路故障。
首先讲一下TC275CAN外设资源。目前大多数英飞凌的产品的CAN模块属于MultiCAN/MultiCAN+,Aurix产品中的称MultiCAN+, 比起MultiCAN来, 多了一个ISO CAN FD的支持.
CAN FD全称CAN with Flexible Data-Rate, 属于CAN 2.0后的扩展. 相对而言以前的CAN被称作ClassicalCAN. CAN FD的主要优点:
frame更短, 所以通信速率提高了
最多可以带64个字节的内容, CAN只能传输8字节
CRC算法的性能提高
物理层面的最高波特率也提升了,从1Mbps到5MBbps
如果不使用1Mbps以上的速率, 那么物理层面上,CANFD与CAN是兼容的. 但是协议上有些不同, 所以当在混合组网时, 收发双方必须都支持CAN FD才能通信.
上面是一个CAN与CAN FD的Frame对比, 如果CAN节点是完全按照ISO11898-1标准, 那么CAN FD将会被当做错误帧.CANFD的支持目前而言还不是很广泛, 除了Aurix处理器中的MultiCAN+模块外, 还有一些厂家的分立CAN FD收发器. 总体来讲, 目前还是有CAN 2.0为主。TC275一侧CAN发送器使用的外设引脚配置为:
CAN收发器使用ADI公司ADM3053,ADM3053是一款隔离式控制器区域网络(CAN)物理层收发器,集成隔离DC/DC转换器,符合ISO 11898标准。该器件采用ADI公司的iCoupler®技术,将双通道隔离器、CAN收发器和ADI公司的isoPower® DC/DC转换器集成于单个SOIC表贴封装中。片内振荡器输出一对方波,以驱动内部变压器提供隔离电源。该器件采用5V单电源供电,提供完全隔离的CAN解决方案。
ADM3053在CAN协议控制器与物理层总线之间创建一个完全隔离的接口。它能以最高1Mbps的数据速率工作。该器件具有限流和热关断特性,可防止输出短路。额定温度范围为工业温度范围,提供20引脚、宽体SOIC封装。ADM3053集成了isoPower®技术,该技术采用高频开关元件通过其变压器传输电力。CAN收发器一侧原理图如图:
分别测量了收发器前后侧波形,这里补充一句只有当外部加了CAN收发器时,CAN控制器引脚TX,RX上才能测试到波形。CAN总线上CANH与CANL的差分信号为:
分析到这一步基本陷入了绝境,CAN收发器引脚TX,RX信号正常,CANH,CANL差分信号看似也是正常的。推倒重来,一步步从原理硬件到软件重查一遍,照旧如此。事出反常必有妖,静下心来分析CAN波形数据:
那么问题来了,我波特率设置的是250K,对应的单位宽应该为:1/250/1000*10^6=4us。而根据示波器采集的波形测量得到约为3.33us。4/3.33=1.2。终于定位到故障点为波特率问题。调转枪头朝向软件,分析了一遍没发现问题,毕竟从Demo板上跑过了。
最后偶然检查了下BOM文件,设计中我选择的晶振为20MHz,倍频为200MHz。库存物料不足用了25MHz晶振替代焊接了,倍频后为250MHz。25/20=1.25。调整了下软件中时钟设置,终于能够正常通讯了。事出反常必有妖,后期遇到类似问题,眼界不要只限定在CAN 外设本身软硬件分析,分享完毕,祝大家学习快乐。
此内容由EEWORLD论坛网友wsdymg原创,如需转载或用于商业用途需征得作者同意并注明出处