一种数据通讯装置、控制器及其数据通讯方法与流程

文档序号:19019677发布日期:2019-11-01 20:32阅读:136来源:国知局
一种数据通讯装置、控制器及其数据通讯方法与流程

本发明属于通讯技术领域,具体涉及一种数据通讯装置、控制器及其数据通讯方法,尤其涉及一种通过计时器模拟uart(universalasynchronousreceiver/transmitter,通用异步收发传输器)发送数据方案的实现装置、控制器及其数据通讯方法。



背景技术:

现阶段随着物联技术的不断进步以及用户对于通讯速度要求的逐渐提高,家用电器增加物联技术势在必行。目前也有越来越多的家用电器增加了wifi功能,可以让用户直接用手机来操作空调等家用电器,但通讯速度过慢仍为用户不满wifi功能的主要投诉点。

为提高通讯速度,在绝大部分主芯片的选择上,选择支持全双工通讯的主mcu来提高通讯速度;而升级使用全双工通讯芯片,则会导致成本增加。

上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。



技术实现要素:

本发明的目的在于,针对上述缺陷,提供一种数据通讯装置、控制器及其数据通讯方法,以解决通过使用全双工通讯的主mcu来提高通讯速度会导致成本增加的问题,达到降低成本的效果。

本发明提供一种数据通讯装置,包括:uart接收模块和uart发送模块;其中,所述uart接收模块,用于基于uart模块自身的uart接收功能,实现数据的uart接收;所述uart发送模块,用于模拟uart模块的uart发送时序、或基于uart模块自身的uart发送功能,实现数据的uart发送;其中,所述uart发送模块,包括:待进行数据通讯的控制器自身的资源模块,该模拟uart模块,用于模拟uart模块的uart发送时序,实现数据的uart发送;或另一uart模块,该另一uart模块,用于基于uart模块自身的uart发送功能,实现数据的uart发送。

可选地,所述模拟uart模块,包括:输出模块、计数模块和控制模块;其中,所述输出模块,用于模拟所述uart模块的uart发送功能,实现数据发送;计数模块,用于根据设定波特率范围进行计时,得到计时时间;控制模块,用于根据所述计时时间控制所述输出模块的发送时序,实现所述输出模块模拟所述uart模块的uart发送功能。

可选地,其中,所述uart模块,包括:半双工芯片的uart通讯资源模块;和/或,所述输出模块,包括:控制器的io口;和/或,所述计数模块,包括:控制器的内部定时中断资源模块。

可选地,所述控制模块根据所述计时时间控制所述输出模块的发送时序,包括:控制所述控制器上电初始化,设置所述输出模块的端口电平为第一信号,并按预设的中断要求配置所述计数模块;确定是否需要发送数据;若需要发送数据,则存储待发送数据,计算该待发送数据的校验位,并启动所述计数模块的计数功能;在所述计数模块的计时中断控制下,控制所述输出模块根据预设的波特率在计时时间到来的情况下发送下一个数据位,以通过模拟uart的发送时序实现数据的uart发送。

可选地,所述控制模块控制所述输出模块根据预设的波特率在计时时间到来的情况下发送下一个数据位,包括:确定待发送数据的的数据位个数在预设数值范围所处位置;根据所述位置对所述输出模块的端口电平进行调整或发送相应数据位的对应数据后,控制所述数据位个数自动增加、或在发送结束位后关闭所述计数模块的计数功能。

可选地,所述控制模块根据所述位置对所述输出模块的端口电平进行调整或发送相应数据位的对应数据,包括:若所述数据位个数为预设数值范围的下限,则发送起始位,即将所述输出模块的端口电平置为第二信号;若所述数据位个数大于预设数值范围的下限、且小于预设数值范围的上限,则依据所述数据位个数的大小顺序依次发送待发送数据的每个数据位;若所述数据位个数等于预设数值范围的上限,则发送校验位;若所述数据位个数大于预设数值范围的上限,则发送结束位,并将所述输出模块的端口电平置为第一信号。

