您的位置 首页 报告

剖析不同品种单片机之间通讯的方法

电子技术的飞速发展,单片机也步如一个新的时代,越来越多的功能各异的单片机为我们的设计提供了许多新的方法与思路。对于莫一些场合,比如

电子技术的飞速发展,单片机也步如一个新的年代,越来越多的功用各异的单片机为咱们的规划供给了许多新的办法与思路。关于莫一些场合,比方:杂乱的后台运算及通讯与高实时性前台操控体系、软件资源消耗大的体系、功用强大的低消耗体系、加密体系等等。假如合理运用多种不同类型的单片机组合规划,能够得到极高灵敏性与功用价格比,因而,多种异型单片机体系规划逐渐成为一种新的思路,但单片机之间的通讯一直是困扰这种办法拓宽的首要问题。本文将剖析比较几种单片机之间的办法、难点,并提出一种处理计划。

1 几种常用单片机之间的通讯办法

①选用硬件UART进行异步串行通讯。这是一种占用口线少,有用、牢靠的通讯办法;但惋惜的是许多小型单片机没有硬件 UART,有些也只需1个UART,假如体系还要与上位机通讯的话,硬件资源是不行的。这种办法一般用于单片机有应件UART且不需与外界进行串行通讯或选用双UART单片机的场合。

②选用片内SPI接口或2C总线模块串行通讯办法。SPI/I2C接口具有硬件简略、软件编程简略等特色,但现在大多数单片机不具备硬件SPI/I2C模块。

③运用软件模仿SPI/I2C办法通讯,这种办法很难模仿从机办法,通讯两头对每一位要做出呼应,通讯速率与软件资源的开支会构成一个很大的对立,处理不好会导致体系全体功用急剧下降。这种办法只能用于通讯量很少的场合。

④口对口并行通讯,运用单片机的口线直接相连,加上1~2条握手信号线。这种办法的特色是通讯速度快,1次能够传输4位或8位,乃至更多,但需求占用很多的口线,并且数据传递是准同步的。在一个单片机向另一个单片机传送1个字节今后,有必要比及另一个单片机的接纳呼应信号后才干传送下一个数据。一般用于一些硬件口线比较充裕的场合。

⑤运用双口RAM作为缓冲器通讯。这种办法的最大特色便是通讯速度快,两头都能够直接用读写存储器的指令直接操作;但这种办法需求很多的口线,并且双口RAM的价格很高,一般只用于一些对速度有特殊要求的场合。

从上面几种计划来看,各种办法对硬件都有很大的要求与约束,特别是难以在功用简略的单片机上完成,因而寻求一种简略、有用的,能在各种单片机之间通讯的办法具有重要的含义。③、④计划中,两头单片机要传递的每一位或每一个字节做出呼应,通讯数据量较大时会消耗很多的软件资源,这在一些实时性要求高的当地是不允许的。针对这一问题,假设在单片机之间添加1个数据缓冲器,大批数据先写入缓冲区,然后再让对方去取,各个单片机对数据缓冲器都是主控办法,这样必然会大大进步通讯功率。谈到数据缓冲,咱们立刻会想到并行RAM,可是并行RAM需求占用很多的口线(数据线+地址线+读写线+片选线+握手线),一般在16条以上。这是一个让人望而生畏的数字,并且会大大添加PCB面积并给布线带来必定的困难,很少有人选用这种办法。串行接口的RAM在市场上很罕见,不光难以买到并且价格很高。移位寄存器也能够做数据缓冲器,但现在容量最大的也只128位,因为是“先进先出”结构,所以不论传递数据多少,接纳方有必要移完整个寄存器,灵敏性差并且大容量的移位寄存器也是罕见难买的。一种被称为“铁电存储器”芯片的呈现,给咱们带来了处理办法。

2 运用铁电存储器作为数据缓冲器的通讯办法

铁电存储器是美国Ramtran公司刚刚推出的一种新式非易失性存储器材,简称FRAM。与一般EEPROM、Flash-ROM比较,它具有不需写入时刻、读写次数无限,没有散布结构能够接连写放的长处,因而具有RAM与EEPROM的双得特性,并且价格相对较低。现在大多数的单片机体系装备串行EEPROM(如24CXX、93CXX等)用来存储参数。假如用1片FRAM替代原有EEPROM,使它既能存储参数,又能作串行数据通讯的缓冲器。2个(或多个)单片机与1片FRAM接成多主-从的I2C总线办法,添加几条握手线,即可得到简略高效的通讯硬件电路。在软件方面,只需处理好I2C多主-从的操控抵触与通讯协议问题,即可完成简略、高效、牢靠的通讯了。

3 实例(双单片机结构,多功用低功耗体系)

(1)硬件

W78LE52与EMC78P458组成一个电池供电、可长途通讯的工业流量计。78P458选用32.768kHz晶振,作业电流低,不连续作业,实时收集传感器的脉冲及温度、压力等一些模仿量;W78LE52采11.0592MHz晶振,因为它的作业电流较大,选用连续作业,担任流量的非线性校对、参数输入、液晶显示、与上位机通讯等功用,它的UART用于长途通讯。通讯接口部分线路如图1所示,2个单片机共用1片I2C接口的FRAM(FM24CL16)组成二主一从的I2C总线操控办法,W78LE52的P3.5、P3.2别离与78P458的P51、P50衔接作握手信号线A与B。咱们掌握手线A(简称A线)界说为总线操控、指示线,首要用于获取总线操控权与判别总线是否“忙”;握手线B(简称B线)界说为告诉线,首要用于告诉对方取走数据。

(2)I2C总线裁定

