这一讲我们详细介绍一下CAN总线通讯模块的硬件设计:CAN总线学习板上CAN通讯模块的设计。包括三个部分:
(1)与CPU的接口;
(2)CAN控制器SJA1000与驱动器82C250接口及其他外围电路;
(3)82C250外围电路。 在选定了CAN控制器SJA1000和CAN驱动器82C250后,我们肯定很想知道它的硬件电路怎么设计。其实这个比较简单,一般我们会遵循下面的步骤:
(1) 在网络上搜索相关的资料,学习一下别人的设计,分析一下各自的优缺点。
(2) 仔细研读SJA1000和82C250的芯片资料,最终确定自己的硬件设计。
(3) 使用EDA软件实施自己的设计,制作PCB电路板,这个过程中需要细心,耐心。
(4) 焊接元器件。焊接过程中中时常检测焊接是否牢固,是否短路。
(5) 接下来就是和软件配合调试了。硬件设计部分就到此为止了。
在CAN总线硬件设计过程中需要注意的地方有以下几点:
(1) 电源的设计。这个应该是所有硬件设计的关键,所以在此也必须提醒一下!
(2) 复位电路的设计。其设计方法分为三类:上电复位;手动按键复位;软件复位; 这三种复位都是可以的,但我认为如果您是初学者,选择硬件复位中的手动按键复位比较好,容易调试的过程中控制。软件复位比较灵活,您可以在程序中控制其复位。
(3) 时钟电路的设计。这部分是非常重要的,不过一般都有成熟的电路,所以不用担心这个。SJA1000有一个可编程的时钟输出,可以连接到CPU的时钟输入管脚,提供时钟信号。但是对于初学者而且对面积要求又不是很苛刻的,建议您给CPU一个单独的晶振电路提供时钟信号。
(4) CANH和CANL管脚上最好增加电容滤波,提高抗干扰,电阻限流电路,提高电路保护。
(5) 匹配电阻电路设计。
我相信大家如果考虑到了这5个方面的问题,而且搞清楚了,您设计的电路应该没有问题。下一部的工作就是准备相关的只是,进行软件设计。 电路如下:
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) 82C250外围电路
CANH和CANL管脚增加阻容电路,滤除总线上的干扰,提高系统稳定性。
RS管脚为斜率电阻输入。通过这个管脚来选择82C250的工作模式:高速模式(应用与对数据传输速率高的情况,通讯数据线最好是屏蔽的);斜率模式(速度较低,通讯线可以是普通的双绞线)。准备模式(应用于对功耗要求比较高的场合)。我们的学习板采用的是斜率模式,方便大家学习。
J3是外部总线的连接口,J4是终端电阻的选择端。
到现在为止,CAN总线学习的硬件部分就介绍完了,其实还有很多地方值得讨论,比如隔离的问题,但是为了进行助学活动,考虑成本因素,隔离暂时没有加入学习版,但是对于初学者来说已经完全够用了。相信这块CAN开发板能够为你的总线学习带来方便