与上述装置相匹配,本发明再一方面提供一种控制器,包括:以上所述的数据通讯装置。

与上述控制器相匹配,本发明再一方面提供一种控制器的数据通讯方法,包括:通过一uart模块作为uart接收模块,基于uart模块自身的uart接收功能,实现数据的uart接收;通过uart发送模块,模拟uart模块的uart发送时序、或基于uart模块自身的uart发送功能,实现数据的uart发送;其中,所述uart发送模块,包括:待进行数据通讯的控制器自身的资源模块,该模拟uart模块,用于模拟uart模块的uart发送时序,实现数据的uart发送;或另一uart模块,该另一uart模块,用于基于uart模块自身的uart发送功能,实现数据的uart发送。

可选地,通过模拟uart模块模拟uart模块的uart发送时序,包括:通过输出模块,模拟所述uart模块的uart发送功能,实现数据发送;通过计数模块,根据设定波特率范围进行计时,得到计时时间;通过控制模块,根据所述计时时间控制所述输出模块的发送时序,实现所述输出模块模拟所述uart模块的uart发送功能。

可选地,通过控制模块根据所述计时时间控制所述输出模块的发送时序,包括:控制所述控制器上电初始化,设置所述输出模块的端口电平为第一信号,并按预设的中断要求配置所述计数模块;确定是否需要发送数据;若需要发送数据,则存储待发送数据,计算该待发送数据的校验位,并启动所述计数模块的计数功能;在所述计数模块的计时中断控制下,控制所述输出模块根据预设的波特率在计时时间到来的情况下发送下一个数据位,以通过模拟uart的发送时序实现数据的uart发送。

可选地,通过控制模块控制所述输出模块根据预设的波特率在计时时间到来的情况下发送下一个数据位,包括:确定待发送数据的的数据位个数在预设数值范围所处位置;根据所述位置对所述输出模块的端口电平进行调整或发送相应数据位的对应数据后,控制所述数据位个数自动增加、或在发送结束位后关闭所述计数模块的计数功能。

可选地,通过控制模块根据所述位置对所述输出模块的端口电平进行调整或发送相应数据位的对应数据,包括:若所述数据位个数为预设数值范围的下限,则发送起始位,即将所述输出模块的端口电平置为第二信号;若所述数据位个数大于预设数值范围的下限、且小于预设数值范围的上限,则依据所述数据位个数的大小顺序依次发送待发送数据的每个数据位;若所述数据位个数等于预设数值范围的上限,则发送校验位;若所述数据位个数大于预设数值范围的上限,则发送结束位,并将所述输出模块的端口电平置为第一信号。

本发明的方案,通过利用半双工芯片来实现全双工通讯功能,可以节约成本;还可以提高家用电器的通讯速度,提升用户使用舒适度。

进一步,本发明的方案,通过使用只能支持半双工通讯芯片的内部定时器资源,可以实现芯片全双工的通讯功能,保证全双工通讯功能正常,同时降低成产品成本。

进一步,本发明的方案,通过利用半双工芯片的uart通讯资源以及内部定时中断作为完成全双工通讯的资源配置,并使用内部计数器根据不同波特率计时不同时间,控制普通输出口电平来模拟uart发送功能,在只支持半双工通讯的芯片平台上来实现全双工的通讯方式,成本低、用户体验好。

由此,本发明的方案,通过使用只支持半双工通讯的芯片来实现全双工通讯功能,解决通过使用全双工通讯的主mcu来提高通讯速度会导致成本增加的问题,达到降低成本的效果。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

附图说明

图1为本发明的数据通讯装置的一实施例的结构示意图;

图2为本发明的数据通讯方法的一实施例的流程示意图;

图3为本发明的方法中通过模拟uart模块模拟uart模块的uart发送时序的一实施例的流程示意图;

图4为本发明的方法中根据所述计时时间控制所述输出模块的发送时序的一实施例的流程示意图;

图5为本发明的方法中根据预设的波特率在计时时间到来的情况下发送下一个数据位的一实施例的流程示意图;

