一种一对多的TTL电平串口总线实现方法
文献发布时间:2023-06-19 11:35:49
技术领域
本发明属于电子技术领域,具体涉及一种一对多的TTL电平串口总线实现方法。
背景技术
TTL电平串口是一般芯片的串口输入和输出端,可以接不同的芯片完成不同的外设功能,如:RS232、RS485通信和液晶显示等。TTL电平信号被利用的最多是因为通常数据表示采用二进制规定,+5V等价于逻辑"1”,0V等价于逻辑“0”,这被称做TTL(晶体管-晶体管逻辑电平)信号系统,这是计算机处理器控制的设备内部各部分之间通信的标准技术。
但是,在现有技术中,主设备上的MEU要具有多个串口,一般成本都比较高,另外,如果受实际情况的限制,主设备上只有一个串口时,则无法达到一对多的串口通信。
为此,我们提出一种一对多的TTL电平串口总线实现方法来解决现有技术中存在的问题,使其通过主设备上的一个串口与多个外部设备的串口通信,一定程度上降低主设备的成本。
发明内容
本发明的目的在于提供一种一对多的TTL电平串口总线实现方法,以解决上述背景技术中提出现有技术中主设备上的MEU要具有多个串口,一般成本都比较高,另外,如果受实际情况的限制,主设备上只有一个串口时,则无法达到一对多的串口通信的问题,通过将主设备上的一个串口与多个外部设备的串口连接在一起,主设备上的RX脚配置是浮空输入,外部设备的TX脚配置是在上拉输出和浮空之间动态变化的,且外部设备配置一个唯一的ID号,根据不同外部设备的ID号主设备串口通过协议数据包的形式发送数据,外部设备接收数据,并从数据中解析数据包并根据符合自身ID号的数据进行数据处理,从而实现了主设备的IO口能与多个外部设备进行通信,一定程度上降低主设备的成本。
为实现上述目的,本发明采用了如下技术方案:
一种一对多的TTL电平串口总线实现方法,包括如下步骤:
S1、主设备与外部设备串口连接,将主设备上的IO口与多个外部设备的IO口连接;
S2、定义有效电平和无效电平,根据实际情况自主定义IO口的有效电平和无效电平;
S3、外部设备数据发送,外部设备的IO口检测到有效电平时,外部设备通过串口将自身ID数据发送给主设备;
S4、主设备数据接收,主设备通过IO口来控制外部设备的串口数据发送,并接收多个外部设备分别主设备接收多个设备的ID号;
S5、主设备数据发送,主设备按时间间隔依次循环只控制一个IO口输出有效电平,采用协议数据包的形式向外部设备发送数据;
S6、外部设备数据接收,收到协议数据包后进行符合自身ID号的数据,并对数据进行处理。
优选的,步骤1中所述主设备的外部设备上的串口均包括TX脚、RX脚、和IO脚,主设备的TX脚配置是上拉输出,RX脚配置是浮空输入,IO脚是用于控制外部设备的串口数据发送;外部设备的TX脚配置是在上拉输出和浮空之间动态变化,RX脚配置是浮空输入,IO脚是用于接收主设备发送的数据信息。
优选的,步骤2中所述有效电平设置为低电平,无效电平设置为高电平,主设备将多个外部设备的IO口分别进行编号,如IO1、IO2、IO3,且主设备串口发送的数据可以同时被所有的外部设备接收到,同一时间只有一个外部设备能发送数据给主设备,这时这个外部设备的TX脚配置是上拉输出,其他外部设备的TX脚配置是浮空,从而避免通信冲突。
优选的,步骤3中所述外部设备在数据发送时,具体包括如下流程:
A1、有数据要通过串口发送出去;
A2、把数据保存在串口发送缓存里;
A3、检测IO口是否为有效电平,会出现以下两种情形:
A3.1、当检测到有效电平时,把TX脚配置成上拉输出,则进入A4;
A3.2、当未检测到有效电平时,则返回A3继续检测有效电平;
A4、把发送缓存里的数据通过串口发出去;
A5、把TX脚配置成浮空,则完成数据的发送。
优选的,步骤4是所述主设备在数据接收时,具体包括如下流程:
B1、控制外部设备的IO口依次是IO1、IO2、IO3;
B2、控制一个IO口是有效电平,其他IO口均为无效电平;
B3、重新开始计时;
B4、是否超过时间,会出现以下两种情形:
B4.1、当超过时间时,则返回B2;
B4.2、当未超过时间时,则B5;
B5、串口是否收到数据,会出现以下两种情形:
B5.1、当串口收到数据时,则进入B6;
B5.2、当串口未收到数据时,则进入B4;
B6、保存数据;
B7、串口接收数据是否结束,会出现以下两种情形:
B7.1、当串口接收数据结束时,则进入B2;
B7.2、当串口接收数据未结束时,则进入B6。
优选的,步骤5中所述主设备在发送数据时,具体包括如下流程:
C1、把目标外部设备的ID号填入数据包;
C2、把数据包通过串口的TX脚发送出去。
优选的,步骤6中所述外部设备在数据接收时,具体包括如下流程:
D1、确认是否收到数据,会存在以下两种情形:
D1.1、当接收到数据时,则进入D2;
D1.2、当未接收到数据时,则返回D1;
D2、从数据中解析出数据包;
D3、数据包中的ID号是否为自身ID号,会出现以下两种情形:
D3.1、当数据包中的ID号不是自身ID号时,则返回D1;
D3.2、当数据包中的ID号为自身ID号时,则进入D4;
D4、对数据进行处理;
D5、重复D1-D4。
优选的,步骤3-步骤6中所述ID号是外部设备在生产时配置的,且每个外部设备具有唯一一个ID号,ID号用于区分主设备数据发送给具体外部设备的识别号码,且外部设备上电时就将自身的ID号发送给主设备。
本发明提出的一种一对多的TTL电平串口总线实现方法,与现有技术相比,具有以下优点:
本发明主要是通过将主设备上的一个串口与多个外部设备的串口连接在一起,主设备上的RX脚配置是浮空输入,外部设备的TX脚配置是在上拉输出和浮空之间动态变化的,且外部设备配置一个唯一的ID号,主设备根据不同外部设备的ID号通过IO口来控制外部设备的串口数据发送,按时间间隔依次循环只控制一个IO口输出有效电平,主设备通过协议数据包的形式发送数据,外部设备接收数据,并从数据中解析数据包,当解析后的数据符合自身ID号时,外部设备对数据进行处理,从而实现了主设备的IO口能与多个外部设备进行通信,一定程度上降低主设备的成本。
附图说明
图1为本发明的流程图;
图2为本发明的外部设备数据发送流程图;
图3为本发明的主设备数据接收流程图;
图4为本发明的主设备数据发送流程图;
图5为本发明的外部设备数据接收流程图;
图6为本发明的主设备与外部设备串口连接示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供了一种一对多的TTL电平串口总线实现方法,包括如下步骤:
S1、主设备与外部设备串口连接,将主设备上的IO口与多个外部设备的IO口连接;
S2、定义有效电平和无效电平,根据实际情况自主定义IO口的有效电平和无效电平;
S3、外部设备数据发送,外部设备的IO口检测到有效电平时,外部设备通过串口将自身ID数据发送给主设备;
S4、主设备数据接收,主设备通过IO口来控制外部设备的串口数据发送,并接收多个外部设备分别主设备接收多个设备的ID号;
S5、主设备数据发送,主设备按时间间隔依次循环只控制一个IO口输出有效电平,采用协议数据包的形式向外部设备发送数据;
S6、外部设备数据接收,收到协议数据包后进行符合自身ID号的数据,并对数据进行处理;
其中,步骤1中主设备的外部设备上的串口均包括TX脚、RX脚、和IO脚,主设备的TX脚配置是上拉输出,RX脚配置是浮空输入,IO脚是用于控制外部设备的串口数据发送;外部设备的TX脚配置是在上拉输出和浮空之间动态变化,RX脚配置是浮空输入,IO脚是用于接收主设备发送的数据信息;
其中,步骤2中有效电平设置为低电平,无效电平设置为高电平,主设备将多个外部设备的IO口分别进行编号,如IO1、IO2、IO3,且主设备串口发送的数据可以同时被所有的外部设备接收到,同一时间只有一个外部设备能发送数据给主设备,这时这个外部设备的TX脚配置是上拉输出,其他外部设备的TX脚配置是浮空,从而避免通信冲突;
根据实际需求也可将有效电平设置为高电平,无效电平设置为低电平,主设备通过IO口来控制外部设备的串口数据发送,主设备按时间间隔T依次循环只控制一个IO口输出有效电平,例如IO1输出有效电平,IO2,IO3等输出无效电平,间隔时间T后,IO2输出有效电平,IO1,IO3等输出无效电平,间隔时间T后……时间间隔T可以是1ms,10ms等,它大小需根据实际情况综合考虑来决定,例如MCU主频、串口波特率、通信时延要求……外部设备只有在IO口上检测到有效电平时,才会进行数据发送;
其中,步骤3中外部设备在数据发送时,具体包括如下流程:
A1、有数据要通过串口发送出去;
A2、把数据保存在串口发送缓存里;
A3、检测IO口是否为有效电平,会出现以下两种情形:
A3.1、当检测到有效电平时,把TX脚配置成上拉输出,则进入A4;
A3.2、当未检测到有效电平时,则返回A3继续检测有效电平;
A4、把发送缓存里的数据通过串口发出去;
A5、把TX脚配置成浮空,则完成数据的发送;
其中,步骤4是主设备在数据接收时,具体包括如下流程:B1、控制外部设备的IO口依次是IO1、IO2、IO3;
B2、控制一个IO口是有效电平,其他IO口均为无效电平;
B3、重新开始计时;
B4、是否超过时间,会出现以下两种情形:
B4.1、当超过时间时,则返回B2;
B4.2、当未超过时间时,则B5;
B5、串口是否收到数据,会出现以下两种情形:
B5.1、当串口收到数据时,则进入B6;
B5.2、当串口未收到数据时,则进入B4;
B6、保存数据;
B7、串口接收数据是否结束,会出现以下两种情形:B7.1、当串口接收数据结束时,则进入B2;
B7.2、当串口接收数据未结束时,则进入B6;
其中,步骤5中主设备在发送数据时,具体包括如下流程:C1、把目标外部设备的ID号填入数据包;
C2、把数据包通过串口的TX脚发送出去;
其中,步骤6中外部设备在数据接收时,具体包括如下流程:D1、确认是否收到数据,会存在以下两种情形:
D1.1、当接收到数据时,则进入D2;
D1.2、当未接收到数据时,则返回D1;
D2、从数据中解析出数据包;
D3、数据包中的ID号是否为自身ID号,会出现以下两种情形:D3.1、当数据包中的ID号不是自身ID号时,则返回D1;
D3.2、当数据包中的ID号为自身ID号时,则进入D4;
D4、对数据进行处理;
D5、重复D1-D4;
其中,步骤3-步骤6中ID号是外部设备在生产时配置的,且每个外部设备具有唯一一个ID号,ID号用于区分主设备数据发送给具体外部设备的识别号码,且外部设备上电时就将自身的ID号发送给主设备。
工作原理:通过将主设备上的一个串口与多个外部设备的串口连接在一起,主设备上的RX脚配置是浮空输入,外部设备的TX脚配置是在上拉输出和浮空之间动态变化的,且外部设备配置一个唯一的ID号,主设备根据不同外部设备的ID号通过IO口来控制外部设备的串口数据发送,按时间间隔依次循环只控制一个IO口输出有效电平,主设备通过协议数据包的形式发送数据,外部设备接收数据,并从数据中解析数据包,当解析后的数据符合自身ID号时,外部设备对数据进行处理,通过主设备数据发送、主设备数据接收、外部设备数据发送和外部设备数据接收可解决串口一对多的冲突,从而实现了主设备的IO口能与多个外部设备进行通信,一定程度上降低主设备的成本。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
- 一种一对多的TTL电平串口总线实现方法
- 一种多模块间TTL电平串口总线通信电路