用PIC18F458的CAN模块实现CAN总线通信

发布者:素雅之韵最新更新时间:2012-01-20 来源: dzsc关键字:PIC18F458  CAN模块  CAN总线通信 手机看文章 扫描二维码
随时随地手机看文章
  CAN(Controller Area Network)即控制器区域网,是一种主要用于各种设备监测及控制的网络。CAN 具有独特的设计思想, 良好的功能特征和极高的可靠性,现场抗干扰能力强。其在国内外工业控制领域已经被广泛应用, 成为最有发展前途的现场总线之一。

  美国微芯公司的PIC18F458 单片机集成了CAN 通信接口,执行Bosch 公司的CAN2.0A/B 协议。它能支持CAN1.2、CAN2.0A、CAN2.0B 协议的旧版本和CAN2.0B现行版本。使用PIC18F458 单片机的嵌入式系统, 可以很方便的利用CAN 总线与外界进行数据交换。它的优点是电路接口比较简单,只需很少的外围电路就可实现CAN 通信, 受硬件限制比较少;软件编程容易实现所需功能, 只需对相关寄存器进行正确设置即可。

  1 硬件接口电路

  PIC18F458 与CAN 驱动芯片PCA82C250T 的接口电路如图1 所示。PCA82C250T 是驱动CAN 控制器和物理总线间的接口, 提供对总线的差动发送和接收功能。电阻R 作为CAN 终端的匹配电阻;电感L 起滤波作用。

  2 CAN 控制器的操作

  2.1 初始化CAN 控制

  在使用CAN 之前, 必须对它的一些内部寄存器进行设置, 如CAN 控制寄存器CANCON 、波特率寄存器BRGCONx 的设置以及对邮箱进行初始化。

  波特率寄存器BRGCONx(x=1,2, 3)决定了CAN 控制器的波特率、采样次数、同步跳转宽度和重同步方式,对波特率寄存器的配置步骤如下:

  设置CANCON 寄存器中的C A N 操作方式请求位为1xx,即REQOP=1xx;

  判断CANSTAT 寄存器中的操作方式状态位是否为100,即OPMODE 是否为100,如OPMODE=100 则进入下一步;

  设置BRGCONx(x=1,2,3)寄存器,即配置正确的波特率, 同步跳转宽度、采样次数和重同步方式;

  设置发送邮箱和接收邮箱的标识符、邮箱数据长度、屏蔽寄存器、滤波寄存器以及初始化邮箱的数据区;

  设置CANCON 寄存器中的CAN 操作方式请求位为000,即REQOP=000,使CAN 模块进入正常工作方式;

  判断CANSTAT 寄存器中的操作方式状态位是否为000,即OPMODE 是否为000,如OPMODE=000 则进入下一步;

  寄存器配置和邮箱初始化完成后,进入正常工作方式。

  初始化流程图如图2 所示。

  2.2 信息的发送

  PIC18F458 有3 个发送邮箱缓冲器,每一个发送缓冲器的数据长度可以设置为1 ~ 8 个字节长度, 信息发送的具体步骤如下:

  ① 初始化发送邮箱;

  ② 设置相应的发送请求位为1 ,即TXBxCON bits.TXREQ=1(x=1,2,3);

  ③ 若CAN 总线允许发送, 则启动最高优先级信息的发送;

  ④ 若发送成功,则TXREQ 被清零,TXBxIF 被置1,如果中断被使能, 则会产生中断;

  ⑤ 若信息发送失败,则TXREQ 保持为1 ,并置位相应的状态标志。

  2.3 信息的接收

  PIC18F458 有2 个具有多重接收滤波器的完全接收缓冲器和1 个单独信息组合的缓冲器。接收邮箱初始化时,要设置其标识符及相关的屏蔽寄存器、接收优先级等。

  MAB 寄存器接收所有来自总线的下一条信息,RXB0 和RXB1 则接收来自协议驱动的完整信息。MAB 接收所有信息, 但是只有满足过滤条件的信息才被传送到RXBx 中。

  3 软件设计

  下面的程序例程实现的是发送缓冲器0 向接收缓冲器0 发送数据的自测试模式, 其中接收采用中断方式,发送采用查询方式。该程序实现了PIC18F458 单片机CAN 模块的最小程序, 经过适当修改即可用于实际工程程序中, 并在实现工程中验证了它的正确性。

关键字:PIC18F458  CAN模块  CAN总线通信 引用地址:用PIC18F458的CAN模块实现CAN总线通信

上一篇:如何提高485总线系统的可靠性
下一篇:并行外围接口在红外视频处理通用模块中的应用研究

推荐阅读最新更新时间:2024-05-02 21:52

基于嵌入式系统的CAN模块设计与实现
随着信息技术技术的飞速发展,ARM技术方案架构作为一种具备低功耗、高性能、以及小体积等特性的32位嵌入式微处理器,得到了众多的知识产权授权用户,其中包括世界顶级的半导体和系统公司。目前已被广泛的用于各类电子产品,汽车、消费娱乐、影像、工业控制、海量存储、网络、安保和无线等领域。被业界人士认为,基于ARM的技术方案是最具市场前景和市场优势的解决方案。   现场总线CAN是为解决现代汽车中众多的电控模块之间的数据交换而开发的一种串行通信协议。由于其具有多主站依据优先权进行总线访问,采用非破坏性总线仲裁,可完成对通信数据的错误检验和优先级判别,数据长度最多为8个字节,传输时间短,受干扰的概率低,抗干扰能力较强,通信速率最高可达1Mbit/
[应用]
基于CAN总线模块的网络测控系统的实现
  1 引言        CAN总线控制网络和因特网采用统一的协议标准是 CAN总线控制网络和因特网集成的方式之一,目前,它还是一个探索性的工作。虽然嵌入式控制的应用已经十分广泛,但是 CAN总线控制网络和因特网采用统一的协议标准还是一个崭新的课题。这种方式将成为控制网络和因特网络完全集成的最终解决方案。由于分布式控制网络采用了面向不同应用的协议标准,因此二者集成时需要某种数据格式的转换机制,这将使系统复杂化,而且也不能确保数据的完整性。本文给出了基于 CAN总线模块的网络测控系统的各个硬件模块,以及 CAN通信的软件编程思想。 2 硬件系统的逻辑结构模块    2.1 分布式测控系统结构    图
[嵌入式]
基于CAN总线与RS485的DSP通信接口设计
   1.概述   现场总线是一种开放式、数字化、多点通信的控制系统局域网络,是当今自动化领域中最具有应用前景的技术之一 ,CAN总线是现场总线中的应用热点。由于CAN总线具有通信速率高、开放性好、报文短、纠错能力强以及控制简单、扩展能力强、系统成本低等特点,越来越受到人们的关注。   TI公司的TMS320LF2407型DSP微控制器以其处理能力强,外设功能模块集成度高及存储器容量大等特点广泛应用于数字化控制与通信领域。CAN总线控制器与TMS320LF2407微控制器连接,可以实现CAN总线的通信。TMS320LF2407微控制器内嵌的异步串行口(SCI)支持CPU与其它使用标准格式的异步外设之间的数字通讯,通过RS-48
[嵌入式]
STM32 CAN模块使用
简介:STM32 CAN模块使用详解.重点介绍以STM32F103E系列芯片为基础介绍CAN 总线的使用方法。CAN 总线在控制领域使用的非常广泛,如今大多数CPU芯片外围都扩展CAN接口。 1. 硬件基础 CAN总线工作需要两根数据线,RX和TX,即为输入总线和输出总线。一般CPU与外界通信需要接一个驱动芯片(这点很像UART接口),常用的CAN芯片主要有:SN65VHD230、PCA82C250T等,本系统使用SN65VHD230作为CAN接口芯片。而CPU提供的CAN接口为CAN_L和CAN_H。 2. 软件设计 在进行软件设计时,我们首先来看这样的一个结构体: typedef struct { uint32_t S
[单片机]
Linux环境下实现基于ARM9的CAN总线通信
  1.  引言   CAN(Controller Area Network)总线最早是由德国BOSCH公司提出,实现汽车环境中的微控制器通讯,在车载各电子控制装置ECU之间交换信息,形成汽车电子控制网络。由于其具有成本低,实时性好,容错性高,设计灵活等特点,目前已被广泛的应用于各种工业领域,被公认为是最有前途的现成总线之一。与此同时,随着ARM(Advanced RISC Machines)芯片及嵌入式Linux操作系统的成熟与完善,使得CAN通信的开发更为便利,应用更为广泛。本文就将从硬件,软件两方面介绍一种在Linux环境下实现基于EP9315的CAN总线通信方式。   2.  硬件介绍及其接口实现   本设计选用的是
[嵌入式]
PIC18F458CAN 模块实现CAN 总线通信
CAN(Controller Area Network)即控制器区域网,是一种主要用于各种设备监测及控制的网络。CAN 具有独特的设计思想, 良好的功能特征和极高的可靠性,现场抗干扰能力强。其在国内外工业控制领域已经被广泛应用, 成为最有发展前途的现场总线之一。 美国微芯公司的PIC18F458 单片机集成了CAN 通信接口,执行Bosch 公司的CAN2.0A/B 协议。它能支持CAN1.2、CAN2.0A、CAN2.0B 协议的旧版本和CAN2.0B现行版本。使用PIC18F458 单片机的嵌入式系统, 可以很方便的利用CAN 总线与外界进行数据交换。它的优点是电路接口比较简单,只需很少的外围电路就可实现CAN 通信,
[单片机]
用<font color='red'>PIC18F458</font> 的<font color='red'>CAN</font> <font color='red'>模块</font>实现<font color='red'>CAN</font> 总线<font color='red'>通信</font>
基于CAN总线的RS-232串口设备远程通信
摘要:阐述了CAN总线在232串口设备远程通信或自组网络中的应用,介绍了CAN到RS-232转换装置的软硬件设计方法。重点对软件设计中CAN波特率的设置、串口波特率的自动检测以及数据流控制等作为详细的叙述。 关键词:CAN 波特率 流控制 1 引言 工业设备通信通常涉及到很多硬件和软件产品以及用于连通标准计算机平台(个人计算机或工作站)和工业自动化应用设备的协议,而且所使用设备和协议的种类繁多。因此,大部分自动化应用设备都希望执行简单的串行命令,并希望这些命令同个人计算机或者附加的串行端口板上的标准串行端口兼容。RS-232是目前PC机与通信工业中应用最广泛的一种串行接口。RS-232被定义为一种在低速率串行通讯中增加通讯距
[应用]
基于单片机和MCP2510的CAN总线通信模块的设计
1 前言 CAN(Controller Area Network)总线,即控制器局域网。由于具有高性能、高可靠性以及独特的设计,CAN总线越来越受到人们的重视。德国的Bosch公司最初为了汽车监控和控制系统设计了CAN总线,现在,其应用范围已面向过程工业、机械工业、纺织工业、农用机械、机器人、数控机床、医疗器械及传感器等领域发展。CAN 总线已经形成国际标准,并已经被公认为最有前途的现场总线之一。CAN总线规范已经被国际标准化组织制订为国际标准ISO11898,并得到众多半导体器件厂商的支持,推出各种集成有CAN协议的产品。CAN总线系统智能节点是网络上报文的接收&发送站,一般由单片机和CAN控制器或二者合二为一组成。 M
[单片机]
基于单片机和MCP2510的<font color='red'>CAN总线</font><font color='red'>通信</font><font color='red'>模块</font>的设计
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved