一种基于STM32的程序下载器的制作方法

文档序号:16665972发布日期:2019-01-18 23:16阅读:629来源:国知局
一种基于STM32的程序下载器的制作方法

本发明属于计算机领域,具体涉及到一种基于stm32的程序下载器。



背景技术:

许多芯片的程序烧写是通过spi接口实现的,原因是spi接口传输速度快、数据传输可靠。特别地,nrf24lu以及nrf24le系列芯片作为一种无线通信解决方案,非常适用于usb数据的无线传输,此类芯片的flash正是通过spi接口进行烧写。但是市场上针对此类芯片的程序下载器通常具有较高的价格,使得此类无线通信方案的设计成本变高。由于程序下载器的自身固件限制,其配套的上位机程序难以保证同时对hex和bin两种格式的程序文件的支持,从而导致一些现有的程序下载器的使用灵活性变低。



技术实现要素:

针对现有的nrf24lu/e系列芯片的程序下载器的不足,本发明提供了一种基于stm32的程序下载器,采用以下技术方案:

基于stm32的程序下载器,硬件电路包括stm32单片机、硬件spi接口、cp2102串口芯片、usb接口、稳压电路、按键与指示灯。

其中,usb接口连接到cp2102芯片,cp2102芯片的串口引脚连接到stm32的串口端,stm32的spi接口连接到待下载程序的nrf24lu/e芯片上,同时连接了prog引脚、csn使能引脚、rst复位引脚。

在上述的程序下载器中,stm32单片机通过串口接收hex或bin格式的程序文件,根据文件类型将程序文件转化为字节型数组。

进一步,stm32单片机将包含程序数据的字节型数组通过硬件spi接口,发送给nrf24lu/e系列芯片,实现此类芯片的flash擦写与读取。

在本发明中,stm32单片机通过cp2102串口芯片,实现与pc计算机端的数据交换,接收程序文件和反馈程序下载的状态。

在本发明中,pc计算机端的上位机程序为c#编写的串口软件,配置串口,收发串口数据,和打开hex或bin文件。

本发明的有益效果是:本发明以stm32单片机为核心,利用串口接收程序文件,利用spi接口读写外部flash芯片;操作简单、支持文件类型多、成本低、集成度高、实用性高。

附图说明

图1本发明的组成方框示意图

图2本发明的硬件电路pcb图

图3本发明的软件流程图

具体实施方式

如图1所示,stm32单片机控制器是本发明的核心,包括硬件spi接口、串口、定时电路等,其外围电路由cp2102串口模块、稳压电路、按键与指示灯组成,主要完成程序文件的数据接收,以及通过spi接口完成对外部芯片的flash擦写,实现程序下载功能;此外,stm32单片机会将程序下载的实时状态反馈到计算机端。本发明选用stm32f103rct6芯片,由于其具有48k内部存储空间,满足外部芯片flash的16k/32k要求,系统的整体硬件电路如图2所示。

stm32单片机的初始化程序:单片机的工作时钟配置为72m;systick配置成10us中断一次;串口使用pa9与pa10两个引脚,波特率选择38400,并打开串口数据中断接收功能;spi接口使用pb13、pb14、pb15分别作为sck、miso、mosi引脚,时钟空闲状态设置为低电平,数据传送设置在第一个跳变沿;配置pa8、pb12、pb11分别作为prog、csn、rst输出控制引脚;配置tim2定时器,用以记录外部芯片程序烧写的时间。完成上述配置后,进入主循环,接收上位机的指令。

stm32单片机接收程序文件并转化为可用于编程的字节型数组:如图3所示,单片机收到计算机发来的字符串数据后,会触发串口接收中断函数,函数内会把收到的字节保存到缓冲数组里。主循环程序会读取缓冲区数据,并根据首字节判断其文件类型,对于hex格式的字符串,采用hexutils工具对其软件解码,并存储;对于bin格式字符串,单片机直接将其存储到字节型数组里,最终得到外部芯片的flash编程所需的字节型数组。

对外部芯片的程序下载:首先是spi接口的字节数据的接收和发送功能,本发明采用速度快、可靠性高的硬件spi通讯功能,作为底层的spi数据通讯函数;通过调用spi通讯函数,选择信息页,发送读芯片指令以及id地址,可读取芯片的id,验证单片机与待编程芯片的通信连接;在执行擦除、烧录等芯片flash操作时,prog引脚需置高、csn引脚使能、rst引脚拉高;对外部芯片下载程序时,首先擦除整个芯片的数据,然后分页下载程序,每页包含250个字节数据,在每一页编程时,首先通过spi写入编程的首地址,再依次按页的大小发送字节型数组中的数据。完成程序下载后,再利用spi接口读取外部芯片的flash数据,并与字节型数组中的数据逐一比较,保证所有字节正确。实验测试,本程序下载器对外部nrf24lu芯片下载1424个字节数据耗时377ms。

状态信息反馈:在读取外部芯片的状态寄存器时,本下载器会实时地将程序读写状态反馈到计算机端的上位机并显示;程序下载后的外部芯片数据与单片机的数组进行比较,若程序下载有误,也会反馈到上位机并显示;从而保证程序下载器的可靠性和人机交互能力。

配套的上位机:使用c#编写的计算机端上位机,主要功能是读取hex或bin格式的程序文件,并转化为字符串,通过串口发送到stm32单片机,实现程序文件的通信传输。

以上对本发明所提供的一种基于stm32的程序下载器进行了详细介绍,对于本领域的一般技术人员,依据本发明技术的方案,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。



技术特征:

技术总结
本发明公开了一种基于STM32的程序下载器,包括STM32单片机、SPI接口、CP2102串口芯片、USB接口、稳压电路、按键与指示灯,实现对NRF24LU/E系列芯片的FLASH读写等操作。所述USB接口连接到CP2102芯片,CP2102芯片的串口引脚连接到STM32串口端,STM32的SPI接口连接到待下载程序的NRF24LU/E芯片上,同时分别连接PROG、CSN、RST引脚。程序下载步骤如下:将下载器的USB接口连接到电脑,利用上位机软件给STM32单片机发送指令,并根据反馈信息选择合适的程序下载选项,通过上位机打开HEX和BIN格式的程序文件,并发送到STM32单片机;STM32单片机根据文件类型将程序转化为字节型数组,最后通过SPI接口对NRF24LU/E系列芯片的FLASH进行读写等操作。本程序下载器成本低,下载速度快,支持两种程序文件格式,可靠性高,操作简单。

技术研发人员:叶佳卓;李树帅;黄飞;陈少林;唐艳
受保护的技术使用者:湖南大学
技术研发日:2017.07.03
技术公布日:2019.01.18
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1