logo资料库

基于SJA1000的CAN总线设计详细资料,绝对超值!!!.pdf

第1页 / 共97页
第2页 / 共97页
第3页 / 共97页
第4页 / 共97页
第5页 / 共97页
第6页 / 共97页
第7页 / 共97页
第8页 / 共97页
资料共97页,剩余部分请下载后查看
CANCANCANCAN 学习笔记 1111 VerVerVerVer 0.020.020.020.02 更新: 01010101 ---- 目录,更换其中‘CANCANCANCAN’字体,有宋体改为 ArialArialArialArial 字体 02020202 ---- 37373737 页,位选码已经根正 sja1000.h 03030303 ---- 56565656 页,sja1000.h sja1000.h sja1000.h 头文件加入 宏定义声明 04040404 ---- 63636363 页,TempTempTempTemp 改为 temp temp temp temp 05050505 ---- 83838383 页, 更改了初始化流程图 06060606 ---- 84848484 页, 初始化函数源码时 07070707 ---- 85858585 页, 更改了发送流程图 08080808 ---- 86868686 页, 修改了源码的注释 90~94 09090909 ---- 90~94 90~94 90~94 页, 修改了大部分不明白的注释 1
前言: 创建该笔记的原因主要是为了总结自己学习 CAN,我承认笔记的内容记录得非常零散而且不 全,不过内容已经足够让自己明白在学什么了,这本笔记来得有点匆忙,因为是在学期休假 中编辑的,为期两个星期。我的性格是属于不爱说话的那种,所以在编辑笔记的时候不知不 觉融入了自己的习惯,图文很多,借签内容也很多,估计读、浏览起来会有点吃力。笔记是 已第五版为基础进行编辑的(也可以看成是第五版的不完全手册吧),里边也加了自己一些编 写源码的习惯,写得不是很好,恰恰有参考的份量。 笔记适合那些喜欢使用 C 语言和有 STC89c5X 单片机编程基础的人,见笑了不会汇编语言(该 学期才开始学汇编)。嗯,话说多了... 最后想感谢的人就是-EDN 社区里的娜娜小姐(黄娜), 从国外购入学习板的时候麻烦了她很多很多,很感激她。 akuei2 上 2
目录 CANCANCANCAN 总线活动讲座一:写在 CANCANCANCAN 总线开发板助学之前 CANCANCANCAN 学习讲座之二:回顾一下老朋友:单片机 CANCANCANCAN 总线活动讲座三:51515151 单片机系统的组成 -MCU CANCANCANCAN 总线活动讲座四:CANCANCANCAN 开发板硬件-MCU -MCU -MCU 部分 CANCANCANCAN 总线活动讲座五:CANCANCANCAN 开发板硬件----按键和电源部分 CANCANCANCAN 总线活动讲座六:CANCANCANCAN 开发板硬件----显示单元 CANCANCANCAN 总线活动讲座七:CANCANCANCAN 开发板硬件----串口通讯 CANCANCANCAN 总线活动讲座八:无线接口、温度测量以及 USBUSBUSBUSB 下载配件 CANCANCANCAN 总线活动讲座九:CANCANCANCAN 总线硬件设计 CANCANCANCAN 总线活动讲座十:CANCANCANCAN 总线基础扫盲讲座 CANCANCANCAN 总线活动讲座十一:CANCANCANCAN 总线硬件设计 CANCANCANCAN 总线与485485485485总线比较 CANCANCANCAN 总线活动讲座十二:CANCANCANCAN 控制器的选择 CANCANCANCAN 总线活动讲座十三:CANCANCANCAN 协议简单介绍 SJA1000 CANCANCANCAN 总线活动讲座十三(插入篇一):SJA1000 SJA1000 SJA1000 芯片的概述 CANCANCANCAN 总线活动讲座十三(插入篇二):CANCANCANCAN 总线驱动器 82828282CCCC250250250250 的概述 SJA1000 CANCANCANCAN 总线活动讲座十四:SJA1000 SJA1000 SJA1000 重要的寄存器 CANCANCANCAN 总线活动讲座十五:CANCANCANCAN 总线硬件调试及软件编程 CAN 总线活动讲座十七:STC 单片机程序下载软件的使用 CANCANCANCAN 总线活动讲座十八:数码管显示实验 CANCANCANCAN 总线活动讲座十八((((插入篇一)))):数码管显示实验++++ CANCANCANCAN 总线活动讲座十九:INT0 外部中断实验 CANCANCANCAN 总线活动讲座二十:串口通讯实验 PeliCAN PeliCAN 个人秀零一:PeliCAN PeliCAN 报文简介 sja1000.h sja1000.h 个人秀零二:sja1000.h sja1000.h 头文件简介 个人秀零三:简单的认识寄存器 个人秀零四:编写节点初始化函数 个人秀零五:编写节点发送函数 个人秀零六:编写节点接受函数 SJA1000 SJA1000 个人秀零七:编写简单的点对点 SJA1000 SJA1000 的驱动函数 3
CANCANCANCAN 总线活动讲座一:写在 CANCANCANCAN 总线开发板助学之前 大家好: 很感谢 cepark 以及 wangjin 给我们这个舞台来共同学习 CANCANCANCAN 总线。如今的电子技术日新月异, 技术种类和方案层出不穷,需要电子工程师掌握的东西越来越多,你是否有点迷惑呢?在我们的“演出”正 式开始之前,我想带大家简要回顾或是总结一下现在的这个领域。 电子这个领域其实很广阔,涉及的东西很多,而且我自己的能力也有限,不可能一言盖尽,所以就凭自己 的粗浅认识来谈一谈,欢迎大家讨论。仅从应用角度讲,电子偏工程,所以诸如电子系、自动控制、测控 、 导航、机械等与电子密切相关的专业最后都被授予工学学位,与理学学位不一样。这就表示着这一大类学 生的培养目标是直接面对社会工程应用领域,所以学习的课程很多也都是重工程,比如数电,模电以及单 片机等。那么单就应用电子领域,我们作为一个学生应该掌握些什么呢?我们来看看 1. 基础电路知识:建立起电压,电流等基本电学概念,阻容感元件的内涵,电路基本定律。这是分析后 续复杂电路的基础。 2. 模拟电路: 二极管、三极管等半导体器件的应用及性质,现在是 IC 流行的年代,已经没有人去用管 子搭建复杂的电路,一是复杂,二是难调试,但是在很多场合,你就会发现一个二极管,一个三极管或是 一个稳压管比 IC 是多么的有效和方便。 再有就是运算放大器的应用,这个是模拟电路(针对电子专业) 的应用核心,运放的应用极为广泛:同反相放大、限幅电路、峰值电路、滤波器、IV、VI 变换、振荡器 等很多关键的应用领域都有运放的身影。所以模拟电路大家一定要掌握。 3.数字电路:大家都感觉比模拟电路要简单,关键是一定要明白数字系统的电平,逻辑,传输门,时序等 概念,为后续的数字高级系统打好基础。 4.单片机:单片机是目前最火的领域之一,可以说在各个重要的领域都有它,这个小小的芯片发挥着巨大 的作用,它的魅力就在于“麻雀虽小,五脏俱全”,其实就是一个微型 CPU,在这个领域里,单片机的种类 非常之多,差异也十分巨大,在不同的应用场合有不同的单片机来支撑,我们最为常用的就是51核的单片 机,我会专门用一次讲座来说它。这里你就先建立一个感觉,那就是:单片机如果没学好,就意味着你的 电子生涯不完整或者严重一点说不大合格。因此大家一定要学好单片机,它的开发其实也是最简单的,我 们这回设计的 can 总线开发板,对于你来说,就一台电脑,一条串口线就够了。 5.DSP: 如果说单片机是事务驱动型的控制器,那么 DSP 就是运算驱动型,它的运算能力比单片机强很 多,在涉及到雷达,声音,图像,以及高级算法实现方面,DSP 就显示出了极大的优势。它的基础说白了 , 就是数字信号处理,而数字信号处理的核心就是采样和数字滤波的设计,建立起一套完整的模数接口系统 , 这是应用的关键。 6.CPLD:cpld 偏重逻辑关系的实现,以往我们看一块 PCB,会发现很多的74**芯片,就是与非门之类的 逻辑门,来处理系统中的逻辑关系,随着 GAL 等可编程逻辑阵列的出现,大大简化了设计和成本。而 CPLD 的出现更是革命性的。很多需要复杂译码的场合,尤其是 DSP 系统中,一般都会有 cpld 的出现,就是负 责电平转换以及逻辑实现,既增强了系统的保密性,同时又加大了系统重组的灵活性。 4
7.FPGA: 与 cpld 类似,但是如今的 FPGA 风头正盛,大有取代 DSP 以及单片机之势,它既具备 dsp 那 种进行复杂运算的能力,同时又坚固单片机那种强大的控制能力,而且保密性和重组性又非常之强,所以 越来越受到电子工程师们的重视。所以说现在的工程师如果不会 FPGA,那就明显落伍了。开发 cpld 以 及 fpga 用的是硬件描述语言 VHDL 或者 Verilog,语言的描述能力很强大,足以覆盖整个信号处理领域。 8. 总线接口:这个就是我们要“表演”的,呵呵。总线非常之多,无处不在,电子也因为接口技术而精彩纷 呈。看看我们周围的总线:串行 RS232,RS485总线,USB 总线,1394总线,并行接口,CAN 总 线 , TCP/IP 总线,以太网,单总线,IIC 总线,SPI 总线......不胜枚举。可以说每一个 IC 器件都实际上是一 种总线的体现。 比如:大家手里的51学习板上的 DS1820温度传感器就是单总线的,USB 开发板就是 usb 接口的, AT24C02就是 IIC 的,AT93C46就是 spi 的,串口就是232的,以及我们要进行的 CAN 总线。这些都 无处不在,可以说你的接口设计能力强基本就能代表你的水平了。设想一下,当你可以根据需要随便设计 你的系统接口时,你的设计能力是多么高。比如开发一个仪器,觉得 USB 方便,那就直接 USB 接口,通 过网络可以 internent 控制,那就以太接口,要个多点通讯的,选择 can,所以你会发现当你学会了单片 机或是 FPGA 之后,总线以及接口的学习将会成为你的主要学习领域。 以上稍微讲了一些,写了现今应用广泛的几个大的领域,并不是很全面具体,但是终归给我们一个全貌。 我们这次 CAN 总线助学就是针对目前应用最为广泛之一的 can 总线来和大家一起学习。在工程项目中, RS485 RS232 RS485通讯方式,是因为它们简单!但是当你学会了 CANCANCANCAN 总线后,就知道 CCCCANANANAN RS232 RS485 大家经常采用 RS232 RS232,RS485 总线比它们更简单!你会在以后的设计中毫不犹豫的采用 CANCANCANCAN 总线作为通讯方式!我们的口号是:大家 一起来体会 CANCANCANCAN 总线的简单可靠吧! 我想以讲座的形式来开展我们的活动,循序渐进的来带领大家逐步走入 CAN 总线的世界,同时也顺便讲 一些单片机以及无线通讯等方面的开发。在此之前,我们已经售出将近400400400400套 cancancancan 总线的开发板,受到 了很多网友的好评,所以请大家相信我们的质量!我们目前已经将 CAN 开发板重新改进,增加了很多实 用的功能。希望大家积极参加我们的这次助学活动,也希望通过这次活动,大家能够掌握 CAN 总线的设 计!下一讲,我们先介绍一下我们这回 can 助学的讲座内容和开展的形式,欢迎大家随时提出自己的意见 , 并参与讨论!你的支持是我们 Cepark 前进的动力。还等什么?Just join us! 5
CANCANCANCAN 学习讲座之二:回顾一下老朋友:单片机 首先呢。我们这个讲座开始总得有点介绍,一个课程开始都要有绪论啊,对吧?所以我们也不免这个 俗,开始介绍一下,高手可以略过,初学的朋友们可以听听我们的唠叨,呵呵。 总体说来,我们这次的 can 总线学习板还是基于51单片机的学习系统,对于51我想大家再熟知不过了,几乎所有的大学中开设的课 程都是以51单片机为基础来开设的,这里面的原因有很多,但是其中最最重要的一点就是51单片机的应 用面广泛,而且群众基础好,架构清晰简明,容易学习,如果51能够非常熟练的应用的话,过度到其他单 片机就非常容易了。在最后还会稍微介绍一下其他单片机,供大家参考,下图是到目前为止,最为普及和 熟知的一些51系列的单片机,一个是以 ATMEL 公司生产的 AT 系列,还有一个就是最近异军突起的台湾 宏晶公司出品的 STC 些列,我们这回开发板上用的就是这个。 说到 AT 系列,勾起了多少人对往事的回忆,呵呵,记得我上大学的时候,实验室中的芯片就是 AT89C 系列,我还清晰的记得那时和几个好友参加电子竞赛的时候,用的就是这个,所以特别有“感情”, 呵 呵 。 AT89C 系列是一款低电压,高性能 CMOS 8位单片机,片内含可反复擦写的 Flash 只读程序存储器和随 机存取数据存储器(RAM),兼容标准 MCS-51指令系统,片内置通用8位中央处理器和 Flash 存储单元, 功能强大。先不说别的,很多初学者都不知道到底 AT89C 系列,AT89S 系列,以及 STC 系列有什么区别 , 呵呵,不说别的,就说一个最为大的区别,就是烧写方式的不同,如下: • AT89C 系列,需要有专门的烧写器,当你在 IDE(集成开发环境),开发51最为常用的就是大名顶 顶 KEIL,编译通过后,会生成一个.HEX 或是.bin 的文件,这个就是下载文件,然后你要用专门的烧 写器去把程序烧进去,因此这就属于离线烧写,频发的插拔器件,很不方便。目前,这位可敬“老先生” 已经退休停产了。 • AT89S 些列,真是因为上面提到的 AT89C 系列的离线烧写很不方便,所以 ATMEL 公司顺应“民 声”,推出了 S 系列,S 系列可以应用 ISP(在线下载)技术对芯片进行烧写,这就跨出了一大步,可 以免去离线操作的麻烦,但是必须要配一个专门 ISP 电路,和烧写端口,也是麻烦,不过在那个时候 这项技术一推出,有多少人为之感激涕零啊。 • STC 系列,这个由台湾宏晶生产的与 AT 系列完全兼容的小家伙,更神奇,它是通过内嵌一段代码 来实现通过串口来进行下载,也就是说,isp 的电路我也不要了,你只要有串口,就 ok!那现在的单 片机系统,一般都有串口啊,就算不用,一般的工程师们也愿意引出来,留着扩展或是与其他系统通 信。所以串口就不但可以通信而且可以下载,这样现在对于一般的在校学生来讲,就不必去花钱买烧 写器,直接连上 PC 的串口就可以自由下载自己编的程序了。是不是很爽呢?呵呵。 以上饶舌讲了讲最常用的51系列的单片机,其实目前单片机的家族庞大的很,各式各样的产品曾出不穷, 6
让人们真是不知道选何种为好,因此碰到一个项目,单片机的选型就是首先面临的一个问题。有经验的工 程师会选的很好,给开发带来方便,下面呢,我就简单介绍几个系列的 MCU,大家可以参考一下,进一 步感兴趣的呢,可以自己去 baidu 或 google 一下,这年头,大家要学会自己去找资料学习,可别总出现 “跪求”,“在线等”等字眼。 • MSP430系列,这款单片机实力不能小觑!是由 TI 公司出品,具备 JTAG 功能,片上外设十分丰 富!而且最最有特色的就是低功耗,因此常用在各种便携式的仪器仪表中,现在势头很猛。 • AVR 系列,ATMEL 出品,国内大名鼎鼎的“our avr”社区谁人不知?谁人不晓啊?站长阿莫是一 个非常热心的人,深受广大网友的信任!因此 AVR 在中国蓬勃发展。它是增强型 RISC,内载 Flash 的单片机,芯片上的 Flash 存储器附在用户的产品中,可随时编程,再编程,使用户的产品设计容易,更新 换代方便.AVR 单片机采用增强的 RISC 结构,使其具有高速处理能力,在一个时钟周期内可执行复杂的 指令,每 MHz 可实现1MIPS 的处理能力.AVR 单片机工作电压为2.7~6.0V,可以实现耗电最优化.AVR 的单片机广泛应用于计算机外部设备,工业实时控制,仪器仪表,通讯设备,家用电器,宇航设备等各个领 域。 • Motorola 单片机: Motorola 是世界上最大的单片机厂商.从 M6800开始,开发了广泛的品 种,4位,8位,16位32位的单片机都能生产,其中典型的代表有:8位机 M6805,M68HC05系列,8位增强 M68HC11,M68HC12 , 16位机 M68HC16, 32位机 M683XX. Motorola 单片机的特点之一是在同 样的速度下所用的时钟频率较 Intel 类单片机低得多,因而使得高频噪声低,抗干扰能力强,更适合于工 控领域及恶劣的环境 • MicroChip 单片机: MicroChip 单片机的主要产品是 PIC16C 系列和17C 系列8位单片机,CPU 采 用 RISC 结构,分别仅有33,35,58条指令,采用 Harvard 双总线结构,运行速度快,低工作电压,低功耗, 较大的输入输出直接驱动能力,价格低,一次性编程,小体积. 适用于用量大,档次低,价格敏感的产品.在 办公自动化设备,消费电子产品,电讯通信,智能仪器仪表,汽车电子,金融电子,工业控制不同领域都有广 泛的应用,PIC 系列单片机在世界单片机市场份额排名中逐年提高.发展非常迅速.。 • 华邦单片机(Winbond): 华邦公司的 W77,W78系列8位单片机的脚位和指令集与8051兼容, 但 每个指令周期只需要4个时钟周期,速度提高了三倍,工作频率最高可达 40MHz.同时增加了 WatchDog Timer,6组外部中断源,2组 UART,2组 Data pointer 及 Wait state control pin. W741 系列的4位单片机带液晶驱动,在线烧录,保密性高,低操作电压(1.2V~1.8V). • C8051Fxxx 系列:这个系列的 MCU 是完全集成的混合信号系统级芯片,具有与8051 兼容的微 控制器 内核,与 MCS-51 指令集完全兼容。除了具有标准8052 的数字外设部件之外,片内还集成 了 数据采集和控制系统中常用的模拟部件和其它数字外设及功能部件,功能超级强大!很适合于数字 信号处理需求强的应用领域。 • ADUC 系列:ADI 公司出品,该单片机具有高速高精度的 ADC、DAC 功能,以及独一无二的在 电路可调试、可下载的特点,特别适合在各种测控系统和仪器仪表中使用。ADuC841也是目前最容易 掌握、开发和应用的单片机之一。 好了,通过以上对单片机的一个简介,主要只想让大家有个总体的认识,如果说51助学是一个初学者的入 门的话,那么通过 USB 助学以及 CAN 总线助学的学习之后,就应该是一个中高级开发者了(当然不是立 刻就是,呵呵),因此技术知识要有一个总体的把握,不能一窝蜂似的,流行什么就学什么,自己对于目 前技术路线都不清楚,那做多少年都是无用,不能有更高层次的进步。看了以上的单片机介绍,有的人会 问,你介绍的这些单片机的功能比51强太多了,那我们是不是放弃51去学习这些啊,答案当然不是这样, 一位老工程师和我说过,一个人用最最简单的器件如果能搭出像样的产品,那么这个产品最最可靠,而这 个人也水平最高。呵呵,这个话就说明,尽管51出现的很早了,但是不不意味着它的过时,仍然有巨大的 舞台,希望大家能够把单片机学习的更加好,去开发出更多更好的产品! 下一个讲座,我们将说说51单 片机系统的目前一些应用,敬请大家关注,大家有什么好的提议,可以在我们小组中提出来! 7
CANCANCANCAN 总线活动讲座三:51515151单片机系统的组成 前面已经讲了关于51单片机的一些初步,我想大家肯定通过 wangjin 老师的51助学活动学到了51 单片机的使用,那么这里我们来总结一下,看一下51单片机系统的构成是如何的,如果学会了这讲,我想 大家以后对单片机系统的构建心中就有数了。 简单来说:只要是基于单片机的系统都可以化为如下的结 构: 电源部分++++单片机最小系统++++外围功能部件++++存储部分 电源部分是重中之重,系统需要能源,能源都来自电源,电源可以是直流电源也可以是电池,当然对于便 携式设备来说,电池就是最最主要的,比如 MP3了,电子手表等无不需要电池。电源部分不但要稳定,而 且功耗也要够,这才能满足系统的需要。 单片机最小系统,顾名思义就是单片机所构成的最小的能工作的电路,拿51单片机为例,最小系统就包括 : 单片机+复位电路+晶振,就基本够了,因此单片机最小系统简单但是也复杂,简单是因为电路不复杂, 复杂是说要想稳定工作需要做很多电路上的处理。 外围功能电路,就是你要做什么,就用什么,比如我们的 can 总线系统,就是 can 通信器件,圈圈的 USB 系统,就是 D12构成的通信器件,采集温度,传感器系统就是功能电路,那么给大家总结一下,目前市面 上的许多以51为主的开发板,大致有如下几种: 51+can 51+TCP/IP 以太网 51+无线 51+射频 51+IC 卡 51+USB 51+AD/DA 51+语音 51+cpld 51+传感器 51+其他总线 51+红外 51+电机 控制 以上这些基本涵盖了51学习的所有部分,欢迎补充,呵呵,可以说只要51使用熟练了,那么以上几 个部分再能熟练应用的话,单片机的应用水平就可以达到个高手的水平了。 所以我们这个 can 总线的开发板,就属于51+can,所以我们的思路就是,先按结构把我们这个板子的电 路给大家剖析一下,把每一部分高清之后,再学习 can 总线的通信部分,这样学习就快了。 那么下一讲, 我们将介绍一下我们即将给大家推出的 can 总线学习版的硬件电路部分。敬请期待! 8
分享到:
收藏