图6为本发明的控制器的一实施例的发送模拟处理的流程示意图,其中,(a)为发送数据逻辑流程示意图,(b)为发送数据模拟处理方式的流程示意图;

图7为本发明的控制器的一实施例的芯片资源的使用框架结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明具体实施例及相应的附图对本发明技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

根据本发明的实施例,提供了一种数据通讯装置。参见图1所示本发明的装置的一实施例的结构示意图。该数据通讯装置可以包括:uart接收模块和uart发送模块。

具体地,所述uart接收模块,可以包括:一uart模块,用于基于uart模块自身的uart接收功能,实现数据的uart接收。

可选地,所述uart模块,可以包括:半双工芯片的uart通讯资源模块。

例如:利用半双工芯片的uart通讯资源以及内部定时中断作为完成全双工通讯的资源配置,并提供一种相应的软件算法,在只支持半双工通讯的芯片平台上来实现全双工的通讯方式。

例如:采用支持半双工通讯的芯片的两组不同uart口接收和发送数据,或者采用一组uart口和外部中断模拟uart接收。

由此,通过采用半双工芯片的uart通讯资源模块作为uart模块,成本低,且可以可靠实现数据的接收功能。

具体地,所述uart发送模块,可以用于模拟uart模块的uart发送时序、或基于uart模块自身的uart发送功能,实现数据的uart发送。优选地,所述uart发送模块,可以用于通过使用计数器和io口,模拟uart模块的uart发送时序、或基于uart模块自身的uart发送功能,实现数据的uart发送。即,所述模拟uart模块,可以用于通过使用控制器的内部计数器和外部io口,模拟uart模块的uart发送时序、或基于uart模块自身的uart发送功能,实现数据的uart发送。

例如:在功能逻辑上,使用uart接收功能,而不使用其发送功能;发送功能通过使用内部计数器及普通io口模拟uart时序,达到实现uart发送功能。

其中,所述uart发送模块,可以包括:待进行数据通讯的控制器自身的资源模块,该模拟uart模块,用于模拟uart模块的uart发送时序,实现数据的uart发送;或另一uart模块,该另一uart模块,用于基于uart模块自身的uart发送功能,实现数据的uart发送。

例如:一种通过计时器模拟uart(即通用异步收发传输器)发送数据方案,利用半双工芯片来实现全双工通讯功能,节约成本;还可以提高家用电器的通讯速度,提升用户使用舒适度,降低用户投诉。

例如:使用只能支持半双工通讯芯片的内部其他资源,实现芯片全双工的通讯功能,保证全双工通讯功能正常,同时降低成产品成本。这样,本发明的方案,可以实现使用只支持半双工通讯的芯片来实现全双工通讯功能。通过该方案,可以使用低成本的半双工芯片达到全双工通讯功能的要求,开发产品成本低廉,提高产品市场竞争力。

由此,通过使uart模块实现接收功能,并使模拟uart模块模拟uart的发送时序实现发送功能,不仅实现了数据的可靠通讯,而且降低了成本。

可选地,所述模拟uart模块,可以包括:输出模块、计数模块和控制模块。

也就是说,该数据通讯装置,可以包括:uart模块、输出模块、计数模块和控制模块。其中,输出模块、计数模块和控制模块,均是控制器自身的内部资源模块。

例如:使用一组uart(即通用异步收发传输器)+普通输出口+内部计数器模拟uart方案。如因芯片资源有限,或实际运用需要使用多组uart口的时候,而无法满足同时使用两组uart口来实现全双工通讯,则可考虑使用内部计数器根据不同波特率计时不同时间,控制普通输出口电平来模拟uart发送功能,从而实现全双工通讯要求。

具体地,所述输出模块,可以用于模拟所述uart模块的uart发送功能,实现数据发送。

更可选地,所述输出模块,可以包括:控制器的io口。

由此,通过使用控制器的io口作为输出模块,不需增加成本,且能够可靠实现数据的发送。