因为咱们选用的是二主一从的I2C总线办法,因而避免2个主机一起去操作从机(防抵触)是一个十分重要的问题。带有硬件I2C模块的器材一般是这样的,器材内部有1个总线裁定器与总线超时定时器:当总线超时定时器超时后指示总线闲暇,这时单片机能够宣布获取总线指令,总线裁定器经过一系列操作后承认获取总线成功或失利;超时定时器清零,今后的每一个SCL状况改动对总线一切主机的超时定时器进行清零,以避免它溢出,指示总线正处于“忙”状况,直到一个主机对总线操控完毕不再发生SCL脉冲;超时定时器溢出,总线从头回到“闲暇”状况。可是现在大多数单片机没有装备硬件I2C模块,并且当2个主机的作业频率相差较大时,超时定时器定时值只能设为较大的值,这样也会影响总线的运用功率。下面介绍一种用软件模仿I2C总线裁定的办法(I2C读写操作程序的软件模仿十分多见,这儿不再多述):用1条握手线A,流程图如图2所示,当A线高电平时,指示总线闲暇;当其间一个主机要获取总线操控权时,先查询总线是否闲暇,“忙”则退出,闲暇则向A线发送一个检验序列(如:1000101011001011),在每次发送位“1”后读取的A线状况。假如读取状况为“0”,立刻退出,阐明有其它器材现已抢先获取总线;假如一个序列读取的A线状况都正确,则阐明已成功取得总线操控权,这时要拉低A线以指示总线“忙”,直到读写高A线,使总线回到“闲暇”状况。不同的主机选用不同的检验序列,或发生随机检验序列,检验序列长度能够选得长一些,这样能够添加裁定的牢靠性。

(3)通讯协议

一个牢靠通讯体系,除了好的硬件电路外,通讯协议也至关重要。在单片机体系RAM资源与履行速度都十分有限的情况下,一个简捷有用的协议是十分重要的。下面详细介绍一种比较适用于单片机通信的协议,数据以包的办法传送。数据包结构:

①包头——指示数据包的开端,有利于包完整性检测,有时可省掉;

②地址——数据包要传送的方针地址,若只需双机通讯或硬件区别地址能够省掉;

③包长度——指示整个数据包的长度;

④指令——指示本数据包的效果;

⑤参数——需求传送的数据与参数;

⑥校验——验证数据包的正确性,能够是和校验、异或校验、CRC校验等或者是它们的组合;

⑦包尾——指示数据包的完毕,有利于包完整性检测,有时可省掉。

(4)通讯流程

首要,要在FRAM里划分好各个区域,各个单片机的参数区、数据接纳区等。然后,单片机能够向另一个单片机发送数据包,发送完毕之后经过向握手线B发送1个脉冲告诉对方取走数据;接纳方读取数据并进行处理后,向FRAM内发送方的数据接纳区写入回传数据或通讯失利标志,再向握手线B发送1个脉冲回应发送方。表3是单片机1发动1次与单片机2之间的通讯的比如。

假如需求单片机2发送的话,只需交流一下操作过程即可。

表3

过程 单片机1 单片机2 A线 B线
1 总线闲暇 总线闲暇 1 1
2 获取总线操控权 其它操作 0 1
3 向FRAM内单片机2的数据接纳区写入一包通讯数据 其它操作 0 1
4 向B线发送走个负脉冲,告诉单片机2,发动超时定时器 其它操作 0 负脉冲
5 其它操作 呼应来自B线的脉冲,读取FRAM内数据接纳区的内容(无须获取总线操作) 0 1
6 其它操作 对数据进行处理后,向FRAM内单片机1的数据接纳区写入回传数据或通讯失利标志 0 1
7 其它操作 向B线发送1个负脉冲,告诉单片机1 0 负脉冲
8 清超时定时器,读取数据区内容。假如失利能够做重发或其它处理;假如成功则拉高A线,开释I2C总线,1次通讯工程完毕 其它操作 1 1
9 假如超时定时器溢出,阐明单片机2没有呼应单片机1的告诉,能够做重发或毛病处理      

4 总结

经过实践可知,以上办法是可行的。与其它办法比较具有发下长处:

①简略。占用单片机口线少(SCL、SDA、握手线A、握手线B)。

②通用。软件模仿I2C主机办法,能够在任何品种的单片机之间通讯。

③高效。因为选用数据缓冲,能够在不一起钟频率、不同速度的单片机之间通讯;读写数据时,能够I2C总线的最高速度进行,能够完成1次传送很多数据;在一个单片机向FRAM传送数据时,另一个单片机无须逐个作出呼应或等候,能够进行其它程序操作,进步软件作业功率。

④灵敏。通讯硬件接口关于各个单片机是对等的,经过软件装备,每个单片机既能够根据需求自动发送通讯,也能够只呼应其它单片机的呼叫。

⑤简略扩展。经过添加地址识别线,修正通讯协议,即可做到多机通讯。

以下是需求留意的地址:

①为了进步通讯功率,握手线B最好运用中止端口,负脉冲宽度必定要满意速度较低单片机中止信号要求。假如没有中止的话应添加1条口线,用改动端口状况的办法告诉对方,等候对方查询,而不是负脉冲。

②向对方发送负脉冲时,应屏蔽自己的中止。

③因为参数与通讯缓冲区一起设在同一片FRAM内,要避免对参数部分的误操作。一个较好的处理办法是把参数寄存在地址的后半部分(A2=1),在进行通讯操作时,把FRAM的WP引脚拉高(地址在后半部分的单元写保护),这样能够有用地避免检验时对参数区误操作。

④因为I2C总线在一个时刻段内只需1个主机和1个从机,所以当1个单片机正在写通讯数据时,另一个单片机是不能对FRAM进行操作的。假如需求实时、频频地读取FRAM中参数的话,请预先将参数读入RAM单元运用或别的添加专门寄存参数的芯片。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/baogao/261978.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部