原创 CAN总线学习板

2008-5-25 14:19 4436 3 4 分类: 通信
EDN-CAN总线助学【之一】-前奏篇

发表于 2008-5-19 21:53:04

 大家好,承蒙EDN-彩云他们的厚爱,最终选定我们来作为这次can总线助学学习的助学专家,称我之为专家,实在愧不敢当,不敢说自己有多少建树,与前几次活动中的助学专家wangjin ,圈圈等人实在不能比。这中间出现了一些小小的波折,彩云也解释过,我不多饶舌,只是想说明一点,我们的目的很简单,就是承接着USB,51单片机助学和RF助学活动的良好发展势头,接着做第四期活动-CAN总线助学活动,想让更多的对总线有兴趣的人都能学到东西。是活动就必然有人满意,有人不满意,我们尽自己的能力去让更多的人满意,争取也能做到像前几位专家一样好,还请大家多多支持。在这之前,我们也一直做can的开发,先前做的开发板已经成功做了2个版本并且全部售出,受到了用户的好评,所以正因为有这个开发经验,彩云他们才让我们进行这次活动,所以我想大家从技术层面可以相信我们。总之呢,就是一句话,抛开一切其他问题,您从这次活动中或是我们的小组或是博客中学到您想要的技术的东西,我们的目的就达到了!

      言归正传,首先来说一下,这次活动的基本安排,目前初步是这样规划的,


       1.现在已经和彩云达成一致,元器件已经统计完毕,我们批量购买元器件,成本可以很低,为大家节省开支。


       2.PCB板目前已经送出加工,相信很快就可以回来,到时候我们再公布样板及样机并且调试通过,到时候EDN会免费派送100个免费的PCB供有兴趣的人学习。


       3.目前我们在紧张的整理资料,原理图,程序,学习指导等资料会陆续的公布在我们的小组中,所以请大家放心。经过考虑,我想将我们的学习方式弄成一个讲座连载的方式,把我认为的学习的过程逐步的写出来,大家按照我们的讲座系列跟着学习,相信一定能够把can总线学会,学东西切记浮躁,要循序渐进。最后会把讲座集结成册,做一个完整的技术文档,发给大家,供大家学习。


     4.大家有问题,请务必在我们的can学习小组中提出,也许您提出的问题是个共性的问题,我们一起来解答,这样其他人也会受益。


     5.不才被成为专家,我们能力和水平有限,在这里班门弄斧实为羞愧,肯请大家海涵为盼,共同讨论,共同提高。


      好了续篇先说这么多,敬请关注!谢谢EDN给的这个平台,更感谢彩云她们的精心辛苦策划,这里多谢她们!当然更感谢网友们的支持。我想凡事只要努力去做,哪怕做不好,也会有所收获的,期待大家能从我们这次活动中受益!


          can总线学习小组   http://group.ednchina.com/684/ 


 


EDN-CAN总线助学【之二】-总体介绍-单片机

发表于 2008-5-19 21:55:05


首先呢。我们这个讲座开始总得有点介绍,一个课程开始都要有绪论啊,对吧?所以我们也不免这个俗,开始介绍一下,高手可以略过,初学的朋友们可以听听我们的唠叨,呵呵。

       总体说来,我们这次的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系列的单片机,其实目前单片机的家族庞大的很,各式各样的产品曾出不穷,让人们真是不知道选何种为好,因此碰到一个项目,单片机的选型就是首先面临的一个问题。有经验的工程师会选的很好,给开发带来方便,下面呢,我就简单介绍几个系列的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单片机的主要产品是PIC 16C系列和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单片机系统的目前一些应用,敬请大家关注,大家有什么好的提议,可以在我们小组中提出来!


can总线学习小组   http://group.ednchina.com/684/


 

 

EDN-CAN总线助学【之三】-51单片机系统

发表于 2008-5-19 22:01:17

【首先发表一点小小的感受,刚看完赈灾晚会,北大一个法学院的女生的爸爸在这次地震灾害中,为了保护四名学生,用身体挡住他们,自己确牺牲了,看了这个场面,现场的人无不为之动容,让我们记住这个名字:谭千秋,用生命诠释师德,让我们记住还有许多在灾害中遇难的老师和众多遇难的同胞,谭老师一路走好!

                     云山苍苍,江水泱泱,先生之风,山高水长 】


       前面已经讲了关于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总线学习版的硬件电路部分。敬请期待


 


EDN-CAN总线助学【之四】-CAN开发板硬件-MCU部分

发表于 2008-5-19 22:04:07

首先先介绍STC单片机最小部分,我们给大家选的器件是STC89C52,与AT89S52完全兼容,最小系统部分的电路如下:

点击看大图


         51最小系统就如前面所说,包括复位电路和晶振部分。复位电路是一般的芯片都需要的,目的简单的说就是初始化芯片,让芯片从新开始工作,具体表现就是,一旦复位,单片机就从程序ROM中起始位置开始读程序代码,一旦死机或是程序跑飞,就得重新复位。


          我们这里的电路采用自动复位+手动复位的方式,系统上电,自动复位,复位采用简单的阻容方式,复位时间,大家可以自己通过RC参数计算。手动复位就是通过CPU—RST按键来进行,其实STC单片机系列内部有自动复位功能,但是为了可靠,加上也无妨,这样还有一个大的好处,就是如果换成了AT89C和AT89S系列单片机,照样可以正常工作!


          晶振部分,确切的说应该叫晶体,配合2个30p的电容实现振荡,产生电脉冲为单片机提供时钟信号,有的人问为什么选择11.0592M呢?这个主要是从单片机的串口通信部分考虑,按照这个晶振可以没有误差的计算出通信初始值,我想这部分对于有过51开发经验的人都会明白我讲的是什么吧?如果你不知道,赶快去51助学小组去找wangjin老师补课哦,呵呵。


          再进一步说,即使不用晶振,你也可以从外部产生一个脉冲信号直接送入X1端也照样工作。这里注意的是31引脚我们直接接高电平,目的是让单片机上电后自动读取内部ROM中的程序。那么如果我接低电平会如何呢?大家可以思考一下。


 


EDN-CAN总线助学【之五】-CAN开发板硬件-按键和电源部分

发表于 2008-5-19 22:04:53

大家好,上一讲,我们讲了单片机的最小系统部分,这一讲我们讲can总线开发板的自由按键和电源部分。自由按键很简单,如下:

      


246be992-8b22-4e9c-bf89-89d0ea8edd74.JPG


      这个按键的电路很典型,按键的操作其实主要是考虑消抖,对于那种4*4的按键来说,按键识别程序固然重要,但是对于按键的消抖处理也一样重要,这里我们板子上的按键是连接了MCU的中断接口,这样就可以直接以按键信号来给出中断信号,阻容的作用就是硬件消抖,也是最为经济实用的电路,当然目前已经出了一些专用消抖的芯片,但是成本无疑是增加的。


      电源部分,我们采用的USB取电,这样做的目的是便于大家学习,因为几乎开发单片机的人都有电脑吧?前一讲我们讲过,电源简单来说,一个是考虑驱动能力,一个是考虑稳定性,鉴于手中有高精度的稳压源的人毕竟是少数,而电脑的USB口则是“天生”一个好直流的5v电源,并且能提供近500mA的电流,因此驱动我们的can总线学习板是足够了,电路如下:


    


8394f61f-4346-439e-b545-59751a748dc7.JPG


     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总线学习板的数码管显示部分。敬请关注!


 


EDN-CAN总线助学【之六】-CAN开发板硬件-显示单元

发表于 2008-5-19 22:05:39

我们在板子上为大家提供了显示单元,用的是数码管,我想对于这个大家再熟悉不过了,电路如下:

        


a6a10d6e-bb23-41de-ae1d-dc75423d6d94.JPG


           大家应锻炼自己对于电子器件的敏感程度,我一提数码管,大家立刻应该想问的是什么呢?对了,就是数码管是共阳的还是共阴的?我们这里采用的是共阳极的,下面的9015是PNP的三级管,既当作开关用又当作驱动电路,这个电路从使用的效率以及成本上有非常好,缺点呢,就是占用口线的使用,比如我们常常使用的MAX7219就是专门用来驱动数码管的芯片,当然价格也是非常高!


            我们来看看这个电路的工作原理,P24,P25,P26,P27我们叫做位选线,顾名思义就是选中哪个,哪一位就亮, 既然是共阳极,那就是公共端是高电平时才能点亮,因此只有位线是低电平的时候才选中相应的位亮。上面一排AD0-AD7,就是数据线了,我们要事先建一个小的表,来存放每个数字的编码,具体的程序会在后续的课程中给大家介绍。


            下一讲我们将简单介绍串口和扩展口部分。


EDN-CAN总线助学【之七】-CAN开发板硬件-串口和扩展部分

发表于 2008-5-19 22:06:28

 这一讲我们来说说串口和扩展部分,由于这部分很简单,所以我们简要介绍,电路如下:

点击看大图


         扩展口部分,给大家引出了常用的口线和一个5v,一个3.3v的接口,方便大家扩展,如果你想利用我们的板子来扩展其他的东西,比如传感器了,AD了,等,就可以在这个部分来做,比如我们扩展了无线模块就是根据这个接口来设计的。


         2个自由LED灯,用来指示一些信号,很简单,大家可以灵活应用。


         至于串口部分,我想大家应该最为熟悉不过了,我们的板子用的是母头,一方面用来下载程序,另一方面用来与PC进行通讯。具体程序后续讲座中会给出。


EDN-CAN总线助学【之八】-CAN总线硬件设计

发表于 2008-5-19 23:08:02


这一讲我们详细介绍一下CAN总线通讯模块的硬件设计:CAN总线学习板上CAN通讯模块的设计。包括三个部分:(1)与CPU的接口;(2CAN控制器SJA1000与驱动器<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />82C250接口及其他外围电路;(382C250外围电路。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


电路如下:


点击看大图


<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />


1 SJA1000CPU接口


我们在学习单片机原理的时候,我相信大家都学习过RAMROMI/O口扩展。大家可以把SJA1000看作一个外部的RAM,扩展电路十分简单。SJA1000支持两种模式单片机的连接,我们选用的是8051系列的单片机,所以选择的是Intel模式。


1SJA1000的数据线和地址线是共用的,STC89C52的数据线和地址线也是共用的,这就更加方便了,直接连接就OK了。


2)既然数据线和地址线共用,必须区分某一时刻,AD线上传输的是地址还是数据,所以就需要连接地址锁存信号 ALE


3)随便使用一个单片机管脚作为SJA1000的片选信号,我们学习板使用的是P20。当然你也可以直接接地。


4)读写信号直接和单片机连接就行了,就不必多说了!


5)我们采用单片机的IO口线控制SJA1000RST管脚,是为了软件可以实现硬复位SJA1000芯片。


6SJA1000的中断管脚连接单片机的INT1外部中断。当收到一包数据后,通知CPU


 


2 SJA100082C250的接口及其他外围电路


1SJA1000有两路发送和接收管脚,CAN总线学习板使用了第0路。与82C250的连接比较简单,直接连接就可以了。但应该数据发送和接收管脚不要接反了。而且我们增加了通讯状态指示灯,便于调试。


2)时钟电路:SJA1000的最高时钟可达24M,我们学习板使用的是16M的晶振。另外增加了一个启动电阻R910M欧姆)。


3  


3 82C250外围电路


1CANHCANL管脚增加阻容电路,滤除总线上的干扰,提高系统稳定性。


2RS管脚为斜率电阻输入。通过这个管脚来选择82C250的工作模式:高速模式(应用与对数据传输速率高的情况,通讯数据线最好是屏蔽的);斜率模式(速度较低,通讯线可以是普通的双绞线)。准备模式(应用于对功耗要求比较高的场合)。我们的学习板采用的是斜率模式,方便大家学习。


3J3是外部总线的连接口。


4J4是终端电阻的选择端。


 


到现在为止,CAN总线学习的硬件部分就介绍完了,请等待下面的软件试验部分!


 


EDN-CAN总线学习板-新鲜出炉,先睹为快!

发表于 2008-5-24 22:53:08

经过漫长的等待,EDN-CAN总线学习板样板终于出来了,先发上几个照片来让大家看看,这里首先感谢彩云的努力,是她联系器件的购买,并进行了认真的分类,今天板厂送来样版PCB,我们立刻进行了调试,一切顺利!证明PCB和所买器件的可靠性。但是出现了一点小bug,就是由于器件供应商的不慎,几个器件封装拿的不合适,所以彩云正在积极得和供应商联系更换合适的器件,我们这边也在尽快进行所有PCB的调试和焊接,我们的目标是保证每一块发出去的学习板都正常工作!所以希望大家对时间上的等待理解,正所谓好饭不怕晚,呵呵。大家先看看

   44c111a8-745d-426f-80a8-1fa9bf299c36.jpg


   空PCB,蓝色的,是不是比绿色的更深沉一些?呵呵


 2d6b5f4f-0888-40db-a018-fcc8e49c6691.jpg


e35baf1d-965d-4d59-af56-4a245c9b917b.jpg


36593f33-70ca-4e53-98ec-8ded128e3a56.jpg


CAN自收发程序验证


点击看大图


       我们在抓紧联系各方进行焊接调试,争取6月初左右就能送到大家的手里,正因为有你们-彩云和我们这些所谓的专家才有信心和勇气做下去,所以还请大家再耐心的等待一下,有建议和问题,欢迎大家踊跃提出,我们争取把这个CAN总线学习小组做的更好!

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户251684 2009-9-15 09:26

请问现在学习板做完了吗?我想做毕业设计用。麻烦你们了!

用户160522 2008-8-14 11:26

呵呵,我也是。
相关推荐阅读
用户1397377 2008-05-25 14:09
管脚串联小电阻的解释
高速数字电路中,经常看到在两个芯片的引脚之间串连一个电阻,是为了避免信号产生振铃(即信号的上升或下降沿附近的跳动)。<?xml:namespace prefix = o ns = "urn:sc...
我要评论
1
3
关闭 站长推荐上一条 /1 下一条