一种单总线通信电路的制作方法

文档序号:15455006发布日期:2018-09-15 00:52阅读:282来源:国知局

本发明涉及一种通信电路,尤其是一种单总线通信电路。



背景技术:

在一些需要节约信号线资源的通信系统中,必须尽可能的减少信号线的数量,采用单总线通信是一种较好的解决方案。即两个设备的连接通过一根信号线和一根地线,而且很多通信应用中,需要通过信号线提供电源。但是常见的onewire总线并不适合通过信号线提供电源,而且onewire总线需要专门的芯片支持其物理层协议,实现成本较高。

有鉴于此,需要一种通过信号线提供电源和通信的单总线电路。



技术实现要素:

为了克服现有单总线使用复杂、成本较高、需要专门芯片且不能够通过信号线提供电源的问题,本发明提供一种在单总线上供电的同时进行主从半双工通信电路。本电路实现方式简单,成本低廉,且能够通过信号线提供电源。

本发明的电路上包括主机和从机。主机和从机通过一根信号线和一根地线连接,即单总线。主机为有源设备,从机为无源设备。

主机包括电源power、微控制器mcu1、电阻r1、电阻r2、npn型三极管q1。

从机包括二极管d1、电容c1、npn型三极管q2、电阻r3、微控制器mcu2。

主机方面,电源power产生电源vcc给主机供电,并通过r1、信号线、d1、c1给从机供电。微控制器mcu1的gpio2通过电阻r2和q1的基极相连;信号线连接至mcu1的gpio1以及q1的集电极,并通过r1上拉至vcc;q1的射极连接至地。

gpio1配置为高阻抗输入管脚,用于mcu1接收信号线的数据;gpio2配置为输出管脚,用于mcu1向信号线发送数据。gpio2为高电平时信号线为低电平,gpio2为低电平时信号线为高电平。

从机方面,d1阳极和信号线连接,阴极和电容c1连接,c1另外一端连接至地,d1和c1的连接处记为vdd,用于从信号线上提取电能给从机供电。mcu2的gpio4通过电阻r3连接至q2的基极。信号线连接至mcu2的gpio3和q2的集电极。q2的射极接地。当信号线为高电平时,d1给c1充电,当c1电容电量足够时,可以用来给从机供电,这样可以从信号线上提取电源给设备供电。

gpio3配置为高阻抗输入管脚,用于mcu2接收信号线的数据;gpio4配置为输出管脚,用于mcu2向信号线发送数据。gpio4为高电平时信号线为低电平,gpio2为低电平时信号线为高电平。

总线处于空闲阶段时,gpio2和gpio4均为低电平,信号线处于高电平状态,主机电源vcc通过r1和d1给c1充电,当vdd高于从机的工作电压后,从机可以工作。

总线处于开始阶段时,主机mcu1的gpio2负责发送数据,从机mcu2的gpio3负责接收数据。从机mcu2的gpio4处于低电平状态。

总线处于主机发送数据阶段时,主机mcu1的gpio2负责发送数据,从机mcu2的gpio3负责接收数据。从机mcu2的gpio4处于低电平状态。

总线处于从机应答数据阶段时,主机mcu1的gpio1负责接收数据,从机mcu2的gpio4负责发送数据。主机mcu1的gpio2处于低电平状态。

本发明采用4bit(4比特)数据为一个传输单元对待传输数据进行编码,以信号线高电平的时间长度代表传输单元的码值。假设传输单元高电平最小单位时间长度为tp,传输单元编码规则为:(传输单元码值+1)×tp时长的高电平。

比如取tp为1ms(1毫秒),则

4b’0000编码为:(4b’0000+1)×1ms=1ms高电平;

4b’0101编码为:(4b’0101+1)×1ms=6ms高电平;

4b’1111编码为:(4b’1111+1)×1ms=16ms高电平。

待传输数据按每4bit一组进行编码,每个编码为一个传输单元d,将待传输数据编码为传输单元组d1、d2….dn等n个传输单元。每个传输单元dx(x为1到n之间任意整数)的数值为4b’0000~4b’1111等16个数值中的一个,对应的其编码后的高电平时间长度为1tp~16tp等16个时间长度中的一个。

本发明的数据类型分为:起始符0、起始符1、起始符2、传输单元、停止符、分界符。其中:

起始符0为低电平,时间长度为tstart0;

起始符1为高电平,时间长度为tstart1;

起始符2为高电平,时间长度为tstart2;

传输单元为高电平,时间长度为(传输单元码值+1)×tp;

停止符为高电平,时间长度为tstop,tstop为tp整数倍;

分界符为低电平,时间长度为tint。

本发明的通信过程分为4个阶段:空闲阶段、开始阶段、主机发送数据阶段、从机应答数据阶段。

空闲阶段信号线为高电平。

开始阶段由主机发起,序列为:{起始符0、起始符1、分界符、起始符2}

主机发送数据阶段由主机发起,目的在于将主机的传输单元组d1、d2….dn等n个传输单元以及停止符依次发送给从机。在每个传输单元前,停止符前后均插入一个分界符,整个主机发送数据阶段的序列为:

{分界符、d1、分界符、d2、分界符、….dn-1、分界符、dn、分界符、停止符、分界符}

主机发送完最后一个分界符后进入空闲阶段,等待从机应答。如果一定时间tdelay内没有收到从机应答,则认为从机没有收到数据,主机需再次执行开始阶段以及主机发送数据阶段。

从机应答数据阶段由从机发起,目的在于将从机的传输单元组d1、d2….dn等n个传输单元以及停止符依次发送给主机。在每个传输单元前,停止符前后均插入一个分界符,整个从机应答数据阶段的序列为:

{分界符、d1、分界符、d2、分界符、….dn-1、分界符、dn、分界符、停止符、分界符}

从机发送完最后一个分界符后进入空闲阶段,等待主机发送数据。

本发明的有益效果是,本方法实现了可靠的数据通信、简单方便、容易实现且成本低廉。并且适当控制分界符tint以及传输单元最小单位时间长度tp的值,比如tint≤tp,可以让信号线在整个通信过程中绝大部分时间处于高电平状态,信号线含有较高的直流分量,可以在通信的同时给设备供电。

附图说明

下面结合附图和具体实施方式对本发明进一步说明。

图1为信号时序图;

图2为总线执行流程示意图;

图3为电路示意图。

具体实施方式

如图1信号时序图所示,数据类型分为:起始符0、起始符1、起始符2、传输单元、停止符、分界符。其中:

起始符0为低电平,时间长度为tstart0;

起始符1为高电平,时间长度为tstart1;

起始符2为高电平,时间长度为tstart2;

传输单元为高电平,时间长度为(传输单元码值+1)×tp;

停止符为高电平,时间长度为tstop,tstop为tp整数倍;

分界符为低电平,时间长度为tint。

本发明采用4bit数据为一个传输单元对待传输数据进行编码,以高电平的时间长度代表传输单元的码值。假设传输单元高电平最小单位时间长度为tp,传输单元编码规则为:(传输单元码值+1)×tp时长的高电平。

比如取tp为1ms(1毫秒),则

4b’0000编码为:(4b’0000+1)×1ms=1ms高电平;

4b’0101编码为:(4b’0101+1)×1ms=6ms高电平;

4b’1111编码为:(4b’1111+1)×1ms=16ms高电平。

待传输数据按每4bit一组进行编码,每个编码为一个传输单元d,将待传输数据编码为传输单元组d1、d2….dn等n个传输单元。每个传输单元dx(x为1到n之间任意整数)的数值为4b’0000~4b’1111等16个数值中的一个,对应的其编码后的高电平时间长度为1tp~16tp等16个时间长度中的一个。

本发明的通信过程分为4个阶段:空闲阶段、开始阶段、主机发送数据阶段、从机应答数据阶段。

空闲阶段信号线为高电平。

开始阶段由主机发起,序列为:{起始符0、起始符1、分界符、起始符2}

主机发送数据阶段由主机发起,目的在于将主机的传输单元组d1、d2….dn等n个传输单元以及停止符依次发送给从机。在每个传输单元前,停止符前后均插入一个分界符,整个主机发送数据阶段的序列为:

{分界符、d1、分界符、d2、分界符、….dn-1、分界符、dn、分界符、停止符、分界符}

主机发送完最后一个分界符后进入空闲阶段,等待从机应答。如果一定时间tdelay内没有收到从机应答,则认为从机没有收到数据,主机需再次执行开始阶段以及主机发送数据阶段。