具体地,计数模块,可以用于根据设定波特率范围进行计时,得到计时时间。

更可选地,所述计数模块,可以包括:控制器的内部定时中断资源模块。

由此,通过使用控制器的内部定时中断资源作为计数模块,不需增加成本,且可以在利用io口模拟uart发送功能时实现可靠的计时中断控制。

具体地,控制模块,可以用于根据所述计时时间控制所述输出模块的发送时序,实现所述输出模块模拟所述uart模块的uart发送功能。

例如:控制模块,可以采用控制器如mcu的控制部分。

由此,通过使用输出模块、计数模块和控制模块的配合,实现模拟uart模块的发送功能,结构简单、成本低,且数据发送的可靠性可以得到保证。

进一步可选地,所述控制模块根据所述计时时间控制所述输出模块的发送时序,可以包括:

所述控制模块,具体还可以用于控制所述控制器上电初始化,设置所述输出模块的端口电平为第一信号,并按预设的中断要求配置所述计数模块。例如:该第一信号可以为高电平。

例如:上电初始化,设置使用模拟uart功能的发送端口的普通io口(即发送io口)为高电平,初始化需使用到的计数器。

所述控制模块,具体还可以用于确定是否需要发送数据;若需要发送数据,则存储待发送数据,计算该待发送数据的校验位,并启动所述计数模块的计数功能;以及,在所述计数模块的计时中断控制下,控制所述输出模块根据预设的波特率在计时时间到来的情况下发送下一个数据位,以通过模拟uart的发送时序实现数据的uart发送;若不需要发送数据,则继续等待。

例如:判断是否需要发送数据,如否,则不作任何处理;如是,则将待发送数据的存入变量a,并计算校验位,并启动计数器计时。判断发送的数据,根据波特率,设定好计时器时间,计时时间到,发送下一个数据bit,模拟uart发送功能。

由此,通过在上电初始化时配置计数模块的计时设置,并在需要发送数据时启动计时中断中断、进而模拟uart的发送功能实现数据发送,实现使控制模块根据计时时间控制输出模块的发送时序,使得对uart发送功能的模拟精准且可靠。

更可选地,所述控制模块控制所述输出模块根据预设的波特率在计时时间到来的情况下发送下一个数据位,可以包括:

所述控制模块,具体还可以用于确定待发送数据的的数据位个数在预设数值范围所处位置。

所述控制模块,具体还可以用于根据所述位置对所述输出模块的端口电平进行调整或发送相应数据位的对应数据后,控制所述数据位个数自动增加、或在发送结束位后关闭所述计数模块的计数功能。例如:发送完成后,变量b自加1。如一帧数据发送完成,则重置变量,关闭计时器中断,转入步骤b;如一帧数据未发送完成,则等待,带计时器时间到,继续发送数据。

例如:进入计时器中断,则判断待发送数据的位个数(如变量b),并根据判断结果进行处理。

由此,通过基于待发送数据的数据位个数在预设数值范围所处位置对相应位数据进行对应的发送处理,使得对相应数据位的数据发送的可靠且精准。

更进一步可选地,所述控制模块根据所述位置对所述输出模块的端口电平进行调整或发送相应数据位的对应数据(即,所述控制模块根据待发送数据的的数据位个数在预设数值范围所处位置,对所述输出模块的端口电平进行调整或发送相应数据位的对应数据),可以包括以下任一种发送情形。

第一种发送情形:所述控制模块,具体还可以用于若所述数据位个数为预设数值范围的下限,则发送起始位,即将所述输出模块的端口电平置为第二信号。例如:第二信号可以为低电平信号。

例如:若变量b为零,则表示需发送起始位,发送io口置低电平。

第二种发送情形:所述控制模块,具体还可以用于若所述数据位个数大于预设数值范围的下限、且小于预设数值范围的上限,则依据所述数据位个数的大小顺序依次发送待发送数据的每个数据位。

