历史上的今天

今天是:2024年09月16日(星期一)

2020年09月16日 | CAN智能节点的设计

发布者:幸福如意 来源: elecfans关键字:CAN  智能节点  MSP430 手机看文章 扫描二维码
随时随地手机看文章

摘要:CAN总线是一种流行的实时性现场总线,文中提出了一种基于MSP430单片机,并以MCP2510为CAN控制器的智能节点设计方案,该方案利用MSP430通过标准SPI接口可实现对MCP2510的控制,并能够完全实现CAN总线规范。


1 引言

CAN总线是控制器局域网(Controller Area Net-work)总线的简称,它属于现场总线范畴,是一种能有效支持分布式控制或实时控制的串行通信网络,它可将挂接在现场总线上作为网络节点的智能设备连接成网络系统,并进一步构成自动化系统,从而实现基本的控制、补偿、计算、参数修改、报警、显示、监控、优化及控管一体化的综合自动化功能。


CAN总线智能节点在分布式控制系统中起着承上启下的作用。它位于传感器和执行机构所在的现场,一方面和上位机(PC或者工控机)进行通信,以完成数据交换;另一方面又可根据系统的需要对现场的执行机构或者传感器进行控制和数据采集。它常常将一些简单的过程控制程序放在底层模块中,从而减少了通信量,提高了系统控制的实时性。因此,智能化模块设计在CAN系统中有着十分重要的作用。


本文将给出一种用MSP430单片机和MCP2510 CAN控制器组成的总线智能节点的设计方案(见图1),该方案中的单片机和CAN控制器通过标准的SPI接口进行通信,因此,该节点能够完成对被控器件的数据采集上报,并接受上位机的命令,进而进行解析以完成对执行机构的控制。为了调试简单,本方案作了一些改动:一是使MCP2510工作在环回模式,也就是数据由发送缓存直接发送到接收缓存,由于不经过CAN收发器和CAN总线,而只是使用了它的一个发送缓存和一个接收缓存,因而方便了调试;二是把被控器件的数据采集和对执行机构的控制部分略去,而这些功能在以后可以方便地添加,这样,在实际使用时,只要对程序稍作修改就可应用。

2 硬件设计

本设计的整个接口模块主要由两部分组成:CAN控制器MCP2510和微控制器MSP430。图2所示是该智能节点的部分电路硬件原理图。下面对主要部分功能作一介绍。


2.1 MSP430F1232简介

MSP430系列微控制器是TI公司推出的功能强大的超低功耗16位微处理器。它集成了丰富的片上外围资源,因而开发方式十分简便,可以用C语言编写出效率很高的程序。所选MSP430F1232的工作电压为1.8~3.6V,内含8kB FLASH存储空间。片内集成了看门狗定时器(WTD)、基本时钟模块、US-ART、10位ADC、和带有3个捕获/比较器的16位定时器,因而片上资源十分丰富,完全可以满足一般的需要,同时减少了设计的复杂度。与其它单片机相比,MSP430的I/O端口功能更强,可实现双向的输入、输出,并可完成一些特殊的功能,如A/D转换、捕获比较等;另外,它还可以实现I/O的各种中断。


本设计中,MSP430的作用有两个:一是对执行机构的控制以及对输入模拟量或者开关量的信号采集;二是利用UART模块通过SPI模式与MCP2510通信并控制MCP2510以实现CAN规范。

2.2 MCP2510简介

MCP2510?1?是Microchip公司推出的功能很强的CAN控制器芯片,它支持CAN1.2、2.0A及2.0B规范;其内部结构见图3所示。该芯片内含3个发送缓存和2个接收缓存,可以对发送优先级进行管理,可滤除无用信息,MCP2510有6个可编程滤波器,而且中断资源十分丰富。最可贵的是,它可以通过标准的SPI接口与微控制器进行通信,从而放宽了MCU的选择范围?使得所有单片机都有接入的可能。


MCP2510的主要功能是在MCU的控制下实现CAN规范,它内部的所有寄存器和控制寄存器都映射到一个地址表上,MCU可以使用相应的命令格式通过标准的SPI接口来完成对MCP2510的初始化、工作状态的控制以及数据的读写。此外,MCP2510产生的中断还可以反馈给MCU来处理。


2.3 系统时钟

由于MSP430的时钟频率决定着指令周期,因而该时钟直接影响SPI接口的速率。MSP430F1232有两个可选的时钟:一是外部低速32.768kHz的时钟晶体;二是采用内部数控DCO的可调频率。本设计直接采用它内部的数控DCO作为它的主时钟MCLK和SMCLK,由于直接工作在800kHz,因而免去了使用晶体。MCP2510采用标准的4MHz晶体。MSP430中USART模块的CLK可由系统时钟分频得到,速率设定也十分方便。实际上,MCP2510输出到总线的速率也可通过设置内部寄存器的控制分频系数来调节。


此外,由于MCP2510的输出信号驱动能力不够,而且与CAN总线物理接口的要求存在很大的差异,所以,在实际应用中必须使用CAN收发器(如MCP2551等),它可支持的CAN速率最高可达1Mbps,而且容错能力很强。此外,它内部还有很强的保护电路,可以防止总线的其它节点对它的影响。

3 软件设计

在进行本系统节点的软件设计前,首先简要说明一下MCP2510的指令格式,MCP2510的5条指令如表1所列。

表1 MCP2510指令格式

 

指  令指令格式

说     明

复位1100 0000使内部寄存器复位,进入配置模式
读取0000 0011从寄存器读取数据,指令在前,地址随后
写入0000 0010写数据到寄存器,指令在前,地址和数据随后
发送请求1000 0nnn对发送缓存发送信息进行初始化
状态读取1010 0000读取常用状态寄存器的某些位数据
位修改0000 0101对豁口的某几件位修改

 

在使用时,可以把这些指令直接编写成函数形式,这样可使程序简练易读。同时,发送请求的硬件触发只需把TXnRTS置低即可。实际上,接收缓存收到信息后也能产生硬件触发,并在TXnRTS引脚产生低电平输出。

本设计的主程序流程图如图4所示。


上电复位后,MSP430首先完成自身外围模块的初始化,其任务主要是选择时钟模块中的时钟、使USART模块工作于SPI模式、以及对看门狗定时器的配置等;然后对MCP2510进行初始化,以对寄存器进行设置。需要注意的是,MCP2510只有在配置模式下才可以对控制参数进行配置,但它在复位以后就是配置模式。


当配置MCP2510到环回模式后,MSP430将写数据到MCP2510的发送缓存并控制其发送,此后,在接收缓存收到数据后,INT引脚将产生低电平中断以通知MSP430,MSP430响应中断后将读取数据,并和发送的数据进行比较,以验证程序的可行性。需要注意的是,无论是对MCP2510的读还是写,都必须使它的CS引脚处于低电平。


在实际应用中,MSP430和MCP2510都可以进入睡眠模式,并可以由中断来激活。整个节点的主要功能均由中断子程序来完成,其中的一部分是MSP430自身的中断(看门狗定时器溢出中断、SPI接收发送中断、ADC中断等),另一部分是MCP2510引起的中断,这部分中断资源十分丰富,包括信息接收发送中断、信息错误中断、总线激活中断等。它产生的所有中断都能使INT引脚为低电平, 单片机在检测到这些中断后,将通过SPI接口读取MCP2510内部的中断标志寄存器以判断是何中断,然后再进行进一步处理。

4 结束语

MSP430和MCP2510的很多实用功能本文还没有进一步开发,只是作了一个简单测试系统,而且许多实际应用中需要注意的问题也没有考虑到,需要进一步完善。此外,由于MCP2510使用标准的SPI接口与单片机通信,所以加上它可以不更换单片机,而只需对程序稍作修改即可,因此,采用该方案几乎可以在任何现有系统上实现CAN总线功能。

关键字:CAN  智能节点  MSP430 引用地址:CAN智能节点的设计

上一篇:一种便携式多参数环境监测仪的设计
下一篇:TI MSP430F22xx系列的主要特性及无线RFID开发方案

推荐阅读

Strategy Analytics刚刚发布的研究报告《2018年拥有语音控制的智能家居设备》预测,由于智能音箱的普及,语音控制在市场中占据了一席之地,但它并未在智能家居中终结。报告称,拥有语音控制的智能家居设备(不包括智能音箱)的销量将从2018年的15.4万台跃升至2025年的3230万台。霍尼韦尔的语音控制Lyric恒温器在2014年CES上推出后 ,有一些公司已经加入...
苹果公司今天正式发布了 iPhone 11 等硬件新品,而据 DigiTimes 报道,苹果供应商正在准备组装下一代 AirPods,最快将于今年 10 月开始量产。  今年 4 月知名苹果分析师郭明錤就曾预测,两款全新 AirPods 将于 2019 年第四季度至 2020 年第一季度进入大规模量产;其中一款将会是高端产品,具有全新设计,价格也更加昂贵,另外...
在近日闭幕的第十五届中国研究生电子设计竞赛全国总决赛(简称“研电赛”)中,来自全国各地高等院校及科研院所的共计66支参赛队伍,借助德州仪器 Sitara系列产品 AM5708的工业派(IndustriPi)开源智能硬件开发平台以及配套了以ARM+DSP+GPU异构多核、性能更强的“工业派”为核心控制器的TI-RSLK专家版作为赛题的基础开发工具,进行了如火如荼的比赛,并创...
大家好,在第68期视频中,我们与大家共享了捕获欠幅波形的几种方法,ZDS2022示波器为您提供了11种基础触发,还标配了21种协议触发方式,功能非常丰富。其实,对于欠幅波形来说,ZDS2022示波器还有一种玩法,就是欠幅搜索功能!我们向ZDS2022示波器输入一个混有欠幅的信号,按下【Horiz】键,将储存深度设为112Mpts,转动水平时基旋钮使水平时基档位设为5ms...

史海拾趣

问答坊 | AI 解惑

汇编

本帖最后由 paulhyde 于 2014-9-15 09:23 编辑 请问一哈我要做单片机最小系统是用汇编写还是用c写好哇。。。。。我看大家都是汇编哇  …

查看全部问答∨

如何从桌面系统下安装WinCE平台下Pocket PC应用程序

看论坛上经常有人问,如何从桌面系统下安装WinCE平台下Pocket PC应用程序。特此把以前参考VCHelp上雷神的安装制作写的一个Win32 安装WinCE应用系统的程序,放了上来。希望能为在制作WinCE下应用程序安装程序提供一些参考。具体步骤如下: 1.在VS.N ...…

查看全部问答∨

关于 WINCE6.0开发者参考中的问题

书中第一章时,教我们搭建开发环境时,提到了一个特别定制的SDK可以下载,可是我到书中所给的链接上却没有找到。 还有,我在运行HELLO1这个程序是,编译已经通过,但是运行时提示“出现部署错误”,是什么原因呢?我安装的是VS2005+SP1补丁包,是 ...…

查看全部问答∨

大伙推荐一个能在wince 5.0下比较好用的wap浏览器

开发了一wap网站,在一win ce 5.0系统的手机上访问老是出现问题,注意不是windows mobile系统。 有的时候页面传参数传不了,有的时候下拉框无效,而且不支持选项卡,用的浏览器是UCWEB 6.0,不知道是系统问题还是浏览器问题 在ucweb官方网站上找 ...…

查看全部问答∨

Evc程序转换到vc下的问题

我有一个EVC下对文件操作的程序,现在想看其中文件的内容,想将程序转换到vc下,输出文件中的内容来看,该如何转换以及注意点什么啊?还有在EVC下的编译能通过的程序为什么在vc下总是报错啊?…

查看全部问答∨

应用层在调用DeviceIoControl后都做了什么?

请教下,应用层在调用DeviceIoControl后,怎么和驱动进行沟通,我只知道有个什么IRP,中间具体怎么回事不太清楚,谁能讲一下?或者提供点资料,谢谢!…

查看全部问答∨

wince应用程序开发vs和evc的代码区别

用Visual Studio2008 新建了一个智能设备中的MFC智能设备应用程序。跟EVC建立的MFC应用程序比较了一下,发现vs2008的代码模板好麻烦啊,而且好像不是消息处理机制了,那么在EVC上使用的代码能在VS2008运行吗?现在的教材都是在EVC上开发的,一用vs2 ...…

查看全部问答∨

高级技巧讨论:关于描述表达方法

  今天和一个同事研究以前一个同事留下的代码, 发现代码中经常用如下语句的表达方法:   / UART控制开关: 0 - 接收; 1 - 发送 always@(posedge rst or posedge clk)begin if (rst) begin  uart_sw <= #1 1\'b0;& ...…

查看全部问答∨

430单片机I2C寻址问题

I2C通信中,430单片机需先发送从机地址,请问那个从机的地址在哪里查询?是跟430I2C通信引脚有关,还是在跟单片机连接的I2C通信芯片手册中可以查到??…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved