查看完整版本: 一种eeprom编程器 STM32F103

shangdawei 发表于 2017-4-10 00:21:31

一种eeprom编程器 STM32F103


本实用新型涉及程序烧录的装置,尤其涉及一种EEPROM编程器。该编程器包括:主控芯片、输入输出模块、存储器、电池供电电路和拨码选择开关,主控芯片通过并行接口与输入输出模块连接;主控芯片通过串行外设接口与存储器连接;电池供电电路分别与主控芯片、输入输出模块、存储器和拨码选择开关连接;拨码选择开关与主控芯片连接;主控芯片根据拨码选择开关选择的下载方式,通过输入输出模块从PC机或U盘中获取待编程数据,并且根据拨码选择开关选择的存储地址,将待编程数据存入存储器;主控芯片根据拨码选择开关选择的存储地址,从存储器中获取待编程数据,并将待编程数据存入外部的EEPROM芯片。编程器有效提高烧写效率。

说明
—种EEPROM编程器

技术领域

        本实用新型涉及程序烧录的装置,尤其涉及一种EEPROM编程器。

背景技术

        EEPROM(ElectricalIy Erasable Programmable Read-Only Memory,电可擦可编程只读存储器芯片)作为电可擦除存储器具有可多次擦写且掉电不掉数据的特点,很多硬件都需要EEPROM来存储一些关键的硬件数据或者配置信息,例如,全自动洗衣机需要将数十种材质的衣服的洗涤、漂洗、脱水和烘干等相关参数存入EEPROM的特定地址。待编程数据不同时,编程器通过串口或USB与PC机相连,在PC端运行厂家提供的烧写软件,通过运行烧写软件将待编程数据存入EEPROM芯片,操作非常繁琐且效率极低,并且由于每次烧写或修改数据均需要与PC相连,编程器携带不方便。

实用新型内容

        本实用新型提供一种EEPROM编程器,以提高烧写或修改EEPROM数据的效率。

        本实用新型实施例提供一种EEPROM编程器,包括:

        主控芯片、输入输出模块、存储器、电池供电电路和拨码选择开关,其中,所述主控芯片通过并行接口与所述输入输出模块连接;

        所述主控芯片通过串行外设接口与所述存储器连接;

        所述电池供电电路分别与所述主控芯片、所述输入输出模块、所述存储器和所述拨码选择开关连接;

        所述拨码选择开关与所述主控芯片连接;

        所述主控芯片根据所述拨码选择开关选择的下载方式,通过所述输入输出模块从PC机或U盘中获取待编程数据,并且根据所述拨码选择开关选择的存储地址,将所述待编程数据存入所述存储器;

        所述主控芯片根据所述拨码选择开关选择的存储地址,从所述存储器中获取所述待编程数据,并将所述待编程数据存入外部的EEPROM芯片。

        本实用新型实施例中提供的EEPROM编程器,输入输出模块将待编程数据通过并行接口中8个数据总线传送到主控芯片的数据缓冲区,主控芯片通过串行外设接口与存储器进行数据传输,速率可达32MHz是使用I2C总线传输速率的4倍,从而使得修改或烧写EEPROM芯片过程中,待编程数据在主控芯片和存储器之间的传输速率提高,进而提高了烧写或修改EEPROM数据的效率。

附图说明

        此处所说明的附图用来提供对本实用新型的进一步理解,构成本实用新型的一部分,并不构成对本实用新型的限定。在附图中:

        图1为本实用新型实施例中提供的EEPROM编程器的结构原理框图;        图2为实施例中提供的主控芯片的连接电路图;

        图3为实施例中提供的输入输出模块的连接电路图;

        图4为实施例中提供的存储器的连接电路图;

        图5为实施例中提供的拨码选择开关的连接电路图;

        图6为实施例中提供的锂电池充电电路;

        图7为实施例中提供的供电切换电路;

        图8为实施例中提供的U盘供电电路;

        图9为本实用新型实施例中STM32F103主程序下载状态流程图;

        图10为本实用新型实施例中STM32F103主程序烧写状态流程图;

        图11为本实用新型实施例中STM32F103主程序状态图。