例如:若变量b不为零且小于9,则表示待发送数据的(如变量a)位(此处变量a大小为一个byte即8个bit,变量b正好为1-8,故可利用此关系依次发送变量a的每个数据位)。

第三种发送情形:所述控制模块,具体还可以用于若所述数据位个数等于预设数值范围的上限,则发送校验位。

例如:若变量b为9,则表示发送校验位。

第四种发送情形:所述控制模块,具体还可以用于若所述数据位个数大于预设数值范围的上限,则发送结束位,并将所述输出模块的端口电平置为第一信号。

例如:若变量b大于9,则发送结束位,发送io口置高电平(结束位根据通讯协议规定,发送一次还是两次,此例以一个结束位为例说明,两位结束位只是多发一次结束位而已),发送结束位。

由此,通过对每个数据位数据的不同发送和处理方式,保证了每个数据位数据发送的精准性和可靠性。

经大量的试验验证,采用本发明的技术方案,通过利用半双工芯片来实现全双工通讯功能,可以节约成本。还可以提高家用电器的通讯速度,提升用户使用舒适度。

根据本发明的实施例,还提供了对应于数据通讯装置的一种控制器。该控制器可以包括:以上所述的数据通讯装置。

在一个可选例子中,本发明的方案,提供一种通过计时器模拟uart(即通用异步收发传输器)发送数据方案,利用半双工芯片来实现全双工通讯功能,节约成本;还可以提高家用电器的通讯速度,提升用户使用舒适度,降低用户投诉。

其中,半双工(halfduplex)数据传输指数据可以在一个信号载体的两个方向上传输,但是不能同时传输。例如,在一个局域网上使用具有半双工传输的技术,一个工作站可以在线上发送数据,然后立即在线上接收数据,这些数据来自数据刚刚传输的方向。像全双工传输一样,半双工包含一个双向线路(线路可以在两个方向上传递数据)。

在一个可选例子中,本发明的方案,使用只能支持半双工通讯芯片的内部其他资源如内部定时中断资源等,实现芯片全双工的通讯功能,保证全双工通讯功能正常,同时降低成产品成本。

这样,本发明的方案,可以实现使用只支持半双工通讯的芯片来实现全双工通讯功能。通过该方案,可以使用低成本的半双工芯片达到全双工通讯功能的要求,开发产品成本低廉,提高产品市场竞争力。

在一个可选具体实施方式中,可以参见图6和图7所示的例子,对本发明的方案的具体实现过程进行示例性说明。

本发明的方案,利用半双工芯片的uart通讯资源以及内部定时中断作为完成全双工通讯的资源配置,并提供一种相应的软件算法,在只支持半双工通讯的芯片平台上来实现全双工的通讯方式。

其中,在本发明的方案中,因只支持半双工通讯的芯片,大部分都是因为发送缓存buffer(bufferregister,缓冲寄存器)与接收缓存buffer通用同一个地址(即uart收发缓存)。全双工通讯时,芯片同时发送与接收数据,因uart收发缓存,buffer同一地址无法同时存放两个数据,从而导致接收和发送数据撞车(即:在进行数据发送时,同时在接收,数据未发送完成而接收已完成,则接收数据存入uart收发缓存buffer而导致发送数据丢失),引起通讯功能混乱,故在半双工芯片的内部资源中,解决此问题即可。

在一个可选具体例子中,使用一组uart(即通用异步收发传输器)+普通输出口+内部计数器模拟uart方案。

如因芯片资源有限,或实际运用需要使用多组uart口的时候,而无法满足同时使用两组uart口来实现全双工通讯,则可考虑使用内部计数器根据不同波特率计时不同时间,控制普通输出口电平来模拟uart发送功能,从而实现全双工通讯要求。

其中,在功能逻辑上,使用uart接收功能,而不使用其发送功能;发送功能通过使用内部计数器及普通io口模拟uart时序,达到实现uart发送功能。

具体地,外部中断模拟uart发送的算法步骤可以如下:

