言归正传,首先来说一下,这次活动的基本安排,目前初步是这样规划的,
1.现在已经和彩云达成一致,元器件已经统计完毕,我们批量购买元器件,成本可以很低,为大家节省开支。
2.PCB板目前已经送出加工,相信很快就可以回来,到时候我们再公布样板及样机并且调试通过,到时候EDN会免费派送100个免费的PCB供有兴趣的人学习。
3.目前我们在紧张的整理资料,原理图,程序,学习指导等资料会陆续的公布在我们的小组中,所以请大家放心。经过考虑,我想将我们的学习方式弄成一个讲座连载的方式,把我认为的学习的过程逐步的写出来,大家按照我们的讲座系列跟着学习,相信一定能够把can总线学会,学东西切记浮躁,要循序渐进。最后会把讲座集结成册,做一个完整的技术文档,发给大家,供大家学习。
4.大家有问题,请务必在我们的can学习小组中提出,也许您提出的问题是个共性的问题,我们一起来解答,这样其他人也会受益。
5.不才被成为专家,我们能力和水平有限,在这里班门弄斧实为羞愧,肯请大家海涵为盼,共同讨论,共同提高。
好了续篇先说这么多,敬请关注!谢谢EDN给的这个平台,更感谢彩云她们的精心辛苦策划,这里多谢她们!当然更感谢网友们的支持。我想凡事只要努力去做,哪怕做不好,也会有所收获的,期待大家能从我们这次活动中受益!
can总线学习小组 http://group.ednchina.com/684/
首先呢。我们这个讲座开始总得有点介绍,一个课程开始都要有绪论啊,对吧?所以我们也不免这个俗,开始介绍一下,高手可以略过,初学的朋友们可以听听我们的唠叨,呵呵。
总体说来,我们这次的can总线学习板还是基于51单片机的学习系统,对于51我想大家再熟知不过了,几乎所有的大学中开设的课程都是以51单片机为基础来开设的,这里面的原因有很多,但是其中最最重要的一点就是51单片机的应用面广泛,而且群众基础好,架构清晰简明,容易学习,如果51能够非常熟练的应用的话,过度到其他单片机就非常容易了。在最后还会稍微介绍一下其他单片机,供大家参考,下图是到目前为止,最为普及和熟知的一些51系列的单片机,一个是以ATMEL公司生产的AT系列,还有一个就是最近异军突起的台湾宏晶公司出品的STC些列,我们这回开发板上用的就是这个。
说到AT系列,勾起了多少人对往事的回忆,呵呵,记得我上大学的时候,实验室中的芯片就是AT89C系列,我还清晰的记得那时和几个好友参加电子竞赛的时候,用的就是这个,所以特别有“感情”,呵呵。AT89C系列是一款低电压,高性能CMOS 8位单片机,片内含可反复擦写的Flash只读程序存储器和随机存取数据存储器(RAM),兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大。先不说别的,很多初学者都不知道到底AT89C系列,AT89S系列,以及STC系列有什么区别,呵呵,不说别的,就说一个最为大的区别,就是烧写方式的不同,如下:
以上饶舌讲了讲最常用的51系列的单片机,其实目前单片机的家族庞大的很,各式各样的产品曾出不穷,让人们真是不知道选何种为好,因此碰到一个项目,单片机的选型就是首先面临的一个问题。有经验的工程师会选的很好,给开发带来方便,下面呢,我就简单介绍几个系列的MCU,大家可以参考一下,进一步感兴趣的呢,可以自己去baidu或google一下,这年头,大家要学会自己去找资料学习,可别总出现“跪求”,“在线等”等字眼。
好了,通过以上对单片机的一个简介,主要只想让大家有个总体的认识,如果说51助学是一个初学者的入门的话,那么通过USB助学以及CAN总线助学的学习之后,就应该是一个中高级开发者了(当然不是立刻就是,呵呵),因此技术知识要有一个总体的把握,不能一窝蜂似的,流行什么就学什么,自己对于目前技术路线都不清楚,那做多少年都是无用,不能有更高层次的进步。看了以上的单片机介绍,有的人会问,你介绍的这些单片机的功能比51强太多了,那我们是不是放弃51去学习这些啊,答案当然不是这样,一位老工程师和我说过,一个人用最最简单的器件如果能搭出像样的产品,那么这个产品最最可靠,而这个人也水平最高。呵呵,这个话就说明,尽管51出现的很早了,但是不不意味着它的过时,仍然有巨大的舞台,希望大家能够把单片机学习的更加好,去开发出更多更好的产品!
下一个讲座,我们将说说51单片机系统的目前一些应用,敬请大家关注,大家有什么好的提议,可以在我们小组中提出来!
can总线学习小组 http://group.ednchina.com/684/
云山苍苍,江水泱泱,先生之风,山高水长 】
前面已经讲了关于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总线学习版的硬件电路部分。敬请期待
51最小系统就如前面所说,包括复位电路和晶振部分。复位电路是一般的芯片都需要的,目的简单的说就是初始化芯片,让芯片从新开始工作,具体表现就是,一旦复位,单片机就从程序ROM中起始位置开始读程序代码,一旦死机或是程序跑飞,就得重新复位。
我们这里的电路采用自动复位+手动复位的方式,系统上电,自动复位,复位采用简单的阻容方式,复位时间,大家可以自己通过RC参数计算。手动复位就是通过CPU—RST按键来进行,其实STC单片机系列内部有自动复位功能,但是为了可靠,加上也无妨,这样还有一个大的好处,就是如果换成了AT89C和AT89S系列单片机,照样可以正常工作!
晶振部分,确切的说应该叫晶体,配合2个30p的电容实现振荡,产生电脉冲为单片机提供时钟信号,有的人问为什么选择11.0592M呢?这个主要是从单片机的串口通信部分考虑,按照这个晶振可以没有误差的计算出通信初始值,我想这部分对于有过51开发经验的人都会明白我讲的是什么吧?如果你不知道,赶快去51助学小组去找wangjin老师补课哦,呵呵。
再进一步说,即使不用晶振,你也可以从外部产生一个脉冲信号直接送入X1端也照样工作。这里注意的是31引脚我们直接接高电平,目的是让单片机上电后自动读取内部ROM中的程序。那么如果我接低电平会如何呢?大家可以思考一下。
这个按键的电路很典型,按键的操作其实主要是考虑消抖,对于那种4*4的按键来说,按键识别程序固然重要,但是对于按键的消抖处理也一样重要,这里我们板子上的按键是连接了MCU的中断接口,这样就可以直接以按键信号来给出中断信号,阻容的作用就是硬件消抖,也是最为经济实用的电路,当然目前已经出了一些专用消抖的芯片,但是成本无疑是增加的。
电源部分,我们采用的USB取电,这样做的目的是便于大家学习,因为几乎开发单片机的人都有电脑吧?前一讲我们讲过,电源简单来说,一个是考虑驱动能力,一个是考虑稳定性,鉴于手中有高精度的稳压源的人毕竟是少数,而电脑的USB口则是“天生”一个好直流的5v电源,并且能提供近500mA的电流,因此驱动我们的can总线学习板是足够了,电路如下:
LED5灯是用来指示电源的,如果USB电源是5V,准确输出,那么LED5灯就会亮。
这里有个小小的细节,那就是,有的同学会不会问,R15的阻值怎么取?这个问题其实是个基本功的问题,有的同学大学四年毕业,连个电阻的取值都不知道,这就是平时的基本功不够。这里的电阻可以叫做限流电阻,因为LED灯的亮其实是靠电流点亮,一般的LED的电流需要3-10mA,过低不会亮,过高就烧掉,所以我经常看见有的同学在实验室大叫,我的灯烧了,这就是限流电阻选的不够,那么假设我们取3mA为工作电流,大家拿到板子后可以用电压表测量一下LED两端的电流,大概是1.7v的样子,这样我们就可以得到电阻2端的压降为:5-1.7=3.3v,那么R15的阻值就是3.3v/3mA=1.1k,我们取1k的阻值,肯定可以满足通断的要求。所以你看电阻的取值其实大有讲究的!希望大家注意。
HT7533-3.3是一个输出3.3v的芯片,由于我们can总线学习板在当初设计的时候,配有nRF2401的无线通信芯片,需要3.3V电源,所以选用这个。这个3.3v的电源是在扩展口给大家引出的,以便于大家在利用我们的 can总线开发板做扩展使用需要3.3v的片子时用,毕竟3.3v的器件目前很多。
这一讲我们讲了电源和按键,下一讲我们将讲一讲can总线学习板的数码管显示部分。敬请关注!
大家应锻炼自己对于电子器件的敏感程度,我一提数码管,大家立刻应该想问的是什么呢?对了,就是数码管是共阳的还是共阴的?我们这里采用的是共阳极的,下面的9015是PNP的三级管,既当作开关用又当作驱动电路,这个电路从使用的效率以及成本上有非常好,缺点呢,就是占用口线的使用,比如我们常常使用的MAX7219就是专门用来驱动数码管的芯片,当然价格也是非常高!
我们来看看这个电路的工作原理,P24,P25,P26,P27我们叫做位选线,顾名思义就是选中哪个,哪一位就亮, 既然是共阳极,那就是公共端是高电平时才能点亮,因此只有位线是低电平的时候才选中相应的位亮。上面一排AD0-AD7,就是数据线了,我们要事先建一个小的表,来存放每个数字的编码,具体的程序会在后续的课程中给大家介绍。
下一讲我们将简单介绍串口和扩展口部分。
扩展口部分,给大家引出了常用的口线和一个5v,一个3.3v的接口,方便大家扩展,如果你想利用我们的板子来扩展其他的东西,比如传感器了,AD了,等,就可以在这个部分来做,比如我们扩展了无线模块就是根据这个接口来设计的。
2个自由LED灯,用来指示一些信号,很简单,大家可以灵活应用。
至于串口部分,我想大家应该最为熟悉不过了,我们的板子用的是母头,一方面用来下载程序,另一方面用来与PC进行通讯。具体程序后续讲座中会给出。
这一讲我们详细介绍一下CAN总线通讯模块的硬件设计:CAN总线学习板上CAN通讯模块的设计。包括三个部分:(1)与CPU的接口;(2)CAN控制器SJA1000与驱动器<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />82C250接口及其他外围电路;(3)82C250外围电路。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
电路如下:
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
1 SJA1000与CPU接口
我们在学习单片机原理的时候,我相信大家都学习过RAM,ROM,I/O口扩展。大家可以把SJA1000看作一个外部的RAM,扩展电路十分简单。SJA1000支持两种模式单片机的连接,我们选用的是8051系列的单片机,所以选择的是Intel模式。
(1)SJA1000的数据线和地址线是共用的,STC89C52的数据线和地址线也是共用的,这就更加方便了,直接连接就OK了。
(2)既然数据线和地址线共用,必须区分某一时刻,AD线上传输的是地址还是数据,所以就需要连接地址锁存信号 ALE。
(3)随便使用一个单片机管脚作为SJA1000的片选信号,我们学习板使用的是P20。当然你也可以直接接地。
(4)读写信号直接和单片机连接就行了,就不必多说了!
(5)我们采用单片机的IO口线控制SJA1000的RST管脚,是为了软件可以实现硬复位SJA1000芯片。
(6)SJA1000的中断管脚连接单片机的INT1外部中断。当收到一包数据后,通知CPU。
2 SJA1000与82C250的接口及其他外围电路
(1)SJA1000有两路发送和接收管脚,CAN总线学习板使用了第0路。与82C250的连接比较简单,直接连接就可以了。但应该数据发送和接收管脚不要接反了。而且我们增加了通讯状态指示灯,便于调试。
(2)时钟电路:SJA1000的最高时钟可达24M,我们学习板使用的是16M的晶振。另外增加了一个启动电阻R9(10M欧姆)。
(3)
3 82C250外围电路
(1)CANH和CANL管脚增加阻容电路,滤除总线上的干扰,提高系统稳定性。
(2)RS管脚为斜率电阻输入。通过这个管脚来选择82C250的工作模式:高速模式(应用与对数据传输速率高的情况,通讯数据线最好是屏蔽的);斜率模式(速度较低,通讯线可以是普通的双绞线)。准备模式(应用于对功耗要求比较高的场合)。我们的学习板采用的是斜率模式,方便大家学习。
(3)J3是外部总线的连接口。
(4)J4是终端电阻的选择端。
到现在为止,CAN总线学习的硬件部分就介绍完了,请等待下面的软件试验部分!
空PCB,蓝色的,是不是比绿色的更深沉一些?呵呵
CAN自收发程序验证
我们在抓紧联系各方进行焊接调试,争取6月初左右就能送到大家的手里,正因为有你们-彩云和我们这些所谓的专家才有信心和勇气做下去,所以还请大家再耐心的等待一下,有建议和问题,欢迎大家踊跃提出,我们争取把这个CAN总线学习小组做的更好!
用户251684 2009-9-15 09:26
用户160522 2008-8-14 11:26