LPC2000系列CAN验收滤波的编程及应用

发布者:岭南布衣最新更新时间:2007-04-23 来源: 单片机及嵌入式系统应用关键字:干扰  隔离  电源  程序 手机看文章 扫描二维码
随时随地手机看文章
引 言

  随着信息技术的飞速发展,32位ARM微控制器以其低功耗、高性能以及小体积等特性,得到了广泛的应用。在汽车、消费娱乐、仪器仪表、工业控制、海量存储、网络、安保和无线等领域,随处可见其应用实例。因而,基于ARM的技术方案是最具市场前景和市场优势的解决方案。

  现场总线是当前工业通信领域中应用最广的技术之一。作为现场总线之一的CAN总线,以其高性能、高可靠性以及灵活的设计越来越受到人们的重视,越来越多的ARM微控制器带有CAN控制器。Philips 2000系列ARM微控制器是基于ARM7的集成有2个或4个CAN控制器的微控制器,在工业通信网络中有广泛的应用。

1 CAN总线的硬/软件设计简述

1.1 硬件设计

  LPC22000系列ARM内置CAN控制器,每一个CAN控制器都与SJA1000有相似的寄存器结构,只是寄存器访问由8位字节访问转变为32位双字访问,因而使得硬件连接相对变得简单。CAN总线驱动器使用82C250或TJA1050。为增强节点的抗干扰能力,CAN控制器与总线驱动器可不直接相连,而足通过高速光耦6N137连接。光耦部分采用的两个电源应隔离,故采用电源隔离模块。

  1.2 软件设计

  CAN节点的基本软件设计包括CAN节点初始化、报文发送、报文接收3部分。在这3部分程序的基础上可编出CAN总线通信的一般应用程序。当然,要将CAN总线应用于通信任务比较复杂的系统中,还需要编写CAN总线异常处理、验收滤波设置等内容。

2 验收滤波器的设置及工作原理

  当CAN控制器接收一完整的标识符时,将通知验收滤波器。验收滤波器响应这个信号,并读出标识符,与AF(验收滤波)RAM中的标识符表格进行匹配,以决定接收或放弃此帧信息。

  AF RAM是一个容量为512×32位(2 KB)的RAM。通过软件设置,可在RAM中存放1~5个标识符表格。图1为一个完整的AF RAM内部表格分布。

 

  为方便编程实现,把AF RAM的内容按32位模式排列,每个32位称为一个"cell"。表格就是cell的集合。前两种表格中每个cell包含2个标识符,且配置时每个cell中高位标识符小于低位标识符,否则会引起验收滤波器执行失败。接下来的2个表格,每一对范围或每一个标识符占用1个cell,而合法的扩展标识符范围表格必须以偶数个cell出现。每个表格均需按升序排列,每种表格可根据应用需要适当裁减。

3 验收滤波编程实现

  程序用C语言编制,在ADS1.2开发环境下通过JTAG接口进行实时调试、仿真和下载,并在实际应用中得到了验证。要说明的是,Fullcan模式应用较少,程序未涉及它的设置;设置了独立标准标识符和标准标识符范围表格,对标准ID{1,2,0x10,0x20}和指定范围{{90<=ID<=100}及{0x300<=ID<=0X400}}的信号进行接收,独立扩展标识符表格和扩展标识符范围表格未设置。需要设置时,可参考前两种表格的设置程序。

 

 

 

 

  在CANREG.H中,定义验收滤波模式寄存器结构如下:

  另有如下寄存器地址定义:

  另有如下定义:

  ②初始化一个独立标准标识符表格的内容。

  ③初始化一个标准标识符组表格的内容。

  ④用独立标准标识符表格内容初始化LUT的独立标准标识符表格。

  ⑤用标准标识符范围表格内容初始化LUT的标准标识符范围表格。

  ⑥模式2,启动全局验收滤波器。

  在main.c中所含的4个相关函数略。

结 语

  在SJA1000的应用中,验收滤波器只能对一些规律性较强的ID和个数较少的ID进行滤波。当需要设计复杂的验收滤波器时,以上的验收滤波模块能起到一定的作用。当然,在具体的应用场合,还需要考虑通信协议、CAN总线异常处理、CAN初始化、接收和发送等程序。

关键字:干扰  隔离  电源  程序 引用地址:LPC2000系列CAN验收滤波的编程及应用

上一篇:微控制器应用中的功耗优化技术
下一篇:ARMv7的Cortex系列微处理器技术特点

推荐阅读最新更新时间:2024-03-30 21:23

实现最佳LED电源解决方案之一:控制正向电流
前言 led厂商建议通过控制正向电流使发光二极管保持额定的光通量和特定的色温。鉴于LED的亮度与正向电流值成正比,这个控制方法是最佳的LED电源解决方案。 此外,LED的正向电压与输出功率受到结温的严格限制,特别是大功率LED更是如此;结温是众所周知的影响质量和使用寿命的关键参数。 准确地说,随着结温升高,正向电压与输出功率会逐渐降低,热漂移会导致临界电流升高。 为了通过降低正向电压解决热漂移问题,提高系统总体能效,通过PWM和/或模拟调光技术控制亮度,获得防失效管理和过热控制功能,照明系统对具有特定控制功能的LED驱动器的需求不断提高。如果给建筑照明和街道照明等应用增加价值,还
[电源管理]
实现最佳LED<font color='red'>电源</font>解决方案之一:控制正向电流
家用发电机能否让汽车跑起来?
无论你的车子是内燃引擎(ICE)汽车、混合动力车(HEV)还是纯电动车(EV),在有需要的时候(例如停电),把它用来作为基本能源为住所提供交流电(AC)使用,这可能吗? 因特网上充斥着各种资源,描述在 AC 电源中断的情况下,如何实现车辆对家庭的供电(Vehicle-to-Home,V2H)。这些方案有一些是可信的,有些并不可取,毕竟在供电时经常受到许多因素的影响,如负载、ICE/HEV 燃油箱中的燃料量,或是 EV 内部电池组的电量等。为了将 EV 的电力馈送回电网(即 Vehicle-to-Grid,V2G),业界持续不懈地努力,但这与断电时为房屋供电完全不同。 这些解决方案所采用的方法都是连接到 12V 电池,然后再
[嵌入式]
家用发电机能否让汽车跑起来?
电源是什么?
双电源是指:一种由微处理器控制,用于电网系统中网电与网电或网电与发电机电源启动切换的装置,可使电源连续源供电。CTYW5-100系列双电源,当常用电突然故障或停电时,通过双电源切换开关,自动投入到备用电源上,(小负荷下备用电源也可由发电机供电,)使设备仍能正常运行。最常见的是电梯、消防、监控上。 分类及定义 双电源主要分为PC级双电源(整体式)和CB级双电源(双断路器式) PC级双电源:能够接通、承载、但不用于分断短路电流的双电源 双电源若选择不具有过电流脱扣器的负荷开关作为执行器则属于PC级自动转换开关。不具备保护功能,但其具备较高的耐受和接通能力,能够确保开关自身的安全,不因过载或短路等故障而损坏,在此情况下保证可靠的
[电源管理]
电源的种类详解
下面还有电源方面的说明,主要还应用到电源控制方面 1. 电力电子技术的发展 现代电力电子技术的发展方向,是从以低频技术处理问题为主的传统电力电子学,向以高频技术处理问题为主的现代电力电子学方向转变。电力电子技术起始于五十年代末六十年代初的硅整流器件,其发展先后经历了整流器时代、逆变器时代和变频器时代,并促进了电力电子技术在许多新领域的应用。八十年代末期和九十年代初期发展起来的、以功率MOSFET和IGBT为代表的、集高频、高压和大电流于一身的功率半导体复合器件,表明传统电力电子技术已经进入现代电力电子时代。 1.1 整流器时代 大功率的工业用电由工频(50Hz)交流发电机提供,但是大约20%的电能是以直流形式消费的,其中最
[电源管理]
PT16312VFD驱动C程序
PT16312驱动C程序 #define uchar unsigned char #define uint unsigned int #define ulong unsigned long #define cm1 co1.co1 #define cm2 co2.co2 #define cm3 co3.co3 #define cm4 co4.co4 #include reg52.h #include mylib.h #define cmdd 0 #define datt 1 sbit dat=P1^3; sbit clk=P1^2; sbit stb=P1^1; union { uchar dat; struct {
[单片机]
一个程序就让亚马逊Echo变成了窃听器
几百万台 Echo 都处在危险之中。 现在的“ 智能音箱 ”之所以称为智能,是因为它时时刻刻可以听到你说话。于是信息安全就是个大问题,之前 亚马逊  Echo 已经出现了录音悄悄上传,后被卷进凶杀案的新闻。 日前有黑客破解了亚马逊的智能音箱 Echo,把它变成了一个真的远程窃听器。 英国研究员 Mark Barnes 发现,在2017年之前生产的 Echo 音箱底部,去掉橡胶底座之后,扣开一个金属底板,可以找到一个用于出厂前调试的18 针接口。Mark Barnes 制作了一个插头,把 Echo 连上了笔记本电脑和 SD 读卡器。   他利用调试工具破解了 Echo 的系统,写进去了一个专用的引导程序。然后这台 Echo 所
[嵌入式]
ARM与51编写程序的区别
测试环境:KEIL (1) int变量 在51 占2个字节;在ARM占4个字节 (2)结构体对齐 在51是按照一个字节对齐; 在ARM是按结构体默认对齐规则对齐 (3)字节在内存的排列顺序 在51是大端 ; 在ARM大多数是小端,但有的可以大小端选择。 在大端存储格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中 在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节 (大端,小端的堆栈方向不同,大端是向上生长,小端是向下生长)所以大端初始化的SP往往是地址低端,而小端初始化的SP往往是地址高端 (4)函数体中的局部变量,在C51中存放
[单片机]
大神教你快速上手:标准80C51单片机模拟I2C总线的主机程序
I2C总线协议程序 在做程序是我在网上找的是周立功的程序,感觉还不错顺便转载;在使用的过程中一定要注意时序、时间的问题。 “i2c.h文件” //I2C总线综合发送函数,向从机发送多个字节的数据 I2C读写EEPROM流程图 bit I2C_Puts( unsigned char SlaveAddr, unsigned int SubAddr, unsigned char SubMod, char *dat, unsigned int Size ); //I2C总线综合接收函数,从从机接收多个字节的数据 bit I2C_Gets ( unsigned char SlaveAddr, unsigned int SubAddr
[单片机]
大神教你快速上手:标准80C51单片机模拟I2C总线的主机<font color='red'>程序</font>
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新工业控制文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved