基于C8051F040单片机的CAN总线测试模式研究

摘要:现场总线已成为数据总线领域中最为活跃的热点,CAN总线被公认为最有前途的现场总线之一,CAN总线节点的设计、调试是CAN总线通讯系统设计的重点。在此介绍了C8051F040单片机内部集成的CAN控制器,并基于C8051F040单片机设计了一个CAN通信节点,并给出了CAN节点测试模式软件设计程序,可以用于CAN总线模块的测试,节省测试时间。
关键词:C8051F040;CAN总线;测试模式;CAN控制器

    现场总线能同时满足过程控制和制造业自动化的需求,因而现场总线已成为数据总线领域中最为活跃的一个领域。现场总线的研究和应用已成为数据总线领域的热点。CAN总线(Controller Area Network)属于现场总线的范畴,它是一种支持分布式控制和实时控制的串行通信网络。CAN总线是德国博士公司在20世纪80年代为解决现代汽车中众多的控制和测试仪器之间的数据通信而开发的一种串行通信协议。由于其高性能、高可靠性、及独特的设计,CAN总线越来越受到人们的重视,其应用领域不再局限于汽车工业,而向过程工业、机械工业、纺织工业、农用机械、传感器以及航空航天等领域发展。被公认为最有前途的现场总线之一。

1 引言
    Cygnal公司开发的51系列单片机C8051F040是完全集成的混合信号系统型微控制器,其上集成可实现全功能CAN的CAN总线控制器,完全符合CAN规范2.0A和2.0B。本文利用C8051F040单片机上集成的CAN控制器,外接一个CAN收发器(PCA82C250)设计了一个CAN通信节点的硬件电路,然后详细介绍了CAN控制器测试模式的实现,可以应用于CAN通信节点的调试测试。

2 C8051F040单片机上集成的CAN控制器
    CAN控制器包括CAN核,消息存储器,消息处理器,控制寄存器和模块接口等几部分。CAN核用于协议控制和消息的串并转换;消息存储器用于存储消息对象和标志符;消息处理器用于控制CAN核和消息存储器之间的数据传输;控制寄存器用于控制和配置CAN控制器;模块接口用于MCU与CAN控制器之间交换数据。C8051F040单片机上集成的CAN控制器的消息存储器上可以存储32个消息对象,均可以被配置为发送或接收对象。CAN总线协议处理由CAN控制器独立完成,不用MCU干预,因此CAN通信占用的CPU带宽很小,C8051F040集成CAN控制器原理如图1所示。


3 CAN控制器工作模式
    C8051F040单片机上集成的CAN控制器主要有2种工作模式:正常工作模式和测试模式。可以通过将CAN控制器寄存器中的Test位置1,进入测试模式。在测试模式下,测试寄存器中的Tx1,Tx0,LBack,Silent以及Basic位均是可写的。将Test位置0后,测试寄存器的所有功能将被禁止。测试模式又可细分为沉默模式(又叫监测模式)、回送模式、基本模式以及回送和沉默模式结合等4种工作模式。通过将测试寄存器
中的Silent位置1,可将CAN核设置为沉默模式。在沉默模式下,CAN核能够接收有效数据帧和有效远程帧,但是只能在总线上发送隐性位而不能进行传输。图2为在沉默模式下CAN_TX和CAN_RX信号同CAN核的联系。通过将测试寄存器的LBack位置1,可以将CAN核设置为回送模式。在回送模式下,CAN核将它发送的消息当作接收到的消息对待,并存储在接收缓存中。


    图3为在回送模式下CAN_TX和CAN_RX信号同CAN核的联系。通过将LBack和Silent同时置1,可以将回送模式和沉默模式结合。这种模式可以应用于热自检,可以在不影响CAN系统运行的情况下,对CAN节点进行自检。在这种模式下,CAN_RX引脚与CAN核断开,CAN_TX引脚被保持为隐性位。图4为在这种模式下CAN_TX和CAN_RX信号同CAN核的联系。若将测试寄存器中的Basic置1,CAN核便工作于基本模式下。在这种模式下消息存储器不工作,即不用消息队列缓存交换数据,而把IF1寄存器用作传输缓存,把IF2寄存器用作接收缓存。

4 CAN通信节点硬件设计
    C8051F040上集成的CAN控制器是一个协议控制器,不能提供物理层驱动,需要外接CAN收发器才能挂接在CAN网络上与其他节点通信。本文采用PCA82C250收发器作为物理层驱动器。若在CAN控制器和PCA82C250之间加入光藕隔离器件可以提高系统的稳定性和可靠性,但这会增加系统的复杂性。本文的目的主要是调试CAN控制器的测试模式,所以没有使用光藕隔离器件。CAN通信节点原理图如图5所示。

5 软件设计
    基于C8051F040的CAN通信节点的软件设计主要包括3个部分:CAN节点初始化、报文发送和报文接收。熟悉这3部分程序的设计,就能写出普通的CAN通信程序。
5.1 CAN初始化
    初始化CAN控制器的一般步骤如下:
    (1)将SFRPAGE寄存器设置为CAN0_PAGE。
    (2)将CAN0CN寄存器的INIT和CCE位设置为“1”。
    (3)设置时序参数。
    (4)启动CAN控制器。
    由于本文要研究的是测试模式,所以最后要进入测试模式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/435429.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LSGO软件技术团队爬山活动

LSGO软件技术团队成立于2010年10月,主要从事的应用方向为互联网与移动互联网(UI设计,前端开发,后台开发),地理信息系统;研究方向为数据分析与计算机视觉。成立几年来为学校培养了一批优秀学生&a…

HDOJ 2526 HDU 2526 浪漫手机 ACM 2526 IN HDU

MiYu原创, 转帖请注明 : 转载自 ______________白白の屋 题目地址:http://acm.hdu.edu.cn/showproblem.php?pid2526题目描述:浪漫手机Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 362 Accepted Submissi…

2引擎帮助文档_Simcenter Amesim 16液压部分帮助文档中英文对照(2)

10/49 Hydraulic Component Design Library10/49液压元件设计库The simplest possible check valve consists of a ball which is free to move over a limited displacement.In one extreme position it is fully closed and completely blocks the flow, and in the other ex…

CAN总线技术在船舶监控系统的应用

AN(Controller Area Network),即控制局域网,是一种具有很高可靠性、支持分布式和实时控制的串行通信网络。CAN为多主方式工作,网络上任意节点均可在任意时刻主动地向网络上其它节点发送信息,而不分主从,且无需站地址等节点信息,通讯灵活。CAN协议模型结构只有3层,即只取OSI底层…

ArcGIS Engine Runtime 10 Setup步骤

首先安装ArcGIS License Manager 10 Setup 其次安装ArcGIS Engine Runtime 10 Setup 再次,拷贝service.txt文件到ArcGIS\License10.0\bin文件夹下,替换原有文件。 运行ArcGIS 许可服务管理器 - 10.0,启动服务。 最后,运行ArcGIS管…

Some Notes About Design Pattern

针对接口编程而不是实现 优先使用对象组合,而不是类继承 封装变化点 使用重构到模式,而不是直接使用设计模式 设计模式是好的面向对象设计,所以只有掌握面向对象才能更好的理解和应用设计模式 单一职责原则:一个类应该只有一个引起…

M16C

R8C/M16C提供一系列预处理指令,能够很好的优化C代码。 本文以nc30编译器为例,谈谈#pragma的用法。 1)。与内存有关的命令 #pragma ROM 将一个变量放入ROM里面,比如: #pragma ROM aa int aa; #pragma BIT 位变量申明。表…

ASP+AJAX制作无刷新新闻评论系统01

传统:上半部分评论列表直接通过数据库查询语句读取并显示,每当提交新的评论时,先传递给处理页面,处理页面处理完毕后再返回index.asp这个页面,当然index.asp是重新加载获得新的评论。  Ajax::首先列表页面…

修改Fiddler实用插件JsonViewer

在Web开发中,Fiddler是我们常用的工具,JSON是我们常用的数据格式。本文所要说的JsonViewer就是一款在Fiddler中查看JSON对象的小插件(当然它不仅仅是作为Fiddler的插件,还有独立运行版和Visual Studio的插件)。关于它的…

百度的算法面试题

第一题: 某个公司举行一场羽毛球赛,有1001个人参加,现在为了评比出“最厉害的那个人”,进行淘汰赛,请问至少需要进行多少次比赛。 淘汰赛,一场淘汰一个人,自然就需要1000场,根本不…

matlab用regress方法求ln函数_数学篇|高中数学48条秒杀型公式与方法,一定要掌握!...

「 致于学教育 」高中数学48条秒杀型公式1.适用条件:[直线过焦点],必有ecosA(x-1)/(x1),其中A为直线与焦点所在轴夹角,是锐角。x为分离比,必须大于1。注上述公式适合一切圆锥曲线。如果焦点内分(指的是焦点在所截线段上…

LSGO软件技术团队对外技术交流

LSGO软件技术团队成立于2010年10月,主要从事的应用方向为互联网与移动互联网(UI设计,前端开发,后台开发),地理信息系统;研究方向为数据分析与计算机视觉。成立几年来为学校培养了一批优秀学生&a…

国外好的软件测试网站

慢慢补充 http://www.sqaforums.com/ubbthreads.php转载于:https://www.cnblogs.com/slaughter/archive/2010/10/12/1849020.html

大型项目使用Automake/Autoconf完成编译配置

使用过开源C/C项目的同学们都知道,标准的编译过程已经变成了简单的三部曲:configure/make/make install, 使用起来很方便,不像平时自己写代码,要手写一堆复杂的Makefile,而且换个编译环境,Makefile还需要修…

java中数组的返回值是什么类型_Java数组也是一种数据类型

Java 的数组要求所有的数组元素具有相同的数据类型。因此,在一个数组中,数组元素的类型是唯一的,即一个数组里只能存储一种数据类型的数据,而不能存储多种数据类型的数据。因为 Java 语言是面向对象的语言,而类与类之间…

LSGO软件技术团队内部技术交流

LSGO软件技术团队成立于2010年10月,主要从事的应用方向为互联网与移动互联网(UI设计,前端开发,后台开发),地理信息系统;研究方向为数据分析与计算机视觉。成立几年来为学校培养了一批优秀学生&a…

Makefile.am

一般格式 文件类型 书写格式 可执行文件 bin_PROGRAMES foo foo_SOURCES xxxx.c foo_LDADD foo_LDFLAGS foo_DEPENDENCIES 静态库 lib_LIBRARIES libfoo.a foo_a_SOURCES foo_a_LDADD foo_a_LIBADD foo_a_LDFALGS 头文件 include_HEADERS foo.h 数据文件 data_DATA …

LSGO软件技术团队2015~2016学年第七周(1012~1018)总结

LSGO软件技术团队成立于2010年10月,主要从事的应用方向为互联网与移动互联网(UI设计,前端开发,后台开发),地理信息系统;研究方向为数据分析与计算机视觉。成立几年来为学校培养了一批优秀学生&a…

Oralce 9.2.0.6 到 9.2.0.8 升级 小结

13号,晚上加班,将2台数据库从9.2.0.6 升级到9.2.0.8. 因为之前有个小bug,9.2.0.6 的DataGuard中会经常不能识别备库的监听,造成Data Guard不能同步。 Oracle 的升级包,path什么的,需要从metalink上下载&…

idea查询类_Spring Security入门(三): 基于自定义数据库查询的认证实战

0 引言在笔者的上一篇文章中Spring Security入门(二):基于内存的认证一文中有提到过Spring Security实现自定义数据库查询需要你实现UserDetailsService接口,并实现loadUserByUsername(String username)抽象方法。我们可以在UserDetailsService接口的实现…