几种单片机之间的方式疑难提出一种解决方案

2021-03-31 10:05:45 惠尔创 86

  1 、几种常用单片机之间的通讯方式

  ①采用硬件UART停止异步串行通讯。这是一种占用口线少,有效、牢靠的通讯方式;但遗憾的是许多小型单片机没有硬件  UART,有些也只要1个UART,假如系统还要与上位机通讯的话,硬件资源是不够的。这种办法普通用于单片机有硬件UART且不需与外界停止串行通讯或采用双UART单片机的场所。

  ②采用片内SPI接口或2C总线模块串行通讯方式。SPI/I2C接口具有硬件简单、软件编程容易等特性,但目前大多数单片机不具备硬件SPI/I2C模块。

  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资源与执行速度都十分有限的状况下,一个简捷有效的协议是十分重要的。下面详细引见一种比拟适用于单片机通讯的协议,数据以包的方式传送。

  (4)通讯流程

  首先,要在FRAM里划分好各个区域,各个单片机的参数区、数据接纳区等。然后,单片机能够向另一个单片机发送数据包,发送终了之后经过向握手线B发送1个脉冲通知对方取走数据;接纳方读取数据并停止处置后,向FRAM内发送方的数据接纳区写入回传数据或通讯失败标志,再向握手线B发送1个脉冲回应发送方。

  4 、总结

  经过理论可知,以上办法是可行的。与其它办法相比具有以下优点:

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

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

  ③高效。由于采用数据缓冲,能够在不同时钟频率、不同速度的单片机之间通讯;读写数据时,能够I2C总线的最高速度停止,能够完成1次传送大量数据;在一个单片机向FRAM传送数据时,另一个单片机无须逐个作出响应或等候,能够停止其它程序操作,进步软件工作效率。


电话咨询
邮件咨询
在线地图
QQ客服
收购范围
在线交流

在线询价

点击这里给我发消息