当前位置:首页 > 单片机 > 单片机
[导读]1.概述CAN(Controller Area Network)总线是德国BOSCH公司为解决现代汽车中众多控制与测试之间的数据交换开发的一种串行数据通信协议,是一种多主方式的串行通信总线。CAN总线是一种开放式、数字化、多点通信的控制

1.概述

CAN(Controller Area Network)总线是德国BOSCH公司为解决现代汽车中众多控制与测试之间的数据交换开发的一种串行数据通信协议,是一种多主方式的串行通信总线。CAN总线是一种开放式、数字化、多点通信的控制系统局域网,具有通信速率高、传输时间短、传输距离远、纠错能力强、控制简单、扩展能力强以及性价比高等特点,是目前国际上应用最广泛的现场总线之一。

基于CAN总线的CAN控制器具有完成CAN总线通信协议所要求的全部必要功能,因此CAN控制器与其它微处理器的接口成为设计CAN总线系统的首要工作。实际中很多设备带有RS-232接口,为了方便具有RS-232接口的设备与CAN总线的数据通信,本文完成了基于单片机控制的CAN总线与RS-232转换器电路设计和软件设计,实现了CAN总线数据与RS-232接口设备的数据传输。

2.基于单片机控制的CAN总线与RS-232转换器电路设计

CAN总线与RS-232转换器电路包括:主控制模块、RS-232接口转换电路和CAN控制模块3个主要部分。

主控制模块的功能是处理CAN总线以及RS-232接口的数据通信和控制,本设计应用AT89C51完成对转换器各个接口的控制,实现CAN总线和RS-232接口两种协议数据帧的转换,使用带有SPI总线接口的X25045实现硬件看门狗功能。主控模块电路如图1所示。

RS-232接口电路由MAX232芯片构成,实现将单片机串口的TTL电平与RS-232电平的相互转换,完成RS-232接口信息的输入输出传输。

CAN控制器模块,主要完成CAN协议的物理层和数据链路层协议的实现。其中物理接口采用PCA82C250芯片实现物理层的电平转换和传输。CAN控制器使用SJA1000芯片,完成数据链路层功能,实现CAN总线信息的输入输出传输。

AT89C51是CAN总线与RS-232转换器的控制器,提供以下标准功能:4k字节Flash闪速存储器,1000次可擦写周期,三级加密程序存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM、定时/计数器、窜行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止所有部件工作直到下一个硬件复位。

AT89C51使用的晶振信号由SJA1000提供(SJA1000用24MHz的片外晶振),SJA1000的CLKOUT引脚接入MCU的XTAL1引脚。

由于CAN总线速率与RS-232接口速率并不相同,因此本设计中增加了片外RAM芯片6116,用作转换双方的数据缓冲区。设计中使用P2.7接反向器连接6116的片选端,所以接口转换电路中的片外RAM的起始地址实际上应为0X8000。

                              图1 主控制模块电路原理图

2.1 AT89C51与RS-232转换接口电路设计

应用MAX232芯片构成RS-232的接口转换电路,实现AT89C51串口的TTL电平与RS-232电平的相互转换。其中R1out和T1in引脚接单片机的RXD引脚和TXD引脚,R1in和T1out作为RS-232接口输出连接标准DB9接口的引脚2和引脚3。DB9接口引脚5接地。为了使MAX232芯片正常工作,还需要外接4个1μF的电容用于芯片升压,以完成电平转换。

2.2 SJA1000与AT89C51接口电路设计

                                      图2 SJA1000与AT89C51接口电路原理图

CAN控制器SJA1000芯片采用片外24MHz晶振,其CLKOUT引脚输出工作频率接入微处理器的XTAL1引脚。片选/CS端与单片机的P2.7引脚直接相连,因此SJA1000的寻址空间从地址0开始。AD0~AD7直接与AT89C51的低8位数据/地址复用口P0口相连,MODE接高电平设置为Intel模式,中断输出信号/INT与微处理器的/INT0连接,使CAN通信可以采用中断和查询两种方式。TLP113的外接390Ω电阻为限流保护电阻,为避免当驱动器失效时出现过流导致控制器损坏。SJA1000与AT89C51接口电路如图2所示。

2.3 CAN总线物理层接口电路设计

 

 PCA82C250与CAN总线的接口部分采用一定的安全和抗干扰措施。CANH和CANL与地之间并联了两个30P的小电容,可以起到滤除总线的高频干扰和一定的防电磁辐射的能力。另外在两根CAN总线接入端与地之间分别反接一个保护二极管,当CAN总线有较高的负电压时,通过二极管的短路可起到一定的过压保护作用。PCA82C250的Rs脚上接有一个斜率电阻,电阻大小可根据总线通讯速度适当调整,一般在16K~140K之间。用光电隔离芯片TLP113将CAN控制器SJA1000和收发器PCA82C250隔离,以便有效地增加通讯距离和抗干扰能力。CAN总线物理层接口电路如图3所示。

3.基于单片机控制的CAN总线与RS-232转换器软件设计

主程序分为初始化和循环检测两个主要部分。初始化部分完成对看门狗电路及RS-232 串口和CAN总线的初始化并开启INT0中断和串口中断。循环检测部分通过调用CAN总线接收函数(CAN_Receive())和RS-232接收函数(RS232_Receive())检测缓冲区内是否收到到数据,如果有数据接收则调用RS-232发送函数(RS232_Send())和CAN总线发送函数(CAN_Send())转发数据。数据的发送和接收都是通过中断来进行的。每次循环检测结束通过调用rst_wdog函数使看门狗复位。此外,由于CAN总线的速率与RS-232接口的速率并不相同,因此还需设置片外的存储器(RAM),用于转换双方的数据缓冲区。主程序流程图如图4所示。

3.1 基于RS-232协议的数据接收与发送程序设计

  由于RS-232接口发送数据是以字节为单位,而CAN总线接收数据以多字节组成的数据帧为单位,因此为了避免指针指向的混乱,程序中统一使用相同长度的通用帧来保存数据。RS-232协议模块将通用的帧使用SLIP协议进行封装后发送,并将接收到的SLIP帧转为通用帧格式转入缓冲区。系统启动后,主程序调用RS232_Receive函数检测CAN接收缓冲区的内容,如果缓冲区内有数据,则调用RS_Read()函数读取缓冲区中的一帧数据并将其送入RS232_Receive()函数参数buf指向的缓冲区后返回。在读取CAN接收缓冲区数据后会交由RS232_Send()函数发送,并将帧数据保存至临时发送缓冲区bufRS_S。程序通过ChkEndR()函数检测数据帧是否发送完毕。

                     图4  CAN总线与RS-232转换器主程序流程图       

       3.2  CAN控制器SJA1000初始化程序设计

CAN控制器SJA1000完成CAN总线帧的发送和接收任务。程序中,使用INITCAN()函数完成对CAN接口芯片的初始化。初始化程序设计对转换器的正常工作相当重要。它主要完成模式设置、时钟输出寄存器设置、接受码寄存器ACR设置、接收屏蔽码寄存器AMR设置、总线定时器设置和输出控制寄存器设置。

3.3 基于CAN总线协议的数据接收与发送程序设计

主程序启动后调用CAN_Recive()函数检查CAN接收缓冲区中是否有数据存在,如果检查到数据,则程序从缓冲区中读取一帧数据并将其送入参数buf指定的缓冲区中。主程序如果发现RS-232接收缓冲区内有数据,则读取该数据帧并将其交由CAN_Send()函数发送至CAN总线。这里CAN_Send()函数接收到的数据帧格式为通用帧格式,需要先将其中的DesDevID SouDevID Length 等信息从通用帧中提取出来,填入CAN总线格式帧的各个位置,再通过命令寄存器传递发送请求。此外,主程序通过ChkEndC()函数检测数据帧是否发送完毕。

4. 结论

本设计完成了CAN总线与RS-232转换器的电路与软件设计。本设计的创新点是:由于CAN总线与RS-232接口数据通信速率以及通信帧格式都不同,本设计最大优点是解决了这两点不同,从而实现了数据在CAN总线与RS-232接口之间的传输。在设计中由于使用了CAN总线进行数据传输这就使得通信方式多主性。网络上任意节点可以任意时刻主动地向网络上其他节点发送信息而不分主从。可以点对点,点对多点或全局广播方式发送和接收数据。

图4  CAN总线与RS-232转换器主程序流程图

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

Canalys统计数据显示,2022年第三季度全球智能手机市场遭遇连续三季度下跌,同比下降9%。三星通过大力开展促销活动来减少渠道库存,市场份额达到22%,领先市场。在市场低迷期间,由于市场对iPhone手机的需求相对具...

关键字: 智能手机 CAN iPhone OPPO

广州2022年10月18日 /美通社/ -- 10月15日,第 132 届中国进出口商品交易会("广交会")于"云端"开幕。本届广交会上高新技术企业云集,展出的智能产品超过140,...

关键字: 中国智造 BSP 手机 CAN

如果获批,百悦泽 ®将成为欧盟地区获批用于慢性淋巴细胞白血病治疗的布鲁顿氏酪氨酸激酶(BTK)抑制剂中唯一在头对头试验中较标准治疗获得优效性的药物 凭借较标准治疗显著更低的房颤和房扑发生率 ...

关键字: 神州 BSP EMI CAN

苏州2022年9月30日 /美通社/ -- 艺卓中国发布23.8英寸FlexScan EV2480–一款超窄边框全高清(1920 x 1080)IPS显示器,配备USB Ty...

关键字: CAN FLEX 显示器 USB-C

上海2022年9月29日 /美通社/ -- 9月26日下午,蓝科与普华永道共同策划的【日企财务沙龙】在位于上海湖滨路的普华永道创新中心顺利举办。 "CFO在未来应该被称作首席未来官(Chief Future...

关键字: 数字化 NET CAN FUTURE

GD25Qxx 是四线SPI 接口的 FLASH 芯片,最大容量可达 16Mbytes。板上集成有 GD25Q64 芯片, 每页 256 字节,每扇区 16 页(4k 字节),每块区 256 页(64k),写入前必须先擦...

关键字: 可编程USB UART I2C SMBusS SPI CAN USB2S

(全球TMT2022年9月7日讯)互联网名称与数字地址分配机构 (Internet Corporation for Assigned Names and Numbers, ICANN) 正在发起"DNS 和域名安全的知...

关键字: CAN 互联网 IC DNS

技术专家社群将通力合作以确保域名系统更安全可靠 洛杉矶2022年9月6日 /美通社/ -- 互联网名称与数字地址分配机构 (Internet Corporation for...

关键字: CAN 互联网 IC DNS

苏州2022年9月1日 /美通社/ -- 近日,教育部部署在今年9月开展第5个近视防控宣传月活动,主题为"全社会行动起来,共同呵护好孩子的眼睛,让他们拥有一个光明的未来"。作为世界首个以防止眼疲劳为研...

关键字: 显示器 FLEX CAN 蓝光

(全球TMT2022年8月25日讯)Experlogix的CPQ软件和文档自动化解决方案可简化最复杂的销售和其他流程。该公司宣布了相关计划,要将所有Experlogix LLC和Xpertdoc Technologie...

关键字: LOGIX TECHNOLOGIES 自动化 CAN

单片机

21600 篇文章

关注

发布文章

编辑精选

技术子站

关闭