投资者亮相台州
06-17
随着社会经济的不断发展进步和科学技术的不断提高,在新时代的背景下,网络通信已经成为人们最常用的科技产品之一。
由于人们生活水平的提高,日常追求也在发生变化,通讯产品可以说是日新月异。
人们在网络通信、工业自动化、数据传输等实际操作中都会需要控制系统。

它可以有效地控制和检测运行数据,使通信系统能够及时、高速地进行正常通信。
基于其多种优点,目前已得到广泛应用。
多机通信时,主机必须能够识别各个从机。
在51系列单片机中,这可以通过SCON寄存器的SM2位来实现。
串口以模式2或模式3发送数据时,每帧信息为11位,第9位为数据可编程位。
通过设置 TB8 为 1 或 0 来区分地址帧和数据帧,当该位为 1 时,发送地址帧;当该位为0时,发送数据帧。
在多机通信过程中,主机首先发送某个从机的地址,并等待从机的响应。
所有从机收到地址帧后,将其与本地地址进行比较。
如果相同,则SM2置0。
准备接收数据;如果不同,则丢弃当前数据,SM2 位保持不变。
总线式主从结构常用于单片机组成的多机通信系统。
在由多个微控制器组成的系统中,只允许存在一个主机,其他都是从机。
奴隶必须服从主人的控制。
这就是总线式的主从结构。
51单片机与多台计算机通信时,串口必须工作在模式2和模式3下。
假设当前的多机通信系统有1个主机和3个从机,从机地址为 00H,分别为 01H 和 02H。
如果距离很近,可以直接用TTL电平进行通信。
一旦距离较远,通常采用RS串行标准总线进行数据传输。
为了区分是数据信息还是地址信息,主机使用数据的第9位TB8作为地址/数据的标识位。
地址帧的TB8=1,数据帧的TB8=0。
每个从机的 SM2 必须设置为 1。
主机与从机通信之前,会将从机的地址发送给每个从机。
由于各从机SM2=1,接收到的地址帧RB8=1,因此各从机接收到的信息有效,发送到各自的接收缓冲器 SBUF,并置RI=1。
每个从机CPU响应中断后,软件判断主机发送的地址是否是从机的地址。
如果是从机地址,则设置SM2=0,否则保持SM2=1。
然后主机发送数据帧。
因为数据帧中的第9位数据RB8=0,所以只有地址匹配的从机SM2=0,这样才能将8位数据加载到接收缓冲器SBUF中。
其他从机 SM2=1,数据会丢失,从而实现主从机一对一通信。
串口工作模式2、3也可用于多机通讯。
此时数据的第9位可以作为奇偶校验位,但SM2必须设置为0。
现代看到的单片机基本上都有通信接口,可以很方便地与计算机进行信息数据通信 这提供了应用层的通信设备和计算机网络。
提供了强有力的物质基础条件,目前的通讯设备的使用已经实现了单片机的智能控制,如手机、列车无线通讯、无线对讲机等,在单片机的通讯应用中应该可以说,是从两台单片机之间的通信开始的,后来出现了主从通信设备。
后来出现了基于单片机的多机通信系统的应用,并得到了广泛的应用。
单片机多机通信的研究虽然历史悠久,但形式基本都是主从式,平权式的相对较少。
在系统设计中,通信协议工作的相关流程主要包括发送数据的流程和接收数据的流程。
可以采用异步半双通信方式进行设计,即可以设计在同一个时间段内,主机发送,从机接收,或者从机发送,主机接收。
这样的设计可以使系统工作更加有效、便捷,在整个系统设计中具有重要的作用。
占有非常重要的地位。
从机接收时有两种方式。
一种是等待接收,这是处理器查询串口状态得到的判断; 的命令系统在接收中断的过程中会首先解析连接命令。
当“connect”命令获取到信息 时,主程序会立即进入设置状态,然后它会通过查询方法解析剩余的协议。
在 的过程中,协议的解析首先确定数据包的正确性和完整性,然后提取数据和 数据类型。
,这些完成后,将提取的相关数据存储起来,用于主程序的处理。
通常最好使用中断接收。
在接收数据的过程中,主机可以与从机保持一致。
串口打开后,远程监控串口的数据接收也必须打开,然后才能将接收到的数据放入缓冲区,从而同时取 接收数据的消息被发送到主程序。
此时,数据将与消息一起传输到主程序。
然后主程序将打开消息并开始处理函数和数据。
越来越多不同功能的微控制器为我们的设计提供了许多新的方法和思路。
对于某些场合,如:复杂的后台计算和通信以及实时性要求较高的前端控制系统、软件资源消耗较大的系统、功能强大的低消耗系统、加密系统等,如果多种不同类型的单片机组合设计合理使用,可以获得极高的灵活性和性价比。
因此,多个异形单片机系统的设计逐渐成为一种新的思路,但单片机之间的通信一直是困扰该方法扩展的主要问题。
本文将分析比较几种单片机之间的方法和难点,并提出解决方案。
1。
几种常用微控制器之间的通信方式 1。
使用硬件UART进行异步串行通信 这是一种有效可靠的通信方式,占用端口线少;但不幸的是很多小型微控制器没有硬件UART,有的只有一个UART。
如果系统还需要与上位机通信,则硬件资源不够。
这种方法一般用于有相应UART且不需要与外界通信的微控制器。
串行通信或使用双 UART 微控制器的情况。
2。
采用片上SPI接口或2C总线模块串行通信形式,SPI/I2C接口具有硬件简单、软件编程方便的特点,但目前大多数单片机都没有硬件SPI/I2C模块。
3。
使用软件模拟SPI/I2C模式通信。
这种方法很难模拟从机模式。
通信双方都必须对每一位做出响应。
通信速率和软件资源开销会形成很大的矛盾。
处理不当会导致系统整体性能急剧下降。
这种方法只能在通信量很小的情况下使用。
4。
端口对端口并行通信,采用单片机的端口线直接连接,加1~2根握手信号线。
这种方法的特点是通信速度快,一次可以传输4或8位,甚至更多。
很多,但是需要大量的端口线,而且数据传输是准同步的。
一个微控制器向另一个微控制器发送1个字节后,必须等到另一个微控制器收到响应信号后才能发送下一个数据。
一般用在一些硬件端口线比较丰富的场合。
5。
使用双口RAM作为缓冲通信。
这种方式最大的特点就是通讯速度快。
双方都可以直接用指令操作对存储器的读写;但这种方法需要大量的端口线,而且双端口RAM的价格很高,一般只用在一些对速度有特殊要求的场合。
从上述方案来看,各种方法对硬件都有很大的要求和限制,尤其是在功能简单的单片机上实现起来比较困难。
因此,我们正在寻找一种简单有效的方法,可以在各种微控制器之间进行通信。
该方法具有重要意义。
在方案③和方案④中,双方的微控制器对传输的每一位或字节做出响应。
当通信数据量较大时,会消耗大量的软件资源。
在一些实时性要求较高的应用中确实如此。
不允许的地方。
针对这个问题,假设单片机之间加一个数据缓冲区,先将大量数据写入缓冲区,然后让对方取回。
每个微控制器对于数据缓冲区都处于主控模式,这必然会导致通信效率大大提高。
当谈到数据缓冲时,我们会立即想到并行RAM,但是并行RAM需要大量的端口线(数据线+地址线+读写线+片选线+握手线),通常超过16条,这是一个令人望而生畏的数字,而且会大大增加PCB面积,给布线带来一定的困难。
很少有人使用这种方法。
串行接口RAM在市场上很少见。
它不仅很难买到,而且还非常昂贵。
移位寄存器也可以用作数据缓冲器,但目前最大的容量仅为位。
由于是“先进先出”的结构,所以无论传输多少数据,接收方都必须对整个寄存器进行移位。
灵活性较差,大容量的移位寄存器很少见,很难买到。
一种名为“铁电存储器”的芯片的出现给我们带来了解决方案。
2。
利用铁电存储器作为数据缓冲器的通信方式 铁电存储器是美国Ramtran公司刚刚推出的一种新型非易失性存储器件,简称FRAM,与普通的EEPROM、Flash-ROM类似。
与RAM相比,它具有无写入时间、读写次数不受限制、无分布式结构可连续写入和播放的优点。
因此,它具有RAM和EEPROM的双重特性,而且价格相对较低。
现在大多数单片机系统都配有串行EEPROM(如24CXX、93CXX等)用于存储参数。
如果用一块FRAM代替原来的EEPROM,它不仅可以存储参数,还可以作为串行数据通信的缓冲区。
两个(或多个)微控制器和一块FRAM连接起来组成一个多主从系统。
在I2C总线模式下,通过增加几条握手线,可以获得简单高效的通信硬件电路。
在软件方面,只要解决I2C多主从的控制冲突和通信协议问题,就可以实现简单、高效、可靠的通信。
。
3。
示例(双微控制器结构,多功能低功耗系统) 1.硬件 W78LE52和EMC78P组成电池供电的工业流量计,可以进行远程通信。
78P采用32.kHz晶振,工作电流低,可不间断工作。
实时采集传感器脉冲和温度、压力等模拟量; W78LE52采用11.MHz的晶振,由于工作电流较大,间歇工作,负责流量的非线性校正、参数输入、液晶显示、与上位机通讯等功能。
其UART用于远程通信。
部分通信接口电路如图1所示,两个单片机共用一块I2C接口FRAM(FM24CL16),形成两主一从的I2C总线控制模式。
W78LE52的P3.5和P3.2分别与78P相连。
P51和P50连接作为握手信号线A和B。
握手线A(简称A线)定义为总线控制和指示线,主要用于获取总线控制权和判断总线是否“忙” ;握手线B(简称A线B)定义为通知线,主要用于通知对方拿走数据。
2。
I2C总线仲裁 由于我们采用的是两主一从的I2C总线方式,所以防止两个主设备同时操作从设备(防冲突)是一个非常重要的问题。
带有硬件I2C模块的设备一般都是这样的。
器件内部有总线仲裁器和总线超时定时器:当总线超时定时器超时时,表明总线空闲。
此时,单片机可以发出总线获取命令,总线仲裁器通过一系列操作后,确认获取总线的成功或失败;超时定时器被清零,随后每次SCL状态改变都会清零总线上所有主机的超时定时器,以防止其溢出并指示总线处于“忙”状态。
在主机结束对总线的控制之前,不再生成 SCL 脉冲;超时定时器溢出,总线返回“空闲”状态。
然而,目前大多数微控制器都没有配备硬件I2C模块,当两个主机的工作频率相差很大时,超时定时器值只能设置为较大的值,这也会影响总线的效率。
这里介绍一种用软件模拟I2C总线仲裁的方式(软件模拟I2C读写操作程序很常见,这里不再赘述):使用握手线A,流程图如图所示图2中,当A线为高电平时,表明总线空闲;当其中一台主机想要获得总线控制权时,它首先查询总线是否空闲,如果是“忙”则退出,空闲时向A线发送一个测试序列(如:)。
每发送一位“1”后读取 A 线状态。
如果读取状态为“0”,则立即退出,说明其他设备已抢占总线;如果顺序读取的A线状态正确,则表示已成功获得总线控制权。
此时,必须将 A 线拉低至 表示总线处于“忙”状态,直到对高 A 线进行读或写操作使总线返回“空闲”状态。
不同的主机使用不同的测试序列,或者生成随机的测试序列。
测试序列长度可以选择更长,这样可以增加仲裁的可靠性。
3。
通讯协议 可靠的通讯系统。
除了良好的硬件电路外,通讯协议也至关重要。
当微控制器系统的RAM资源和执行速度都非常有限时,一个简单有效的协议就显得非常重要。
下面详细介绍一种更适合单片机通信的协议。
数据以数据包的形式传输。
数据包结构: ① 标头——表示数据包的开始,有助于数据包完整性检测,有时可以省略; ② 地址——要传输的数据包的目的地址,如果只有双机通信或者硬件区分地址可以省略; ③数据包长度——表示整个数据包的长度; ④命令——表示此数据包的作用; ⑤ 参数——需要传输的数据和参数; ⑥验证——验证数据包的正确性,可以是和校验、异或校验、CRC校验等或其组合; ⑦ Packet tail - 表示数据包的结束,这是有益的 数据包完整性检查有时可以省略。
? B线发送脉冲,通知对方取数据;接收方读取数据并处理后,将返回数据或通信失败标志写入发送方 FRAM 中的数据接收区,然后向握手线 B 发送脉冲以响应发送方,表 3 是MCU 1和MCU 2之间的通信。
如果需要MCU 2发送,只需交换操作流程即可。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签:
相关文章
06-17
06-18
06-18
06-17
06-18
最新文章
使用电子管有哪些注意事项?如何检查电子管之间是否短路?
博通支付1200万美元和解SEC财务欺诈指控
八名运营商高管确认加入虚拟运营商
内蒙古农牧区雷电灾害成因分析及防雷对策
北京联通将5G应用于世园会远程医疗急救
TD-SCDMA最后一轮冲刺测试启动,产业前景更加光明
专访阿里云总裁王健:云计算服务平台梦想成真
USB2.0控制器CY7C68013的接口设计与实现