具体实施方式

        下面结合附图及具体实施例对本实用新型进行更加详细与完整的说明。可以理解的是,此处所描述的具体实施例仅用于解释本实用新型,而非对本实用新型的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本实用新型相关的部分而非全部内容。

        图1为本实用新型实施例中提供的EEPROM编程器的结构原理框图;图2至图5分别为实施例中主控芯片101、输入输出模块102、存储器103和拨码选择开关104的连接电路图;图6至图8分别为实施例中提供的锂电池充电电路、供电切换电路和为U盘供电电路。

        参考图1,本实用新型实施例中提供的EEPROM编程器包括主控芯片101、输入输出模块102、存储器103、电池供电电路105和拨码选择开关104,其中,所述主控芯片101通过并行接口与所述输入输出模块102连接;所述主控芯片101通过SPI接口(SerialPeripheral Interface,串行外设接口)与所述存储器103连接;所述电池供电电路105分别与所述主控芯片101、所述输入输出模块102、所述存储器103和所述拨码选择开关104连接;所述拨码选择开关104与所述主控芯片101连接;所述主控芯片101根据所述拨码选择开关104选择的下载方式,通过所述输入输出模块102从PC机或U盘中获取待编程数据,并且根据所述拨码选择开关104选择的存储地址,将所述待编程数据存入所述存储器103 ;所述主控芯片101根据所述拨码选择开关104选择的存储地址,从所述存储器103中获取所述待编程数据,并将所述待编程数据存入外部的EEPROM芯片。

        进一步的,所述输入输出模块102包括CH375芯片,并且所述CH375芯片上设置有用于连接PC机或U盘的USB总线接口。CH375是一个USB总线的通用接口芯片,支持HOST主机方式和SLAVE设备方式。如图3所示,CH375通过并行接口(8位双向数据总线D7〜D0、读选通输入引脚RD#、写选通输入引脚WR#、片选输入引脚CS#、中断输出引脚INT#以及地址输入引脚A0)与主控芯片101连接,通过UD+和UD-引脚与PC机或U盘相连接。在CH375的外围电路中,RSTI引脚与VCC之间跨接电容C23,在XI和XO引脚之间连接一个标称频率为12MHz的晶体Y4,并且分别为XI和XO引脚对地连接一个高频振荡电容C22和C30。VCC引脚连接外部电源,V3引脚对地连接电容C24。ACT#引脚通过电阻R24与二极管D9的输出端连接,二极管D9的输入端与电源连接。在USB主机方式下,CH375还提供了串行通信方式,通过串行输入、串行输出和中断输出与单片机/DSP/MCU等相连接。CH375的USB主机方式支持各种常用的USB全速设备,外部单片机/DSP/MCU可以通过CH375按照相应的USB协议与USB设备通信。本实施例中采用CH375在EEPROM编程器与PC机或U盘间传输待编程数据能够有效提高数据的传输速率。

        进一步的,所述主控芯片101包括STM32F103芯片。STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核。STM32F103系列时钟频率达到72MHz,是同类产品中性能最高的产品;以16位产品的价格得到比16位产品大幅提升的性能,是16位产品用户的最佳选择。128K的闪存,最大64K字节的SRAM。时钟频率72MHz时,从闪存执行代码,STM32功耗36mA,是32位市场上功耗最低的产品,相当于

0.5mA/MHz。如图2所示,主控芯片的5和6引脚之间连接有电阻R29和晶体Y3,其中5弓丨脚与晶体Y3的输出端2连接,并且分别通过电容C26和C25接地,其中,6引脚与晶体Y3的输入端I连接,12和13引脚之间连接有电容C28和C27,13引脚通过电阻R28连接电源,19引脚通过电容C38与18引脚连接,32引脚通过电容C39与31引脚连接,48引脚通过电容C40与47引脚连接,64引脚通过电容C29与63引脚连接,2、3、4、20、53和54引脚分别通过电阻R27接地,7引脚连接电源,17、16和18引脚分别与PCCOM芯片J3中RXD2,TXD2和GND总线连接。

        进一步的,所述主控芯片101上设置有用于与EEPROM芯片连接的I2C接口。EEPROM是可用户更改的只读存储器(R0M),其可通过高于普通电压的作用来擦除和重编程(重写)。不像EPROM芯片,EEPROM不需从计算机中取出即可修改。在一个EEPROM中,当计算机在使用的时候是可频繁地重编程的,EEPROM的寿命是一个很重要的设计考虑参数。EEPROM的一种特殊形式是闪存,其应用通常是个人电脑中的电压来擦写和重编程。I2C总线通过两根线(如图2所示,串行数据线IIC_SDA和串行时钟线IIC_SCL)使挂接到总线上的器件相互进行信息传递,总线使用软件寻址来识别每个器件,总线上的每一次数据传递都是由主控器发起,然后主控器等待被控器的应答信号,接到应答信号之后,主控器发送数据给被控器或接收被控器发出来的数据。

        具体的,存储器103包括W25X16芯片。W25X16芯片作为FLASH存储器可以为用户提供存储解决方案,并且具有PCB板(Printed wire board,印刷电路板)占用空间少、引脚数量少以及功耗低等特点。与普通串行FLASH相比,W25X16使用更灵活,性能更出色,它非常适合做代码下载应用,例如存储声音,文本和数据,所有的封装都是节省空间型的。如图4所示,W25X16中VCC引脚和HOLD引脚连接电源,并且VCC引脚对地连接电容C37,WP#引脚连接电源,CS引脚通过FCS总线与主控芯片101中14引脚连接,S0、CLK和SI引脚依次分别通过SPIMPSO,SPICK和SPIM0SI总线与主控芯片101中22,21和23引脚相连。STM32F103通过SPISCK、SPMIS0、SPM0SI总线与W25X16进行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,低位在后,为全双工通信,数据传输速度总体来说比I2C总线要快,速度可达到Mbps级。因此,在所述主控芯片101和所述存储器103之间采用SPI通信能够有效提高待编程数据的传输速率。

        所述电池供电电路105中设置有锂电池,如图6所示,USB Host插座(或接头)DlO中D-和D+引脚分别对地连接电容C31和电容C41,USB Host插座(或接头)DlO中VCC引脚通过二极管Dll与电源连接;电源对地连接电容C32和电容C33,并且连接TP4056芯片U4中VCC引脚,TP4056芯片中GND引脚接地,并且VCC引脚连接二极管D12的输入端,进而通过电阻R32与STDBY引脚连接,CE引脚连接二极管D13的输入端,进而通过电阻R33与CHRG引脚连接,TEMP引脚和PROG引脚分别通过电阻R36和R35接地,电源通过电阻R30连接TEMP引脚,BAT和TEMP引脚分别连接电池BAT2的正极和负极,电池BAT2与第一二极管D18并联,并且电池BAT2的正极与第一二极管D18的负极,BAT引脚通过电容C35接地。由于所述锂电池BAT2的两端连接有第一二极管D18,从而有效避免锂电池BAT2正负极接反时损坏充电管理芯片。进一步的,电池供电电路中选用TP4056作为充电管理芯片,从而充电电流最大1000mA,充电速度快。

        所述电池供电电路105包括供电切换电路,如图7所示,所述供电切换电路中电源通过电阻R43接地,并与场效应管Q2的栅极和第二二极管D17的输入端连接,场效应管Q2的源极与锂电池连接,场效应管的漏极和二极管的输出端与min USB线连接,min USB线通过电容C47接地,RT9193芯片的+VIN和SHDN弓丨脚连接并与min USB线连接,VoutF和VoutS引脚均与电源连接,并且均通过电容C49接地。需要说明的是,本实施例中,当通过min USB线连接编程器时,供电切换电路中电源VCC为+5V,IRF9630截止,此时编程器由min USB线提供的5V电源经RT9193芯片稳压输出3.3V供电。当断开min USB线与编程器连接时,供电切换电路中电源VCC为OV,IRF9630导通,此时编程器由3.7V锂电池经RT9193稳压输出

3.3V供电。RT9193优点是具有低功耗和低压差,可以保证锂电池电压跌落时也可以稳定输出。

        电池供电电路105还包括U盘供电电路。如图8所示,U盘供电电路中USB Dervice插座(或接头)D14中D-和D+引脚分别通过电容C42和C43接地,VCC引脚连接min USB线的输出端,min USB线的输入端通过电容器C44接地,并且通过感应器L2和稳压二极管D15连接USB的电压输出线,NCP1400的CE和OUT引脚均与Vout USB连接,LX引脚输出5V电压,GND引脚通过电容器C48接地。当断开min USB线与编程器连接时,编程器由3.7V锂电池经RT9193稳压输出3.3V供电,但U盘需要+5V电源,所以通过升压转换器实现了 3.7V升至+5V,从而能够为U盘供电。

        结合图2和图5可知,拨码选择开关104通过拨码开关SW DIP-8分别与STM32F103的第8、9、10、11、24、25、37和38引脚相连,拨码选择开关中9_16引脚均与电源相连。当使用PC机传输数据时,STM32F103通过读取该拨码开关的O、I状态,选择要编程数据存放在W25X16芯片上的起始地址;当使用编程器编程EEPROM时,STM32F103通过读取该拨码开关的0、1状态,选择存放在W25X16芯片上的数据起始地址。即所述拨码选择开关104用于控制待编程数据的下载方式及选择所述待编程数据在所述存储器103中的存储地址。由于W25X16存储器可以存储2MB的数据,可将其分成多个存储区域,用来存放不同的EEPROM数据,通过拨码开关104来选择存储区域的首地址,进而将该区域的数据烧写到外部EEPROM中。如果反复烧写同一块数据不需再连接PC,可以直接连接电脑板的EEPROM进行烧写。即通过拨码选择开关104可以选择通过PC或U盘的方式下载待编程数据,并且在将待编程数据存入所述存储器103时,通过拨码选择开关104选择待编程数据在存储器103中的存储地址。

        通过本实施例中提供的EEPROM编程器给电脑板的EEPROM芯片烧写数据的过程包括下载待编程数据到存储器103和从存储器103中获取待编程数据并将待编程数据存入EEPROM芯片。具体的,下载待编程数据时首先将待编程数据(向外部EEPROM写入的数据)下载到所述存储器103中即实施例提供的W25X16中。

        当使用电脑下载时,须通过所述输入输出模块102的USB总线接口连接PC机,通过所述拨选开关104选择PC下载方式后,这时系统由USB总线接口供电,同时为电池供电电路105中锂电池充电,PC机端运行EEPROM编程应用软件,选择待烧写的EEPROM数据文件,通过USB总线接口发送到输入输出模块102即发送到CH375的USB总线接口芯片。当CH375接收到USB主机发来的数据后,首先锁定当前USB缓冲区,防止被后续数据覆盖,然后将INT#引脚设置为低电平,向主控制芯片101发送中断请求,即向STM32F103请求中断;随后,STM32F103进入中断服务程序,首先执行GET_STATUS命令获取中断状态;输入输出模块102即CH375在GET_STATUS命令完成后将INT#引脚恢复为高电平,取消中断请求;由于通过上述GET_STATUS命令获取的中断状态是“下传成功”,所以STM32F103执行RD_USB_DATA命令从CH375读取接收到的数据;CH375在RD_USB_DATA命令完成后释放当前缓冲区,从而可以继续USB通讯;所有数据接收完毕,STM32F103退出中断服务程序。

        STM32F103从PC端收到的数据首先缓存在RAM的缓冲区里,如果所有数据接收完毕,并且校验和正确,根据拨码选择开关104选择的存储区块将数据通过SPI总线写入W25X16。

        使用U盘下载时,须将烧写数据拷贝到U盘并命名,例如命名为Data.TXT,然后将U盘插入本装置的USB总线接口,这时系统由电池供电电路105供电。通过拨码选择开关104选择W25X16的起始地址,并且通过拨码选择开关104选择U盘下载方式后,STM32F103开始通过CH375读取U盘数据。此时STM32F103通过控制CH375读取U盘的Data.TXT文件,将文件内的数据以字节的形式写入W25X16,写入的起始地址通过拨码选择开关104选择。当正在下载过程中时,指示灯以较低频率(例如5Hz)速度闪烁。

        待下载完毕指示灯常亮,表示数据下载完成,可以断开与PC的USB连接线或拔下U盘,这时EEPROM编程器10由电池供电电路105供电,STM32F103通过I2C接口发送查询消息,检测是否有外部EEPROM芯片接入,如果指示灯由灭变亮,表示外部EEPROM芯片接入并且通讯正常可以开始烧写,这时按下烧写按钮后,STM32F103便将当前拨码选择的区块数据从W25X16中读出,写入到外部EEPROM芯片,烧写时指示灯以高频(例如IOHz频率)闪烁,烧写完成后指示灯以一个低频率(例如IHz频率)闪烁。这样便完成了对外部EEPROM编程的操作。需要说明的是,指示灯在数据下载、烧写过程中和烧写完成时能够以其它频率闪烁,只要用户根据指示灯的闪烁频率能够确定编程器所处的状态即可。

        图9为本实用新型实施例中STM32F103主程序下载状态流程图,结合上述分析和图9可知,下载待编程数据时,主控芯片101工作流程包括:判断主控芯片101是否完成接收待编程数据,若没有完成接收则从CH375缓冲区读取待编程数据;若完成接收,则校验待编程数据是否正确,若待编程数据错误则结束操作,若待编程数据正确则将待编程数据写入W25X16芯片中;当烧写数据时从W25X16芯片中读取待编程数据;检验W25X16芯片中数据是否烧写正确,若正确则结束烧写,否则重新将主控芯片中待烧写数据写入W25X16中。

        图10为本实用新型实施例中STM32F103主程序烧写状态流程图,结合上述分析和图10可知,烧写待编程数据时,主控芯片101工作流程包括:判断是否完成外部EEPROM芯片的烧写,若完成则结束烧写,如没有完成则从W25X16中读取待烧写数据;将待编程数据写入外部EEPROM芯片;校验EEPROM芯片中数据是否烧写正确,若是,则回到判断是否完成外部EEPROM芯片的烧写的步骤中,若否,则回到从W25X16中读取待烧写数据的步骤中。

        另外,图11为本实用新型实施例中STM32F103主程序状态图,如图11所示,STM32F103主程序的状态有待机、下载、烧写和故障。当STM32F103为待机状态时,若按下烧写按钮则其为烧写状态,若出现自检异常,则其为故障状态,若通过拨码选择开关选择下载方式则进入下载状态;当STM32F103为下载状态时,若下载完成,则其进入待机状态,若出现通讯故障,则其将进入故障状态;当STM32F103为烧写状态时,若烧写完成则进入待机状态,若出现通讯故障,则进入故障状态;以及当STM32F103为故障状态时,若自检正常,则进入待机状态。

        综上,本实用新型实施例中提供的EEPROM编程器,只需将待烧写的数据文件下载到存储器103中,将通讯线连接到电脑板的EEPROM芯片。打开烧写器开关,待指示灯亮起便烧写完成,操作简单,烧写时可以不需要连接PC,并且采用电池供电,不需要外接电源。简化了现有的EEPROM烧写器烧写时的繁琐步骤。因此,本实用新型提供的EEPROM编程器具有如下优点:功耗低,数据传输速度快,不需要电脑便可以对EEPROM编程。

        上所述仅为本实用新型的优选实施例,并不用于限制本实用新型,对于本领域技术人员而言,本实用新型可以有各种改动和变化。凡在本实用新型的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本实用新型的保护范围之内。

shangdawei 发表于 2017-4-10 00:21:56





喜欢电台 发表于 2017-4-10 17:45:12

好的资料 要好好学习一下

JDWXW 发表于 2017-5-13 16:19:30

看一下            看一下

programmer 发表于 2017-9-7 20:59:44

好东西学习学习
页: [1]
查看完整版本: 一种eeprom编程器 STM32F103