从机应答数据阶段由从机发起,目的在于将从机的传输单元组d1、d2….dn等n个传输单元以及停止符依次发送给主机。在每个传输单元前,停止符前后均插入一个分界符,整个从机应答数据阶段的序列为:

{分界符、d1、分界符、d2、分界符、….dn-1、分界符、dn、分界符、停止符、分界符}

从机发送完最后一个分界符后进入空闲阶段,等待主机发送数据。

由于传输单元的高电平时间长度范围在1tp~16tp之间,因此tstop≥17tp且tstop为tp整数倍时总线的停止符更容易识别。考虑系统的实际处理能力以及信号线高电平占空比,一般取tdelay≥tp。

典型的,取tstart0=tp,tint=tp,tstart1=tp,tstart2=16tp,,tstop=17tp,tdelay=20tp。可以保证任何情况下信号线的高电平占空比大于50%。

典型的,取tstart0=0.5tp,tint=0.5tp,tstart1=tp,tstart2=16tp,,tstop=17tp,tdelay=20tp。可以保证任何情况下信号线的高电平占空比大于66.67%。

典型的,取tstart0=0.25tp,tint=0.25tp,tstart1=tp,tstart2=16tp,,tstop=17tp,tdelay=20tp。可以保证任何情况下信号线的高电平占空比大于80%。

如图2为总线执行流程示意图,执行顺序为:

1.100,开始,总线初始化,进入101;

2.101,总线空闲阶段,主机待传输单元组准备好后,进入102;

3.102,开始阶段,主机将开始阶段执行完毕后进入103;

4.103,主机发送数据阶段,主机将数据发送完毕后,进入104;

5.104,空闲阶段,进入105;

6.105,如果主机在tdelay时间内没有收到从机应答,则认为从机没有收到主机发送的数据,进入102,主机需再次执行开始阶段以及主机发送数据阶段;如果tdelay内收到从机应答,则进入106;

7.106,从机应答数据阶段,从机应答数据阶段执行完毕后,进入101。

如图3电路示意图,为本发明的电路,实现方式简单,成本低廉。主机和从机通过一根信号线和一根地线连接,即单总线。主机为有源设备,从机为无源设备。

主机包括电源power、微控制器mcu1、电阻r1、电阻r2、npn型三极管q1。

从机包括二极管d1、电容c1、npn型三极管q2、电阻r3、微控制器mcu2。

主机方面,电源power产生电源vcc给主机供电,并通过r1、信号线、d1、c1给从机供电。微控制器mcu1的gpio2通过电阻r2和q1的基极相连;信号线连接至mcu1的gpio1以及q1的集电极,并通过r1上拉至vcc;q1的射极连接至地。

gpio1配置为高阻抗输入管脚,用于mcu1接收信号线的数据;gpio2配置为输出管脚,用于mcu1向信号线发送数据。gpio2为高电平时信号线为低电平,gpio2为低电平时信号线为高电平。

从机方面,d1阳极和信号线连接,阴极和电容c1连接,c1另外一端连接至地,d1和c1的连接处记为vdd,用于从信号线上提取电能给从机供电。mcu2的gpio4通过电阻r3连接至q2的基极。信号线连接至mcu2的gpio3和q2的集电极。q2的射极接地。当信号线为高电平时,d1给c1充电,当c1电容电量足够时,可以用来给从机供电,这样可以从信号线上提取电源给设备供电。

gpio3配置为高阻抗输入管脚,用于mcu2接收信号线的数据;gpio4配置为输出管脚,用于mcu2向信号线发送数据。gpio4为高电平时信号线为低电平,gpio2为低电平时信号线为高电平。

总线处于空闲阶段时,gpio2和gpio4均为低电平,信号线处于高电平状态,主机电源vcc通过r1和d1给c1充电,当vdd高于从机的工作电压后,从机可以工作。

总线处于开始阶段时,主机mcu1的gpio2负责发送数据,从机mcu2的gpio3负责接收数据。从机mcu2的gpio4处于低电平状态。

总线处于主机发送数据阶段时,主机mcu1的gpio2负责发送数据,从机mcu2的gpio3负责接收数据。从机mcu2的gpio4处于低电平状态。

总线处于从机应答数据阶段时,主机mcu1的gpio1负责接收数据,从机mcu2的gpio4负责发送数据。主机mcu1的gpio2处于低电平状态。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1