0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于8位高性能微控制器P87C591实现嵌入式CAN控制器的设计

电子设计 来源:世界电子元器件 作者:邓柯军;李伟 2020-04-10 08:05 次阅读

引言

现场总线技术是一种基于现场设备之间进行数据通讯的新型总线系统,它综合了计算机技术、数字通讯技术、自动控制技术、网络技术和智能仪表等各种技术手段,从根本上突破了传统的“点对点”式的模拟信号或数字—模拟信号控制的局限性,构成了一种全分散、全数字化、智能化双向、互连、多变量、多结点的通信控制系统

CAN总线是德国BoSCH公司为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通讯协议。CAN总线以其高性能、高可靠性及其独特的设计越来越受到人们的重视,并被公认为是汽车电控系统中最有前途的总线之一。奔驰、宝马、大众等一些国际著名汽车生产厂家已经在各自的产品中采用了CAN总线技术。目前,国内的汽车生产厂家也已经开始重视该项技术。毫无疑问,CAN总线技术将是今后车载网络领域的主流协议标准。

P87C591芯片的特点

P87C591是一个单片8位高性能微控制器,除了80C51的标准特性之外,器件还为实际应用提供许多专用的硬件功能。片中带16K字节内部程序存储器,可外部扩展到64K字节;512字节片内数据RAM,可外部扩展到64K字节;并且有3个16位定时/计数器T0, T1(标准80C51)和附加的T2(捕获&比较),2个8位分辨率的脉宽调制输出(PWM),包含一个看门狗定时器T3。P87C591中包括4个中断优先级,l5个中断源,为编写高效率的程序软件提供了强大的硬件支持。

P87C591是NXP半导体公司推出的带有在片CAN控制器SJA 1000的新型微控制器。它完全履行CAN 2.0规范并提供一个独立CAN控制器的软件移植路径。其中包括增强型验收滤波器、支持系统维护、诊断、系统优化以及接收FIFO特性。该嵌入式CAN控制器包括了具有CAN的扩充特性。该嵌入式CAN控制器包括了下列功能模块:

① CAN内核模块根据CAN 2. 0规范控制CAN帧的接收和发送。

② CAN接口包含5个实现CPU与CAN控制器连接的特殊功能寄存器。

③ CAN控制器的发送缓冲区能够保存一个完整的CAN信息格式。只要通过CPU启动发送,信息字节就从发送缓冲区传输到CAN内核模块。

④ 所有验收滤波器验收的接收数据都保存在接收FIFO中。取决于操作模式和数据长度的不同,最多可存放21个CAN信息。

⑤ 当接收一个信息时,CAN内核模块将串行位流转换成并行数据输入到验收滤波器,通过该可编程滤波器,P87C591确定实际接收到的信息。

P87C591微控制器内部总线通过80C51微处理器接口与PeIiCAN相连。通过CANADR(地址)、CANDAT(数据)、CANMOD(模式)、CANSTA(状态)和CANCON(控制)5个特殊功能寄存器对PeIiCAN寄存器和RAM区进行访问。图1为P87C591的功能框图。

基于8位高性能微控制器P87C591实现嵌入式CAN控制器的设计

基于P87C591的CAN总线控制系统的设计研究

硬件电路设计

本文所设计的控制系统的CAN总线节点硬件电路由微处理器(P87C591)、CAN总线通信接口收发器(NXP公司的82C250)和功能装置(传感器、执行器等)组成。如 图2所示为控制系统CAN总线节点通讯相关的硬件电路原理图。由于P87C591本身含有CAN模块,因此不需要外加CAN控制器,所需要的外部元件仅仅是一个晶振加两个电容,一个连接到复位脚的电容(使用片内复位电路)以及一个收发器用于将P87C591连接到CAN总线。

为了防止干扰,在CAN总线节点硬件设计上采取了以下措施:

①82C250与CAN总线的接口部分采取了抗干扰措施。82C250的CANH和CANL引脚各自通过一个5? 的电阻与CAN总线相连,电阻可起到一定的限流作用,保护82C250免受过流的冲击。CANH和CANL与地之间并联了两个30pF的小电容,可以起到滤除总线上的高频干扰和一定的防电磁辐射能力。另外在两根CAN总线接入端与地之间分别反接了一个保护二极管,当CAN总线有较高的负电压时,通过二极管的短路可起到一定的过压保护作用。

② 总线两端应接有两个120?电阻,对于匹配总线阻抗起着重要的作用,忽略掉它们会使数据通信的抗干扰性及可靠性大大降低甚至无法通信。

软件设计

在CAN总线程序设计中,初始化程序是整个软件设计中的重点和难点,它直接关系到系统能否正常工作。对CAN 控制器进行初始化,实际上就是对集成CAN控制器的P87C591芯片中的寄存器进行初始化设置,并对报文接收缓冲区进行设置。内容包括:操作模式、TXDC输出管脚的配置、总线定时、验收滤波器、中断等。CAN控制器初始化流程图如图3所示。

对于CAN控制器的初始化,只与表1中所列寄存器相关。大多数CAN寄存器具有一个方便的恢复特性,在硬件复位或使CAN控制器进入复位模式后用户配置可保持不变(表1中标注“不变”)。

CAN初始化子程序如下:

void init_can_controller(void)

{

/*进入CAN控制器复位模式*/

CANMOD=0x01; /*将CAN控制器设置为复位模式以启动初始化*/

/*TXDC Port (P1.1)配置*/

P1M2=P1M2|0x02; /*管脚TXDC设置为推挽模式*/

/*配置与CAN有关的中断*/

CANSTA=0x03; /*使能接收和发送中断*/

/*CAN位定时的配置*/

CANADR=BTR0; /*BTR0和BTR1编程为100kbit/s,在16MHz条件下*/

CANDAT=0x00;

CANADR=BTR1;

CANDAT=0x14; /*用户可根据具体的CAN网络来调整BTR0、BTR1的参数*/

/*验收滤波器1配置为接收ID=10000000XXX*/

CANADR=ACR0; /*将地址设置到验收代码寄存器0(BANK1)*/

CANDAT=0x80; /*验收代码0用于滤波*/

CANADR=AMR0; /*将地址设置到验收屏蔽寄存器0(BANK1)*/

CANDAT=0x00; /*BANKl:与验收屏蔽0有关*/

CANDAT=0xFF; /*BANKl:与验收屏蔽1无关,允许任何数据通过滤波器*/

CANDAT=0xFF; /*BANKl:与验收屏蔽2无关,允许任何数据通过滤波器*/

CANDAT=0xFF; /*BANKl:与验收屏蔽3无关,允许任何数据通过滤波器*/

CANADR=ACFMOD; /*将地址设置到ACF模式寄存器*/

CANDAT=0xFF; /*单验收滤波器使用29位ID(EFF)*/

CANADR=ACFPRIO; /*将地址设置到ACF优先级寄存器*/

CANDAT=0xFF; /*所有滤波器都为高优先级*/

CANADR=ACFEN; /*将地址设置到ACF使能寄存器*/

CANDAT=0x01; /*使能Bankl的验收滤波器*/

/*选择操作模式退出CAN控制器复位模式*/

CANMOD=0x00; /*使CAN控制器进入操作模式*/

}

结束语

本 文从硬件和软件的角度对内嵌CAN控制器(SJA1000)的P87C591进行了详细的介绍,不仅给出了P87C591的CAN总线硬件电路原理图,还给出了CAN总线的初始化子程序。P87C591是个高性能的CAN微控制器,可用于汽车和通用的工业应用。尤其在汽 车 车身控制系统中它可以发挥很好的作用,通过使用该系统进行CAN总线的车身控制,可以简化线路,减少车内线束连接的复杂性,保证信号无干扰、实时的传输,并且实现系统实时诊断、测试和报警功能。随着汽车电子技术的发展,其在汽车电控系统中必将得到更广泛的应用。

责任编辑:gt


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    7482

    浏览量

    151014
  • 嵌入式
    +关注

    关注

    5068

    文章

    19008

    浏览量

    302989
  • CAN
    CAN
    +关注

    关注

    57

    文章

    2714

    浏览量

    463330
收藏 人收藏

    评论

    相关推荐

    如何为嵌入式应用选择合适的微控制器

    嵌入式应用选择合适的微控制器可能是一项至关重要的任务。不仅有各种各样的技术选择需要考虑,还有商业案例问题,如价格和交付时间可能会削弱项目。在项目或嵌入式系统应用程序开始时,很有可能在嵌入式
    发表于 12-21 17:58

    STM8微控制器系列产品

    STM8系列微控制器8微控制器平台基于高性能8
    发表于 07-10 07:00

    STM32F030C8T6微控制器有哪些性能

    意法半导体MCU STM32F030C8T6微控制器集成了以48 MHz频率运行的高性能Arm内核M0 32RISC内核,高速嵌入式存储
    发表于 12-09 07:20

    GD32E5高性能微控制器

    GD32E5高性能微控制器,采用台积电低功耗40纳米(40nm)嵌入式闪存工艺构建,具备业界领先的处理能力、功耗效率、连接特性和经济的开发成本。推动嵌入式开发向高精度工业
    发表于 12-16 08:13

    基于P87C591CAN总线系统智能节点设计

    基于P87 C591CAN总线系统智能节点设计Design of CAN System Intelligent Node Based on P87
    发表于 03-30 16:55 45次下载

    P87C591内嵌CAN控制器的应用设计

    独立的CAN 控制器芯片需要外接一个微处理,接受外部CPU 的控制才能运行。如果微处理内部带有CAN
    发表于 04-15 09:32 16次下载

    低成本嵌入式多媒体微控制器的设计与实现

    本文针对低成本嵌入式应用设计实现了一个介于微控制器(MCU)与数字信号处理(DSP)之间的多媒体功能强化的微控制器架构(ME-MCU),它
    发表于 08-19 11:11 21次下载

    基于P87C591CAN总线超声测距系统设计

    基于P87C591CAN 总线超声测距系统设计作者: 齐齐哈尔大学 董晶 刘树东戴学丰 绍林来源:单片机与嵌入式系统应用摘要介绍一种以Philips 公司的P87C591 作为超声
    发表于 02-06 12:23 32次下载

    CAN 2.0B 标准新型16 微控制器

    CAN 2.0B 标准新型16 微控制器 飞利浦半导体日前宣布推出高性能16 XA 微控制器
    发表于 03-20 14:24 32次下载

    基于P87C591的信号采集节点的设计

    介绍了CAN总线和P87C591单片机的特点,给出了基于P87C591单片机的信号采集节点的软、硬件设计,指出了硬件电路设计中应注意的问题,在软件设计中重点介绍了节点初始化、报文发送
    发表于 12-07 14:10 17次下载

    基于P87C591CAN总线超声测距系统设计方案

    基于P87C591CAN总线超声测距系统设计方案  介绍一种以Philips公司的P87C591作为超声波传感控制核心及
    发表于 03-29 15:08 1119次阅读
    基于<b class='flag-5'>P87C591</b>的<b class='flag-5'>CAN</b>总线超声测距系统设计方案

    基于P87C591CAN总线信号采集节点的设计

      介绍了CAN总线和P87C591单片机的特点,给出了基于P87C591单片机的信号采集节点的软、硬件设计,指出了硬件电路设计中应注意的问题,在软件设计中重点介绍了节点初始化、报文发
    发表于 12-10 10:04 2611次阅读
    基于<b class='flag-5'>P87C591</b>的<b class='flag-5'>CAN</b>总线信号采集节点的设计

    P8xC591_微控制器在_CAN_中的应用

    P8xC591 是一个高性能CAN 微控制器 可用于汽车和通用的工业应用 除了具有 Philips Rx+内 核 的增强特性之外 器件还为这些应用提供许多专用的硬件功能。
    发表于 01-19 15:28 10次下载

    高性能16XA微控制器系列

      飞利浦半导体日前宣布推出高性能16XA微控制器系列的新成员XA-C3,专门用于“控制器区域网路(C
    发表于 09-20 12:21 5次下载

    CAN 控制器的单片8 微控制器

    CAN 控制器的单片8 微控制器
    发表于 09-22 10:06 8次下载
    带<b class='flag-5'>CAN</b> <b class='flag-5'>控制器</b>的单片<b class='flag-5'>8</b> <b class='flag-5'>位</b><b class='flag-5'>微控制器</b>