0 引言
随着20世纪80年代初期德国Bosch公司提出CAN(Controller Area Network)总线,即控制器局域网方案以解决汽车控制装置问的通信问题。经过20多年的发展,CAN总线现在广泛的应用在汽车领域,在汽车控制系统中应用CAN总线可以使硬件方案的软件化实现,大大地简化了设计,减小了硬件成本和设计生产成本,数据共享减少了数据的重复处理,节省了成本,可以将信号线减到最少,减少布线,使成本进一步降低等优点。由于CAN总线通信的高性能、高可靠性、及独特的设计和适宜的价格可以广泛应用于工业现场控制、智能楼宇、医疗器械、交通工具以及传感器等领域,所以被公认为是几种最有前途的现场总线之一。
1 系统总体设计
CAN总线系统总体结构如图1所示,主要包括上位机控制软件、USB-CAN转换模块、CAN节点、CAN总线介质(本处采用双绞线)组成。其中一个CAN节点通过USB接口与PC机相连,上位机控制软件能实时显示各CAN节点的数据且能通过上位机软件向各个CAN节点发送数据以控制各节点的8个发光二极管的亮或灭。
[page]
2 系统硬件电路
本系统由单片机外围电路、CAN总线硬件电路和USB-CAN转换电路组成。单片机外围电路包括电源电路模块、复位电路模块、串口通信模块。CAN总线硬件电路包括电气隔离模块、光耦隔离模块、CAN驱动器电路。USB-CAN转换电路包括CH375与单片机接口电路模块和USB接口电路模块。
C8051F040单片机内部的控制器局域网(CAN)控制器是一个协议控制器,不提供物理层驱动器(即收发器),需要外部重新接入物理层驱动器。本处采用TJ1050,TJA1050是控制器区域网络(CAN)协议控制器和物理总线之间的接口,是一种标准的高速CAN收发器。TJA1050可以为总线提供差动发送性能,为CAN控制器提供差动接收性能。
TJA1050是PCA82C250和PCA82C251高速CAN收发器的后继产品。其功能框图如图2所示。
2.1 CAN总线抗干扰设计
(1)总线阻抗匹配CAN总线的末端必须连接2个120 Ω的电阻,它们对总线阻抗匹配有着重要的作用,不可省略。否则,将大大降低总线数据通信时的可靠性和抗干扰性,甚至有可能导致无法通信。
(2)在TJA1050的CANH、CANI。端与地之间并联2个30 pF的小电容,以滤除总线上的高频干扰,防止电磁辐射。
(3)在TJA1050的CANH、CANL端与CAN总线之间各串联1个5 Ω的电阻,以限制电流,保护TJA1050免受过流冲击。
(4)在TJA1050、TLP113等集成电路的电源端与地之间加入1个100 nF的去耦合电容,以降低干扰。
3 系统软件设计
系统软件设计主要包括CAN通信程序和CAN-USB转换程序设计。此外为了采集CAN节点的数据并发送到上位机显示,还加入了采集单片机内部温度传感器数据程序。CAN通信程序主要完成各节点的CAN数据传输,既能向其他节点发送数据,又能接收其他节点发来的数据以控制相应的LED的亮灭。CAN-USB转换程序主要完成数据的中转,既能接收上位机发来的数据并打包成CAN协议相应的数据,又能将CAN协议数据发到上位机。温度传感器采集主要是对内部的热敏电阻上的电压经过ADC0进行AD转换并转换成实际的温度。
[page]
3.1 CAN通信程序流程圈
如图3所示,主要程序包括IO配置、晶振初始化、清除消息RAM、发送接收函数初始化和CAN初始化。
3.2 系统中断处理程序流程图
系统中断处理程序流程图如图4,该程序是响应CAN控制发来的中断请求,主要完成数据的接收工作。
[page]
3.3 USB-CAN转换程序流程
所有的通讯都由计算机应用层发起,然后以接收到单片机的应答结束,USB-CAN转换详细流程如图5所示。
4 系统与上位机交互结果
图6是正在采集中的上位机软件运行情况,图中2个曲线有一段大的上升和下降是因为把手指放到两个CAN节点的单片机上时造成了温度的上升,当放开手后,温度又逐渐回落。
点击设置按钮则右上角的窗口有效,此时可以设置采样时间,该采样时间表示多长时间向下位机发送数据包。左边实时显示各节点当前的温度值,右边的曲线显示温度的变化情况。图中还显示了向节点1发送15,向节点2发送170。
5 结束语
本文采用C8051HNO单片机作为CAN控制器,采用USB接口和上位机通信,实现了CAN总线的功能,并达到预期效果,体现了CAN总线的实用性。但USB接口芯片能达到全速模式,但是本处设计并未把它的传播速率快这一特点体现出来,这将在以后的工作中日臻完善。
关键字:CAN总线 CAN-USB 51单片机
引用地址:
基于51单片机的CAN总线系统设计
推荐阅读最新更新时间:2024-03-16 12:45
51单片机学习笔记,4*4矩阵键盘
今天学习了下矩阵键盘, 4*4, 分别代表0~F这16个数字 我们按了哪个键就显示到数码管上 看完郭老师讲解原理后就自己动手写了,郁闷的是 在keil软件中,我在switch-case语句中 少了个冒号,竟然编译通过! 结果当然不正确了,然后我再keil中调试代码,那更郁闷了,P3口在扫描到第2行键盘时就 会复位成0xff,怎么赋值都没用,其实是没写冒号啊! 调了半天都不行,最后不得不将STC89C52RC换上仿真芯片SST89E516,在线调试后才发现的错误, 然后参考书上的代码才调试成功的,表示无语~~~ mark下 C代码 #include reg52.h #include MY51.H
[单片机]
基于直线电机控制转向力的汽车转向系统探讨
汽车转向系功能要求与其相应机构的分析 汽车转向系统性能即很大程度地决定了对汽车操纵的轻便舒适性和安全行驶的稳定平顺性,也是减少交通事故和提高道路通行能力的重要因素。随着现代汽车及其相关技术的发展,对汽车转向系统的功能提出了越来越高的要求,现结合其相应机构的运行原理分析如下。 对转向盘的操纵要求即轻便灵活又有稳定的操作感受 由于车轮转向时轮胎与地面的摩擦阻尼随车速降低而增大。即在汽车低速转向时,对无助力传统机械转向系的方向盘操纵会相当费力,为此目前基本已均采用了动力转向系。并对转向助力的控制要求随车速增加而减小。而在车速很高时由于方向盘的转动力会很轻,为避免对转向盘微小的干扰力而引起汽车偏离方向,削减因路面不平撞击转向轮的冲击传到转向
[嵌入式]
基于51单片机的智能灯光控制系统设计
一.系统概述 系统使用的模块有AT89C51单片机+LCD1602显示屏+光敏电阻模块+ADC0832+小灯。 本设计采用51单片机为核心控制,使用LCD1602显示采集到的关照强度,光照强度以模拟电压信号的形式进行展现,通过ADC将模拟信号转换为数字电压信号,单片机会根据光强的电压信号值进行判定,如果光强电压值小于设置阈值则小灯就会被点亮。 二.仿真概述 1.通过LCD1602将数模转换后的光照强度电压信号值和阈值进行显示。 2.通过调节电位器来模拟光照强度的变化,光强的变化会在显示屏上表现出来。 3.当 检测 到光照强度低于设定阈值小灯就会亮起。 三.程序设计 使用 Keil 51进行程序设计,打开 Prot
[单片机]
基于ARM和CAN总线的嵌入式PLC设计
0 前言 可编程逻辑控制器(PLC),一种数字运算操作的电子系统,专为在工业环境应用而设计。它采用一类可编程的存储器,用于其内部存储程序,执行逻辑运算、顺序控制、定时、计数与算术操作等面向用户的指令,并通过数字或模拟输入/输出控制各种类型的机械或生产过程,是工业控制的核心部分。随着工业技术的发展以及规模的不断扩大,传统的PLC面临着IO点数增多、通讯功能需要增强等诸多方面的挑战,已无法满足个性化、差异化的需求。 现有的设计主要有工控机、单片机板等。工控机在互连、表达、算法等方面优势明显,但其实时性、稳定性难以满足连续控制的苛刻要求,通常用于监控。单片机系统在成本控制上更加灵活,可是没有操作系统使其只能应用于低端场合。具有嵌入式
[单片机]
51单片机汇编语言子程序调用指令RET RETI
控制转移 指令 用于控制程序的流向,所控制的范围即为程序存储器区间,MCS-51系列单片机的控制转移 指令 相对丰富,有可对64kB程序空间地址单元进行访问的长调用、长转移指令,也有可对2kB字节进行访问的绝对调用和绝对转移指令,还有在一页范围内短相对转移及其它无条件转移指令,这些指令的执行一般都不会对标志位有影响。 . 子程序调用指令(1条) 子程序是为了便于程序编写,减少那些需反复执行的程序占用多余的地址空间而引入的程序分支,从而有了主程序和子程序的概念,需要反复执行的一些程序,我们在编程时一般都把它们编写成子程序,当需要用它们时,就用一个调用命令使程序按调用的地址去执行,这就需要子程序的调用指令和返回指令。 LCALL
[单片机]
MCS-51单片机的4个I/O口
8051单片机的4个I/O口在结构上是基本相同的,但又各具特点。这四个端口都是8位双向口,每个端口都包括一个锁存器、一个输出驱动器和输入缓冲器。在无片外扩展存储器的系统中,这四个端口的每一位都可以作为双向通用I/O端口使用。在作为一般的通用I/O输入时,都必须先向锁存器写入 1 ,使输出驱动场效应管FET截止,以免误读数据。各自特点如下: (1)P0口为双向8位三态I/O口,它既可作为通用I/O口,又可作为外部扩展时的数据总线及低8位地址总线的分时复用口。作为通用I/O口时,输出数据可以得到锁存,不需外接专用锁存器;输入数据可以得到缓冲,增加了数据输入的可靠性。每个引脚可驱动8个TTL负载。 (2)P1口为8位准双向I/O口,内
[单片机]
基于CAN总线的温度检测设计
在对电子点火模块的测试中,为了模拟电子点火系统的真实工况,电子点火模块往往被置于高于常温的环境下进行电子点火实验,以获得最接近真实汽车运行工况的点火参数数据。由于电子点火模块自身的发热,其核心元件的温度成为影响电子模块性能的重要因素;另外,还要考虑环境温度是否达到模拟真实工况的要求等。 本文介绍了一种应用LM35温度传感器和PICMicro的温度检测节点的设计方案,用于检测在模拟汽车电子点火的过程中,电子点火模块的核心模块温度和环境温度,将阐明模块结构、工作原理及采样值量化的方法。 节点原理与结构 该温度检测节点由传感器电路、信号调理电路、单片机应用系统、CAN总线接口等构成。电路基本工作原理是:传感器电路将感应到的温度信号以
[测试测量]
51单片机控制步进电机硬件连接部分
1、概要: 本案例讲解的内容是51单片机控制步进电机硬件连接部分。后续会分别讲解单片机程序,S曲线加减速方法,上位机等相关内容 2、功能原理图: 2.1、51单片机: ①输出脉冲到TB6600驱动器PUL端口,从而控制步进电机转动 ②控制TB6600驱动器ENA端口,从而控制步进电机使能 ③控制TB6600驱动器DIR端口,从而控制步进电机转动方向 2.2、步进电机: ①提供机械动力 2.3、稳压电源: ①为步进电机提供电源 2.4、TB6600驱动器: ①二相四线步进电机专用驱动器 3、实物图: ** ①** 、51****单片机控制板一个 ** ②** 、二相四线步进电机一个 ** ③** 、稳压电源一个 ** ④** 、
[单片机]