在编写CAN总线通讯程序时,主要编写函数由初始化函数,发送函数和接收函数组成。其中发送函数一般写为主动发送函数,接收函数一般采用中断接收。下面就简单介绍一下三个函数的编写。
1 SJA1000寄存器初始化配置顺序
(1)进入复位模式,进行配置
(2)配置时钟分频寄存器,决定Peil模式还是Basic模式。
(3)配置总线定时寄存器,确定波特率。
(4)配置中断使能寄存器,决定使用那几个中断
(5)配置输出控制寄存器
(6)配置验收码和屏蔽码,决定接收哪一类节点的数据
(7)退出复位模式,进入正常工作模式。
2 发送数据顺序
(1)查询状态寄存器,判断是否正在接收,是否正在发送,是否数据缓冲区被锁。
(2)配置发送缓冲区。
(3)配置命令寄存器,启动发送。
3 接收数据顺序
(1)采用中断接收,关CPU中断。
(2)判断是不是接收中断。
(3)判断是远程帧还是数据帧
(4)读取数据
(5)开中断
关键字:CAN总线 软件编程
引用地址:CAN总线学习系列之七——CAN总线软件编程
1 SJA1000寄存器初始化配置顺序
(1)进入复位模式,进行配置
(2)配置时钟分频寄存器,决定Peil模式还是Basic模式。
(3)配置总线定时寄存器,确定波特率。
(4)配置中断使能寄存器,决定使用那几个中断
(5)配置输出控制寄存器
(6)配置验收码和屏蔽码,决定接收哪一类节点的数据
(7)退出复位模式,进入正常工作模式。
2 发送数据顺序
(1)查询状态寄存器,判断是否正在接收,是否正在发送,是否数据缓冲区被锁。
(2)配置发送缓冲区。
(3)配置命令寄存器,启动发送。
3 接收数据顺序
(1)采用中断接收,关CPU中断。
(2)判断是不是接收中断。
(3)判断是远程帧还是数据帧
(4)读取数据
(5)开中断
上一篇:CAN总线学习系列之八——CAN节点与CPU连接的硬件调试
下一篇:CAN总线学习系列之六——SJA1000重要的寄存器
推荐阅读最新更新时间:2024-05-03 00:18
基于K线/CAN总线的KWP2000协议分析及协议栈的开发测试
1 前言 在汽车故障诊断领域,针对诊断设备和汽车ECU之间的数据交换,各大汽车公司几乎都制订了相关的标准和协议。其中,欧洲汽车领域广泛使用的一种车载诊断协议标准是KWP2000(Keyword Protocol 2000),该协议实现了一套完整的车载诊断服务,并且满足E-OBD(European On Board Diagnose)标准。KWP2000最初是基于K线的诊断协议,由于K线物理层和数据链路层在网络管理和通讯速率上的局限性,使得K线无法满足日趋复杂的车载诊断网络的需求。而CAN网络(Controller Area Network)由于其非破坏性的网络仲裁机制、较高的通讯速率(可达1M bps)和灵活可靠的通讯方式,在车载
[嵌入式]
CAN总线的产生与发展
控制器局部网(CAN-CONTROLLER AREA NETWORK)是BOSCH公司为现代汽车应用领先推出的一种多主机局部网,由于其卓越性能现已广泛应用于工业自动化、多种控制设备、交通工具、医疗仪器以及建筑、环境控制等众多部门。控制器局部网将在我国迅速普及推广。 随着计算机硬件、软件技术及集成电路技术的迅速发展,工业控制系统已成为计算机技术应用领域中最具活力的一个分支,并取得了巨大进步。由于对系统可靠性和灵活性的高要求,工业控制系统的发展主要表现为:控制面向多元化,系统面向分散化,即负载分散、功能分散、危险分散和地域分散。 分散式工业控制系统就是为适应这种需要而发展起来的。这类系统
[嵌入式]
CAN总线—PROFIBUS-DP总线网关的实现方法
1 引言
在80年代中期,为了满足不同自动化领域的应用需求,出现了拥有不同技术特点的现场总线。每一种现场总线都有自己的应用领域,并且都力图拓展其应用领域,以扩张其技术垄断范围。但每种现场总线都以一个或几个大型跨国公司为背景,公司的利益与总线的发展息息相关。这些公司竞争的结果是多种总线协调共存。据不完全统计,目前国际上有200多种现场总线,而其中占据市场主流的现场总线有十几种 。现场总线的多样性,为总线设备用户提供了更多产品选择的同时,也为总线用户带了总线设备间兼容性问题。工厂在扩建,改建等过程中很可能会选用与原先现场设备总线标准不同的产品,这些设备由于使用不同的现场总线,彼此间不能实现数据共享,于是就降低了设备间功能互补的
[应用]
基于SJA1000的CAN总线测试程序
代码如下: /*************定义地址指针,指向基址***********/ unsigned char xdata *SJA_base_Adr = SJA_BaseAdr; /*************定义SJA1000读写缓冲区的数据结构***********/ struct BASICCAN_BUFStruct{ unsigned char IDH8; unsigned char IDL_R_DLC; unsigned char Frame_Data ; }receive_BUF,send_BUF; /*******************
[单片机]
宝来车的CAN总线特点分析
CAN总线是一种串行数据通信协议,由于在数据通讯上具有突出的可靠性、实时性和灵活性,并可以非常有效地构成分布式控制/实时检测系统而得到了广泛应用。
随着人们对汽车动力性、操纵稳定性、安全性和舒适性的不断追求,现代汽车上安装了很多电子控制设备、电子部件、专用传感器和功能各异的执行装置。为了解决汽车电子系统控制中,许多动态信息资源共享、信息处理的实时性等问题,大多数中、高档汽车上都采用了CAN总线技术作为控制器联网手段。宝来车的CAN总线具有高可靠性全面提高了宝来车的动力性、经济性和安全性。
一、宝来车CAN总线的组成与结构
宝来车采用两条CAN总线,即驱动系统CAN总线和车身系统CAN总线,这两总线完全能够满足ISO的定
[嵌入式]
CAN总线在液压支架电液控制系统的应用
1 液压支架电液控制系统的通讯方式分析
液压支架电液控制系统是实现综采工作面高产高效的关键技术设备。当前国际上主流的液压支架电液控制系统有:DBT公司的PM4、MARCO公司的PM31和JOY公司的RS20型3种。在通讯方面,PM4架间通过BIDI Bus互联成综采面网络。这种方式的缺点在于,一旦控制器不能正常工作,将导致控制系统通讯的中断。PM31架间的通讯通过BIDI Bus,全工作面的互联则采用T Bus。RS20控制器间通过一条19芯强电缆连接,其中的8根线用于通讯和紧急闭锁 。可以看出,PM4与PM31都采用总线的方式进行通讯,但都不是标准的现场总线。通过对3种控制器的剖析发现,它们的技术思路形成较早,且产品一直延续
[嵌入式]
基于CAN总线的电流、电压变送器的设计与实现
0.引言 现场总线技术和智能化仪表技术是目前自动与控制行业发展最快的两大技术。在现场总线技术中,CAN总线是发展较为迅速的一种协议标准,已经被广泛应用于自动化领域。本文介绍的是一种基于CAN总线的智能变送系统。控制器局域网(ControllerAreaNetwork,CAN)是德国Bosch公司在20世纪80年代初为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种数据通信协议。CAN总线能有效地支持分布式控制或实时控制的串行通信网络。通信介质可以是双绞线、同轴电缆和光导纤维。 1 系统网络构成 为满足该控制系统既要集中管理又要分散控制的要求,基于CAN总线的电流、电压变送系统采用总线式网络拓扑结构,
[单片机]
CAN总线在汽车车身控制中的应用
引言 20世纪80年代以来,随着集成电路和单片机在汽车上的广泛应用,汽车上的电子控制单元越来越多,例如电子燃油喷射装置、防抱死制动装置(ABS)、安全气囊装置、电控门窗装置和主动悬架等等。在这种情况下,如果仍采用常规的布线方式,即电线一端与开关相接,另一端与用电设备相通,将导致车上电线数目的急剧增加,使得电线的质量占整车质量的4%左右。另外,电控系统的增加虽然提高了轿车的动力性、经济性和舒适性,但随之增加的复杂电路也降低了汽车的可靠性,增加了维修的难度。为此,改革汽车电气技术的呼声日益高涨。因此,一种新的概念——车用控制器局域网络CAN应运而生。 CAN是控制器局域网络(Controller Area Network)的简称
[应用]