一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种微控制器的单线仿真装置的制作方法

2022-02-20 11:52:21 来源:中国专利 TAG:


1.本实用新型涉及微控制器技术领域,具体为一种微控制器的单线仿真装置。


背景技术:

2.微控制器(mcu)是将微型计算机的主要部分集成在一个芯片上的单芯片微型计算机,其开发需要使用相应的开发工具和仿真工具。目前,市场上的仿真工具主要为仿真器,仿真器与微控制器通信时采用的仿真接口主要包括jtag接口、swd接口,jtag接口为四线制协议,swd接口为三线制协议(不包括电源线vcc和地线gnd)。开发人员通过仿真接口可以下载程序,并可以通过keil系统实现断点设置、查看变量、全速运行、单步运行等操作。
3.jtag接口、swd接口的引脚数较多,在开发低成本微控制器时,若预留的芯片管脚数比较少,则需要反复进行连接线的拆卸、安装操作,并且需要额外的连接线及连接设备实现接口连接通信,这样的方式不仅操作复杂,而且会占用较多资源。另外,仿真器与上位机pc的连接一般通过usb接口实现,usb启动时,需要在相应的上位机中安装驱动程序,所以仿真器提供厂商需要设计特定的驱动程序,这不仅使仿真器的适用范围和使用灵活性受限,而且增加了厂商的工作量及仿真器的开发难度。


技术实现要素:

4.针对现有技术中存在通过jtag接口或swd接口将仿真器与微控制器连接的方式操作复杂,占用资源多的问题,以及通过usb接口将仿真器与上位机pc连接时,需安装驱动程序,增加了仿真器的开发难度的问题,本实用新型提供了一种微控制器的单线仿真装置,其结构设计简单合理,便于仿真器与微控制器连接,可降低仿真器的开发难度。
5.为实现上述目的,本实用新型采用如下技术方案:
6.一种微控制器的单线仿真装置,其包括仿真器,所述仿真器用于微控制器的开发中,所述仿真器分别连接所述微控制器、上位机,其特征在于,所述仿真器与所述微控制器为单线连接,所述单线为一根通信线,所述单线的一端连接所述微控制器的调试端口,另一端连接所述仿真器的通信管脚,所述仿真器通过usb hid设备与所述上位机连接,所述仿真器包括控制器、时钟、定时器,所述时钟、定时器均与所述控制器连接。
7.其进一步特征在于,
8.所述控制器的12管脚通过所述单线与所述微控制器连接;
9.所述控制器的型号为stm32f103;
10.所述usb hid设备通过usb hid设备连接电路与所述仿真器的所述控制器的29管脚连接,所述usb hid设备连接电路包括三极管q1、电阻r15、r23、r26、r34、r35;
11.其还包括灯光提示模块,所述灯光提示模块包括发光二极管yellow、发光二极管red、发光二极管green、电阻r36、r53、r54、r21、电容c21,所述灯光提示模块连接所述控制器的7、31、45管脚;
12.所述控制器的外围连接有外围电路,所述外围电路包括晶振y1,所述晶振y1的一
端分别连接电容c23、电阻r37、控制器的5管脚,所述晶振y1的另一端分别连接电阻r37一端、电容c28一端、控制器的6管脚,所述电容c23、c28的另一端接地,所述控制器的9管脚分别连接电容c29、c30一端,电容c29、c30另一端接地,所述控制器的44管脚连接电阻r3一端,所述电阻r3另一端接地。
13.一种基于上述单线仿真装置的编码解码方法,所述编码解码方法包括仿真器与微控制器的编码方法、通信方法、解码方法,其特征在于,
14.所述编码方法中,所述仿真器与所述微控制器的通信协议采用曼彻斯特编码;
15.对所述曼彻斯特编码进行解码时,使用所述仿真器的定时器的捕获功能,通过所述仿真器中控制器的通信管脚与所述微控制器进行单线通信,所述通信方法包括:控制所述仿真器的通信管脚的输出模式、输入模式,当所述通信管脚处于所述输出模式时,所述仿真器发送数据给所述微控制器,当所述通信管脚处于所述输入模式时,所述微控制器发送数据给所述仿真器;
16.所述仿真器接收所述微控制器发送的数据时,通过第二定时器的捕获方式的中断进行,所述解码方法包括:b1、数据初始化,所述数据包括接收到的接收数据位数,记为count_int(即中断的次数),初值为0,所述微控制器发送一位数据的周期,记为capture_t,所述微控制器发送一位数据的半周期,记为in_half_t,初值为0,解码出错,记为debug_error,定时器的前一次计数数值,记为capture_value1、定时器的当前计数数值,记为capture_value2,初值均为0,所述通信管脚的上升沿、下降沿之间的时间差capture_value,当前所述通信管脚的电平值,记为io_value,高电平为1,低电平为0,256个接收数据的数组capture_data[256],用于存储接收到的所述接收数据;
[0017]
b2、进入中断;
[0018]
b3、判断所述通信管脚的电压是否符合条件,即判断所述通信管脚的电平是否为高电平1,若是,则设置所述通信管脚时钟信号的下降沿触发,所述通信管脚高电平值为1,反之,则设置所述通信管脚时钟信号的上升沿触发,所述通信管脚的电平值为0;
[0019]
b4、获取所述定时器的当前计数数值,所述通信管脚的上升沿与下降沿之间的时间差为所述定时器的当前计数数值减去所述定时器的前一次计数数值;
[0020]
b5、判断所述接收数据的位数是否等于零,若是,则所述接收数据的数组等于当前所述通信管脚的电平值,接收到的所述接收数据的位数累计加1,中断返回,若否,则进入步骤b51:
[0021]
b51、如果capture_t-2《=capture_value《=capture_t 2,则:
[0022]
a、如果in_half_t=1,则debug_error=1,中断返回;
[0023]
b、如果in_half_t=0,则capture_data[count_int]=io_value,所述接收数据的位数累计加1,中断返回;
[0024]
b52、如果capture_t/2-2《=capture_value《=capture_t/2 2,则:
[0025]
a、如果in_half_t=0,则in_half_t=1,中断返回;
[0026]
b、如果in_half_t=1,则capture_data[count_int]=io_value,所述接收数据的位数累计加1,in_half_t=0中断返回;
[0027]
b53、若capture_value值超出预先设定阈值范围,则debug_error=1,中断返回;
[0028]
b6、中断返回,下次接收到中断信号时重复所述步骤b1;
[0029]
数据接收完成后,再将所述数组capture_data[256]中的值进行组合,得到所需的解码数据。
[0030]
其进一步特征在于,
[0031]
所述通信方法中,所述仿真器与所述微控制器的通信频率为10k~500khz;
[0032]
所述通信方法中,通过时钟、定时器对所述仿真器的通信管脚的输出模式、输入模式进行控制,包括:a1:所述仿真器中的控制器对所述微控制器进行正常读写之前,对所述微控制器的频率进行测量,建立握手连接,所述微控制器上电或者复位时发出时钟信号;
[0033]
a2、所述仿真器的通信管脚处于输入模式时,通过所述定时器进行捕获,所述定时器捕获所述时钟信号的上升沿,同时计算两个相邻沿之间的时长作为时钟周期;
[0034]
a3、所述仿真器的通信管脚处于输出模式时,向所述微控制器发送若干个“0”,所述“0”的数量与所述时钟信号的数量相同,所述微控制器接收到所述“0”之后,向所述仿真器发出握手连接信号;
[0035]
a4、所述仿真器与所述微控制器握手成功后,所述仿真器对所述微控制器的相关调试寄存器进行读写,所述读写包括写数据、读数据。
[0036]
步骤a3中,所述握手连接信号为echo,所述echo由010组成;
[0037]
步骤a4中,如果进行所述写数据,所述仿真器发出写指令,并写入要写的数据,所述微控制器收到所述写指令和数据后,回复一个第一应答信号;
[0038]
如果进行所述读数据,所述仿真器发出读指令,所述微控制器收到所述读指令后,发出响应数据,所述仿真器收到所述响应数据后,给出第二应答信号;
[0039]
所述微控制器发出所述响应数据是在所述仿真器的通信管脚处于输出模式下进行,所述响应数据包括0或1,所述微控制器发送0或1的方式包括:
[0040]
发送0时,所述通信管脚输出高电平,延时,所述通信管脚输出低电平,延时;
[0041]
发送1时,所述通信管脚输出低电平,延时,所述通信管脚输出高电平,延时;
[0042]
延时的时间长度需确保所述仿真器的输出频率和建立握手连接时所述微控制器发出的频率相等。
[0043]
采用本实用新型上述结构可以达到如下有益效果:本技术单线仿真装置中的仿真器与微控制器为单线连接,单线为单根通信线,单线的一端连接微控制器的调试端口,另一端连接仿真器的通信管脚,从而通过一根通信线实现了仿真器与微控制器的通信连接,该连接只占用了仿真器的通信管脚,无需占用较多管脚或端口资源,结构简单,连接操作简单快捷。
[0044]
仿真器通过usb hid设备与上位机连接,usb hid设备为一种符合hid类别规范的人机接口设备,其无需安装驱动即可使用,因此,通过usb hid设备将仿真器与上位机连接时,无需开发专门的驱动程序,也无需在上位机中安装驱动程序,降低了开发难度。
附图说明
[0045]
为了更清楚地说明本实用新型实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,下面描述中的附图仅仅是本实用新型的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0046]
图1为本实用新型单线仿真装置的连接结构框图;
[0047]
图2为本实用新型仿真器中的控制器接口电路及其外围电路的电路原理图;
[0048]
图3为本实用新型仿真器的运行流程图;
[0049]
图4为本实用新型编码解码方法中曼彻斯特编码的时钟信号图;
[0050]
图5为本实用新型微控制器接收数据解码流程图;
[0051]
图6为本实用新型usb hid设备连接电路的电路原理图;
[0052]
图7为本实用新型灯光提示模块的电路原理图;
[0053]
图8为采用本实用新型单线仿真装置及编码解码方法后,采用逻辑分析仪抓取的仿真器与微控制器之间传输的信号图(即仿真器与微控制器之间的通信效果图)。
具体实施方式
[0054]
为了使本技术领域的人员更好地理解本实用新型方案,下面将结合本实用新型实施例中的附图,对本实用新型实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本实用新型一部分的实施例,而不是全部的实施例。基于本实用新型中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本实用新型保护的范围。
[0055]
需要说明的是,本实用新型的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、装置、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0056]
在本实用新型的一个实施例中,提供了一种微控制器的单线仿真装置,参见图1、图2,其包括仿真器1,仿真器1用于微控制器2的开发中,仿真器1分别连接微控制器2、上位机4,仿真器1与微控制器2为通过单线5(不包括电源线vcc和地线gnd)连接,单线5为一根信号线,单线5的一端连接微控制器2的调试端口,另一端连接仿真器1的通信管脚pa2,通过单线5实现仿真器与微控制器间的数据交换,仿真器1与上位机4(即pc机)的usb连接时,使用标准的usb hid设备3,这样就不需要开发专门的驱动程序给仿真器用,因为上位机4的windows是自带usb hid驱动的。
[0057]
仿真器1包括控制器、时钟、定时器,时钟、定时器均与控制器连接,本实施例中控制器的型号为stm32f103,在此编写固件,控制器通过一个gpio管脚(即通信管脚pa2)与微控制器2进行仿真的数据通信,微控制器为8051型微控制器,内置一个debug硬件模块,负责与仿真器进行通信,并且可以控制微控制器的执行过程。
[0058]
usb hid设备通过usb hid设备连接电路与控制器的29管脚、32管脚、33管脚连接,见图6,usb hid设备连接电路包括三极管q1、电阻r15、r23、r26、r34、r35;usb hid设备连接电路具体连接结构包括:控制器的12管脚连接单线的另一端,控制器的29管脚连接电阻r15一端,电阻r15另一端分别连接电阻r23一端、三极管q1基极,三极管q1发射极、电阻r23另一端均连接电压源vdd,三极管q1的漏极连接电阻r26一端,另一端分别连接电阻r35一端、控制器的33管脚,电阻r35另一端连接usb hid设备j2的3管脚,usb hid设备j2的2管脚连接电阻r34一端,电阻r34另一端连接控制器的32管脚,usb hid设备j2的电源端口vcc连接电压源vbus,usb hid设备j2的5管脚分别连接6管脚、电容c74一端、电阻r31一端,电容c74一端、
电阻r31另一端接地。三极管q1具有开关作用,用于控制usb hid设备的导通或关闭,电阻r15、r23、r26、r34、r35具有分压限流作用。
[0059]
其还包括灯光提示模块,见图7,灯光提示模块包括发光二极管yellow、发光二极管red、发光二极管green、电阻r36、r53、r54、r21、电容c21,灯光提示模块连接控制器的7、31、45管脚;灯光提示模块中各电子元件的具体连接电路结构包括:控制器的31管脚连接发光二极管yellow的负极,发光二极管yellow的正极连接电阻r36一端,电阻r36另一端分别连接电阻r53一端、电压源vdd,电阻r53另一端连接发光二极管red的正极,发光二极管red的负极接地,发光二极管green的负极连接控制器的45管脚,发光二极管green的正极连接电阻r54一端,电阻r54另一端连接电压源vddo,控制器的7管脚分别连接电阻r21一端、电容c21一端,电容c21另一端接地,电阻r21另一端连接电压源vdd。发光二极管yellow、发光二极管red、发光二极管green用于显示控制器的工作状态,根据发光二极管判断仿真器与微控制器、仿真器与上位机是否正常通信,若亮则表明正常通信,反之,则表明通信异常,提示操作人员重新连接或检修,电阻r36、r53、r54、r21用于分压限流,电容c21用于滤波。
[0060]
控制器的外围连接有外围电路,外围电路包括晶振y1,晶振y1的一端分别连接电容c23、电阻r37、控制器的5管脚,晶振y1的另一端分别连接电阻r37一端、电容c28一端、控制器的6管脚,电容c23、c28的另一端接地,控制器的9管脚分别连接电容c29、c30一端,电容c29、c30另一端接地,控制器的44管脚连接电阻r3一端,电阻r3另一端接地。电容c23、c28、c29、c30用于滤波,滤除通信数据中的干扰信号,进一步确保了仿真器开发调试的准确性,同时确保了控制器工作的稳定性。
[0061]
编写仿真器固件的工作流程参考图3,工作流程具体包括:依次实现时钟初始化、端口初始化、定时器初始化、usb初始化、数据处理,其中数据处理包括依次实现的接收usb数据传输命令、通过单线给微控制器发命令、中断内对微控制器发送的数据信号解码、回复usb数据传输命令,该usb数据传输命令的回复主要通过仿真器给微控制器发送usb数据包的方式实现。
[0062]
仿真器与上位机通过usb连接,识别为usb hid设备,上位机运行keil软件,根据keil agdi文档,编写dll插件,给keil调用。keil调用dll插件里的函数,dll调用usb hid函数与仿真器进行通信。
[0063]
以下为仿真器固件运行过程中,进行数据处理时的数据编码解码方法的一种具体实施例,基于上述单线仿真装置的编码解码方法,编码解码方法包括仿真器与微控制器的编码方法、通信方法、解码方法,编码方法中,仿真器与微控制器的通信协议采用曼彻斯特(即manchester)编码,参考图4,数据在一个周期内发生下降沿变化为0,数据在一个周期内发生上升沿变化为1,图4中,clock为时钟信号,data为数据变化(数据以0、1表示),曼彻斯特编码遵循ieee802.3标准,图4中manchester对应的曲线表示上升沿与下降沿之间的距离,该距离为capture_t或capture_t/2。
[0064]
对上述曼彻斯特编码进行解码时,使用控制器的第一定时器捕获功能,使用仿真器中控制器的通信管脚pa2与微控制器进行通信,通信方法包括:控制仿真器的通信管脚pa2的输出模式、输入模式,当通信管脚pa2处于输出模式时,仿真器发送数据给微控制器,当通信管脚pa2处于输入模式时,微控制器发送数据给仿真器;仿真器与微控制器的通信频率为10k~500khz。
[0065]
上述通信方法中,通过时钟、定时器对仿真器的通信管脚pa2的输出模式、输入模式进行控制,包括:a1:仿真器中的控制器对微控制器进行正常读写之前,对微控制器的频率进行测量,建立握手连接,微控制器上电或者复位时发出64个时钟信号;a2、仿真器的通信管脚pa2处于输入模式时,通过定时器进行捕获,定时器捕获时钟信号的64个上升沿,同时计算两个相邻沿之间的时长作为时钟周期;
[0066]
a3、使仿真器的通信管脚pa2处于输出状态,向微控制器发送64个“0”,微控制器的发送频率与微控制器的输出频率大致相等,即“0”的数量与时钟信号的数量相同,微控制器接收到64个“0”之后,向仿真器发出握手连接信号,握手连接信号为echo,echo由010组成;
[0067]
a4、仿真器与微控制器握手成功后,仿真器对微控制器的相关调试寄存器进行读写,读写包括写数据、读数据。具体地:如果进行写数据,仿真器发出写指令,并写入要写的数据,微控制器收到写指令和数据后,回复一个第一应答信号;如果进行读数据,仿真器发出读指令,微控制器收到读指令后,发出响应数据,仿真器收到指令和响应数据后,给出第二应答信号;
[0068]
微控制器发出响应数据是在仿真器的通信管脚pa2处于输出模式下进行,响应数据包括0或1,微控制器发送0或1的方式包括:发送0时,通信管脚pa2输出高电平,延时,通信管脚pa2输出低电平,延时;发送1时,通信管脚pa2输出低电平,延时,通信管脚pa2输出高电平,延时;其中,延时的时间长度需确保仿真器的输出频率和建立握手连接时微控制器发出的频率相等。
[0069]
参考图5,仿真器接收微控制器发送的数据时是通过第二定时器捕获方式的中断功能进行的,通信管脚pa2切换为输入模式,首先捕获下降沿(曼彻斯特协议规定微控制器发送的第一位数据是0,第一次捕获下降沿),数据解码方法包括:b1、数据初始化;数据具体包括:仿真器接收到的接收数据位数count_int(即中断的次数),初值为0;
[0070]
微控制器发送一位数据的周期,记为变量capture_t;
[0071]
微控制器发送一位数据的半周期,记为变量in_half_t,初值为0;
[0072]
解码出错,记为变量debug_error;
[0073]
第一定时器的数值,记为变量capture_value1、第二定时器的数值,记为变量capture_value2,初始值均为0;
[0074]
通信管脚pa2的上升沿、下降沿之间的时间差,记为变量capture_value;
[0075]
当前通信管脚pa2的电平值,记为变量io_value,高电平为1,低电平为0;
[0076]
256个接收数据的数组,记为变量capture_data[256],用于存储接收到的接收数据;
[0077]
按以下步骤进行解码:b2、进入中断;
[0078]
b3、判断通信管脚pa2的电压是否符合条件,即判断通信管脚pa2的电平是否为高电平1,若是,则设置通信管脚pa2时钟信号的下降沿触发,通信管脚pa2高电平值为1,即io_value=1,反之,则设置通信管脚pa2时钟信号的上升沿触发,通信管脚pa2的电平值为0,即io_value=0;
[0079]
b4、获取定时器的当前计数数值,即capture_value2=定时器tim2当前的计数值,通信管脚的上升沿与下降沿之间的时间差为定时器的当前计数数值减去定时器的前一次计数数值,即capture_value=capture_value2-capture_value1;
[0080]
b5、判断接收数据的位数是否等于零,若是,即count_int=0,则接收数据的数组等于当前通信管脚pa2的电平值,即capture_data[count_int]=io_value,接收到的接收数据的位数累计加1,即count_int ,中断返回,若否,即count_int!=0,则进入步骤b51:
[0081]
b51、如果capture_t-2《=capture_value《=capture_t 2,则:
[0082]
a、如果in_half_t=1,则debug_error=1,中断返回;
[0083]
b、如果in_half_t=0,则capture_data[count_int]=io_value,接收数据的位数累计加1,即count_int ,中断返回;此时抓获的数据周期=capture_t,允许有误差。
[0084]
b52、如果capture_t/2-2《=capture_value《=capture_t/2 2,则:
[0085]
a、如果in_half_t=0,则in_half_t=1,中断返回;当前收到的接收数据的半个周期,即capture_t/2;
[0086]
b、如果in_half_t=1,则capture_data[count_int]=io_value,接收数据的位数累计加1(即count_int ),in_half_t=0中断返回,表示前面已有半周期数据,当前又是半周期,所以采样到一位数据;
[0087]
b53、capture_value值超出或不在预先设定阈值范围,即capture_value值太小或太大,则debug_error=1,中断返回,表明抓获的数据周期不在预先设定范围内;
[0088]
b6、上述步骤b1~b中,中断返回后,下次接收到中断信号时重复步骤b1。
[0089]
数据接收完成后,再将数组capture_data[256]中的值进行组合,得到所需的解码数据。在接收数据过程中,如果debug_error=1,那么说明这组数据就有错。将上述单线仿真装置及编码解码方法应用于微控制器的开发中,仿真装置与微控制器采用上述单线及上述编码解码方法发送、回复数据时,采用逻辑分析仪采集仿真器与微控制器之间的通信波形,仿真器发送信号后,微控制器基于本技术的编码解码方法进行快速回复,见图8,横轴表示时间,曲线表示通信信号,从图8可以看出,采用本技术单线装置及编码解码方法,能够实现数据信号的有效快速传输。
[0090]
以上的仅是本技术的优选实施方式,本实用新型不限于以上实施例。可以理解,本领域技术人员在不脱离实用新型的精神和构思的前提下直接导出或联想到的其他改进和变化,均应认为包含在实用新型的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献