步骤a、上电初始化,设置使用模拟uart功能的发送端口的普通io口(即发送io口)为高电平,初始化需使用到的计数器(打开中断使能,计数器中断进入时间,以4800bps为例,则计数器的进入时间为1/4800=0.208ms)。

其中,打开中断使能,是指:芯片有很多资源,计时器、uart接收与uart发送都是中断操作;以计时器为例,如果需要使用芯片计时器资源,则需要打开中断使能,表示打开这个芯片资源信号,芯片可进入此计时器中断。

计数器中断进入时间,是指:计时器是一种中断,设置好后,每隔设定时间,进入计时器中断函数,处理函数里的程序。

步骤b、判断是否需要发送数据,如否,则不作任何处理;如是,则将待发送数据的存入变量a,并计算校验位,并启动计数器计时。

例如:是否需要发送数据,可以是根据双方通讯协议规定,如用户对空调进行操作,则运行模式改变(可能是风挡改变也可能是模式改变),则需要同步更新通讯模块空调的运行模式,则此时需要发送数据。

其中,此校验位根据通讯双方模块规定的通讯协议来觉得是奇校验、偶校验还是没有校验,本例为有校验位,如通讯协议没有校验位则跳过此步骤直接发送结束位。

步骤c、进入计时器中断,则判断待发送数据的位个数(如变量b),并根据判断结果进行处理。即,判断发送的数据,根据波特率,设定好计时器时间,计时时间到,发送下一个数据bit,模拟uart发送功能。

其中,uart发送数据都是一个字节,以发送数据0x55(此数据为变量a)为例,uart发送的数据,数据格式为:起始位(bit0)+数据(0x55)+校验位(bit1orbit0)+结束位(bit1)。这里,根据双方协议不同,结束位可以使一个bit,也可以是两个bit。

可选地,若变量b为零,则表示需发送起始位,发送io口置低电平。

可选地,若变量b不为零且小于9,则表示待发送数据的(如变量a)位(此处变量a大小为一个byte即8个bit,变量b正好为1-8,故可利用此关系依次发送变量a的每个数据位)。

可选地,若变量b为9,则表示发送校验位。

可选地,若变量b大于9,则发送结束位,发送io口置高电平(结束位根据通讯协议规定,发送一次还是两次,此例以一个结束位为例说明,两位结束位只是多发一次结束位而已),发送结束位。

其中,发送完成后,变量b自加1。

步骤d、如一帧数据发送完成,则重置变量,关闭计时器中断,转入步骤b;如一帧数据未发送完成,则等待,带计时器时间到,转入步骤c,继续发送数据。

本发明的方案中,采用支持半双工通讯的芯片的两组不同uart口接收和发送数据,或者采用一组uart口和外部中断模拟uart接收。

由于本实施例的控制器所实现的处理及功能基本相应于前述图1所示的装置的实施例、原理和实例,故本实施例的描述中未详尽之处,可以参见前述实施例中的相关说明,在此不做赘述。

经大量的试验验证,采用本发明的技术方案,通过使用只能支持半双工通讯芯片的内部定时器资源,可以实现芯片全双工的通讯功能,保证全双工通讯功能正常,同时降低成产品成本。

根据本发明的实施例,还提供了对应于控制器的一种控制器的数据通讯方法,如图2所示本发明的方法的一实施例的流程示意图。该控制器的数据通讯方法可以包括:步骤s110和步骤s120。

在步骤s110处,通过uart接收模块,基于uart模块自身的uart接收功能,实现数据的uart接收。

可选地,所述uart模块,可以包括:半双工芯片的uart通讯资源模块。

例如:利用半双工芯片的uart通讯资源以及内部定时中断作为完成全双工通讯的资源配置,并提供一种相应的软件算法,在只支持半双工通讯的芯片平台上来实现全双工的通讯方式。

例如:采用支持半双工通讯的芯片的两组不同uart口接收和发送数据,或者采用一组uart口和外部中断模拟uart接收。

由此,通过采用半双工芯片的uart通讯资源模块作为uart模块,成本低,且可以可靠实现数据的接收功能。

在步骤s120处,通过一uart模块作为uart发送模块,模拟uart模块的uart发送时序、或基于uart模块自身的uart发送功能,实现数据的uart发送。优选地,所述uart发送模块,可以用于通过使用计数器和io口,模拟uart模块的uart发送时序、或基于uart模块自身的uart发送功能,实现数据的uart发送。即,所述模拟uart模块,可以用于通过使用控制器的内部计数器和外部io口,模拟uart模块的uart发送时序、或基于uart模块自身的uart发送功能,实现数据的uart发送。

例如:在功能逻辑上,使用uart接收功能,而不使用其发送功能;发送功能通过使用内部计数器及普通io口模拟uart时序,达到实现uart发送功能。

其中,所述uart发送模块,可以包括:待进行数据通讯的控制器自身的资源模块,该模拟uart模块,用于模拟uart模块的uart发送时序,实现数据的uart发送;或另一uart模块,该另一uart模块,用于基于uart模块自身的uart发送功能,实现数据的uart发送。

例如:一种通过计时器模拟uart(即通用异步收发传输器)发送数据方案,利用半双工芯片来实现全双工通讯功能,节约成本;还可以提高家用电器的通讯速度,提升用户使用舒适度,降低用户投诉。

例如:使用只能支持半双工通讯芯片的内部其他资源,实现芯片全双工的通讯功能,保证全双工通讯功能正常,同时降低成产品成本。这样,本发明的方案,可以实现使用只支持半双工通讯的芯片来实现全双工通讯功能。通过该方案,可以使用低成本的半双工芯片达到全双工通讯功能的要求,开发产品成本低廉,提高产品市场竞争力。

由此,通过使uart模块实现接收功能,并使模拟uart模块模拟uart的发送时序实现发送功能,不仅实现了数据的可靠通讯,而且降低了成本。

可选地,可以结合图3所示本发明的方法中通过模拟uart模块模拟uart模块的uart发送时序的一实施例流程示意图,进一步说明步骤s120中通过模拟uart模块模拟uart模块的uart发送时序的具体过程,可以包括:步骤s210至步骤s230。

步骤s210,通过输出模块,模拟所述uart模块的uart发送功能,实现数据发送。

步骤s220,通过计数模块,根据设定波特率范围进行计时,得到计时时间。

步骤s230,通过控制模块,根据所述计时时间控制所述输出模块的发送时序,实现所述输出模块模拟所述uart模块的uart发送功能。

也就是说,该数据通讯方法的实现装置,可以包括:uart模块、输出模块、计数模块和控制模块。其中,输出模块、计数模块和控制模块,均是控制器自身的内部资源模块。

由此,通过使用输出模块、计数模块和控制模块的配合,实现模拟uart模块的发送功能,结构简单、成本低,且数据发送的可靠性可以得到保证。

进一步可选地,可以结合图4所示本发明的方法中根据所述计时时间控制所述输出模块的发送时序的一实施例流程示意图,进一步说明根据所述计时时间控制所述输出模块的发送时序(具体是步骤s230中通过控制模块根据所述计时时间控制所述输出模块的发送时序)的具体过程,可以包括:步骤s310至步骤s340。

步骤s310,控制所述控制器上电初始化,设置所述输出模块的端口电平为第一信号,并按预设的中断要求配置所述计数模块。例如:该第一信号可以为高电平。

例如:上电初始化,设置使用模拟uart功能的发送端口的普通io口(即发送io口)为高电平,初始化需使用到的计数器。

步骤s320,确定是否需要发送数据。

步骤s330,若需要发送数据,则存储待发送数据,计算该待发送数据的校验位,并启动所述计数模块的计数功能。

步骤s340,在所述计数模块的计时中断控制下,控制所述输出模块根据预设的波特率在计时时间到来的情况下发送下一个数据位,以通过模拟uart的发送时序实现数据的uart发送;若不需要发送数据,则继续等待。

例如:判断是否需要发送数据,如否,则不作任何处理;如是,则将待发送数据的存入变量a,并计算校验位,并启动计数器计时。判断发送的数据,根据波特率,设定好计时器时间,计时时间到,发送下一个数据bit,模拟uart发送功能。

由此,通过在上电初始化时配置计数模块的计时设置,并在需要发送数据时启动计时中断中断、进而模拟uart的发送功能实现数据发送,实现使控制模块根据计时时间控制输出模块的发送时序,使得对uart发送功能的模拟精准且可靠。

更可选地,可以结合图5所示本发明的方法中根据预设的波特率在计时时间到来的情况下发送下一个数据位的一实施例流程示意图,进一步说明根据预设的波特率在计时时间到来的情况下发送下一个数据位(具体是步骤s340中通过控制模块控制所述输出模块根据预设的波特率在计时时间到来的情况下发送下一个数据位)的具体过程,可以包括:步骤s410和步骤s420。

步骤s410,确定待发送数据的的数据位个数在预设数值范围所处位置。

步骤s420,根据所述位置对所述输出模块的端口电平进行调整或发送相应数据位的对应数据后,控制所述数据位个数自动增加、或在发送结束位后关闭所述计数模块的计数功能。例如:发送完成后,变量b自加1。如一帧数据发送完成,则重置变量,关闭计时器中断,转入步骤b;如一帧数据未发送完成,则等待,带计时器时间到,继续发送数据。

例如:进入计时器中断,则判断待发送数据的位个数(如变量b),并根据判断结果进行处理。

由此,通过基于待发送数据的数据位个数在预设数值范围所处位置对相应位数据进行对应的发送处理,使得对相应数据位的数据发送的可靠且精准。

更进一步可选地,步骤s420中通过控制模块根据所述位置对所述输出模块的端口电平进行调整或发送相应数据位的对应数据(即,所述控制模块根据待发送数据的的数据位个数在预设数值范围所处位置,对所述输出模块的端口电平进行调整或发送相应数据位的对应数据),可以包括以下任一种发送情形。

第一种发送情形:若所述数据位个数为预设数值范围的下限,则发送起始位,即将所述输出模块的端口电平置为第二信号。例如:第二信号可以为低电平信号。

例如:若变量b为零,则表示需发送起始位,发送io口置低电平。

第二种发送情形:若所述数据位个数大于预设数值范围的下限、且小于预设数值范围的上限,则依据所述数据位个数的大小顺序依次发送待发送数据的每个数据位。

例如:若变量b不为零且小于9,则表示待发送数据的(如变量a)位(此处变量a大小为一个byte即8个bit,变量b正好为1-8,故可利用此关系依次发送变量a的每个数据位)。

第三种发送情形:若所述数据位个数等于预设数值范围的上限,则发送校验位。

例如:若变量b为9,则表示发送校验位。

第四种发送情形:若所述数据位个数大于预设数值范围的上限,则发送结束位,并将所述输出模块的端口电平置为第一信号。

例如:若变量b大于9,则发送结束位,发送io口置高电平(结束位根据通讯协议规定,发送一次还是两次,此例以一个结束位为例说明,两位结束位只是多发一次结束位而已),发送结束位。

由此,通过对每个数据位数据的不同发送和处理方式,保证了每个数据位数据发送的精准性和可靠性。

由于本实施例的方法所实现的处理及功能基本相应于前述控制器的实施例、原理和实例,故本实施例的描述中未详尽之处,可以参见前述实施例中的相关说明,在此不做赘述。

经大量的试验验证,采用本实施例的技术方案,通过利用半双工芯片的uart通讯资源以及内部定时中断作为完成全双工通讯的资源配置,并使用内部计数器根据不同波特率计时不同时间,控制普通输出口电平来模拟uart发送功能,在只支持半双工通讯的芯片平台上来实现全双工的通讯方式,成本低、用户体验好。

综上,本领域技术人员容易理解的是,在不冲突的前提下,上述各有利方式可以自由地组合、叠加。

以上所述仅为本发明的实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。

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