CAN总线通过CAN控制器接口芯片上的两个输出端CANH和CANL与物理总线相连,而CANH端的状态只能是高电平或悬浮状态,CANL端只能是低 电平或悬浮状态。
CAN总线的接口芯片目前用的比较多的就是SJA1000,它是将数据转换成CAN数据帧,但要与CAN总线连接还必须用PCA82C250,说得更准确点是:SJA1000和PCA82C250必须配对使用。
扩展资料:
CAN总线通过CAN收发器接口芯片82C250的两个输出端CANH和CANL与物理总线相连,而CANH端的状态只能是高电平或悬浮状态,CANL端只能是低电平或悬浮状态。
这就保证不会在出现在RS-485网络中的现象,即当系统有错误,出现多节点同时向总线发送数据时,导致总线呈现短路,从而损坏某些节点的现象。
而且CAN节点在错误严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响,从而保证不会出现像在网络中,因个别节点出现问题,使得总线处于“死锁”状态。
参考资料来源;百度百科-CAN总线
CAN总线节点框架主要由三部分组成:
目前把CAN控制器作为片内外设集成到MCU中,渐成趋势。但是CAN收发器大多数5V的,需要留意三类芯片连接时所需的电平匹配问题。如果是兼容3/5V设计,就问题不大,否则需要使用电平转换或者高速光耦。
Arduino上有过一款SeeedStudio的CAN Shield,使用MCP2515控制器和TJA1050。于是我在5V版本的Arduino Nano,和泥人版的简化CAN Shield上做了测试。
连线部分需要注意两点:
发射端终端截屏
接收端终端截屏
做Arduino实验之前,基于MicroPython的F407的CAN例程环回自测也通过了。但是CAN节点是孤立的,则总线会被断开,用示波器和逻辑分析仪是看不到波形的。现在则问题不大了,因为两组 Arduino+MCP+TJA 组合可以构成了一对完整的总线节点,剩下的只是把新节点挂上去测试罢了。
接下来,我可能会基于STM32F103C8做些试验,可能会对接3.3V CAN收发器,或者3/5V兼容收发器。此外,F407/F072可以分别针对USB/CAN转换进行收发,同样需要兼容收发器。最后,LPC11C24和STM8S也可能。LPC11C24因为是三合一,把收发器也集成的芯片,而STM8S则可能是比较便宜的选择,配合CH340既可以用了。
因为STM32F103/F407/F072的CANH/CANL引脚都是5V容错的,所以TJA105X直接接上问题也不大。
谢谢以上各位朋友的帮助问题已经解决,真的真的很……[em:qb01:]加入了上面红色的部分就好了,我寻思着,是不是没有设定IO的速度,导致两边的速率出现可能不太一致,而出现的ACK错误但是,AC BC间的如何解释?标准的CAN设备适应能力强?再次感谢各位朋友[em:qb11:]
收发器是收发器,stm32只是集成了can控制器,TJA1050T高速的(估计1000m),A82C250(4000m)低速,通讯远用低速,通讯近用高速.
和两个一样,CANH接CANH,CANL接CANL。但是,整个总线上只需要两个终端匹配电子,一般是距离最远的两个节点。
本文标签:tja1050能直接连stm32f