信息科学技术系自动专业基于stm32的免驱单片机下载器设计.docx
《信息科学技术系自动专业基于stm32的免驱单片机下载器设计.docx》由会员分享,可在线阅读,更多相关《信息科学技术系自动专业基于stm32的免驱单片机下载器设计.docx(17页珍藏版)》请在冰豆网上搜索。
信息科学技术系自动专业基于stm32的免驱单片机下载器设计
xx大学轻工学院
毕业设计说明书
设计题目:
基于stm32的免驱单片机下载器设计
学生姓名:
xx
学号:
xxxxxxxxxxxx
专业班级:
自动化
学部:
信息科学技术部
指导教师:
xx
2018年6月5日
摘要
在现代化的今天,单片机的应用越来越广泛。
对于学校教学来说,51单片机尤为重要,几乎理工科的学生都会学习51单片机,用51单片机做教学实验来学习。
这个过程中,单片机的下载程序是必不可少环节。
虽然传统的下载方式基本满足学习的需求,但是也有很大的弊端。
诸如下载依赖串口,下载速度过慢。
USB驱动不兼容windows7、windows8、windows10等系统也不兼容linux系统。
给使用带来了极大的不方便。
而且下载过程过于依赖于PC,下载还需手动安装USB按装串口驱动,给使用带来了很大的不便。
种种的不便,急需改进。
以现在成熟的STC51单片机为例,宏晶科技并没有开放出其单片机的下载协议,下载程序只能依赖于官方的isp软件进行下载。
从软件环境上来说不仅需要PC机的支持,还只有windows版本下的软件,如果用户为linux系统,对下载可能束手无策。
从硬件上来说,需要PC机提供串口,但是,在电子产品高度集成的今天,笔记本电脑基本不再具有串口,台式机也有许多主板厂商不再集成串口。
无论是软件还是硬件都给用户带来了不便。
而现在以通用串行总线(USB)越来越常见,速度也远比串口快很多。
关键词单片机;USB驱动不兼容;依赖于官方的isp软件;通用串行总线(USB)
Abstract
Intoday'smodern,MCUapplicationismoreandmorewidely.Isparticularlyimportantforschoolteaching,51singlechipmicrocomputer,almostinscienceandengineeringstudentswillstudy51singlechipmicrocomputer,madeteachingexperimentstostudy51singlechipmicrocomputer.Theprocess,single-chipcomputerdownloadprogramisanessentiallink.Althoughthetraditionalwayofdownloadingthebasiclearningneeds,butalsohasalotofdisadvantages.Suchasdownloaddependontheserialport,downloadspeedistooslow.USBdriverisnotcompatiblewithWindows7,Windows,Windows10systemisnotcompatiblewiththeLinuxsystem.Broughtgreatinconveniencetouse.AnddownloadprocessistoodependentonthePC,downloadthestillneedtomanuallyinstalltheUSBserialportunderthedrive,tousealotofinconvenience.Avarietyofinconvenience,bebadlyinneedofimprovement.
NowmatureSTC51microcontroller,forexample,macronotopenouttheMCUchiptechnologyanddownloadagreement,canonlyrelyonofficialispdownloadsoftwaretodownload.FromthesoftwareenvironmentnotonlyneedthesupportofthePC,andonlyundertheWindowsversionofthesoftware,iftheuserforLinuxsystem,maydofordownload.Intermsofhardware,needPCprovidesaserialport,however,intoday'shighlyintegratedelectronicproducts,notebookcomputerhasaserialport,basicnolongerdesktopsandmanymotherboardmanufacturernolongerintegratedserialport.Bothinsoftwareandhardwarebroughtinconveniencetotheuser.Andnowtheuniversalserialbus(USB)ismoreandmorecommon,ratethanaserialport.
KeywordsMCU;USBdriverisnotcompatible;Relyontheofficialsoftware
目录
第1章绪论1
1.1单片机下载方式现状1
1.1.1仿真器下载1
1.1.2ISP下载1
1.2STC51单片机下载方式1
1.3.STC51单片机下载缺点1
1.4课题的意义2
1.5本章小结2
第2章下载器软件的设计3
2.1官方ISP下载器软件的设计3
2.1.1官方功能下载分析3
2.1.2官方软件的使用总结4
2.2课题下载器软件的设计4
2.2.1USB的HID读取4
2.2.2软件的功能介绍4
2.2.3软件设计简介5
2.3软件的设计思路5
2.3.1USB设备的读取5
2.3.2对文件的操作5
2.4本章小结6
第3章下载器的硬件设计介绍7
3.1硬件系统需求分析7
3.2单片机的选型7
3.2.1STM32单片机的功能简介7
3.3硬件详细设计7
3.3.1STM32最小系统设计7
3.3.2USB驱动电路和串口下载电路设计9
3.3.3生成PCB文件的设计9
3.4本章小结10
第4章下载器的程序设计介绍10
4.1程序设计的介绍10
4.1.1USB的HID设备的实现10
4.1.2STC51单片机的下载协议11
4.2程序设计流程图12
结论13
参考文献14
谢辞15
注释11
附录11
第1章绪论
1.1单片机下载方式现状
1.1.1仿真器下载
早起的单片机基本不支持ISP下载,采用仿真器下载,仿真器下载是单片机下载的常见方式,要通过仿真器。
仿真器其实也是由一款MCU制作,MCU厂家基本不开源。
但是用起来也有很多好处,诸如不但能进行烧写程序。
还能很方便的Debug,但是也有不方便的地方,诸如正版仿真器价格昂贵,携带不方便。
兼容性不好等问题。
1.1.2ISP下载
ISP,即In-SystemProgramming,在线编程。
具有ISP功能的单片机芯片,可以通过简单的下载器直接在电路板上给芯片写入或者擦除程序,有些单片机的ISP也支持Debug。
相比仿真器的,相同点事ISP下载器也是由MCU构成,但是功能上先对单一,一般仅仅是下载,但是他最为一块电路,一般厂家会开源其设置,可以在自己的设备上集成电路。
这样升级程序可以通过网络,U盘等工具实现设备的自动升级,其好处不言而喻。
1.2STC51单片机下载方式
STC51单片机一般采用ISP的下载方式,硬件接口为TTL电平的串口,需要电脑的支持,需要从宏晶科技的官方网站上下载ISP烧写软件,如果电脑是笔记本,一般需要USB转TTL电平串口的转换器,并装好驱动,如果是台式机。
需要一个RS232串口转TTL串口的转化器,一般采用MAX232芯片制作。
电系统需要是windows系统。
不可脱机下载,下载时还需手动断电在上电。
流程比较麻烦。
1.3.STC51单片机下载缺点
下载的缺点是非常依赖官方的软件,但是官方的软件一般只有windows系统下的,如果使用linux或者苹果电脑将不能下载。
现在笔记本和台式机很好集成串口,但是USB驱动往往只持支持windows7系统,兼容性也不是很好。
从硬件上来说,需要PC机提供串口,但是,在电子产品高度集成的今天,笔记本电脑基本不再具有串口,台式机也有许多主板厂商不再集成串口。
无论是软件还是硬件都给用户带来了不便。
而现在以通用串行总线(USB)越来越常见,速度也远比串口快很多。
1.4课题的意义
我选择的题目《基于stm32的免驱单片机下载器设计》,对51系列的单片机的下载协议经行破解,并用USB免驱的功能和PC机通讯进行下载。
下载过程可完全脱离PC机,用户升级程序可不依赖PC,使下载的过程更加灵活和便捷。
本课题主要研究如何做到免装USB驱动,使用便捷,就行我的U盘一样,无数手动安装驱动。
达到给51系列单片机(stc89stc12stc15Atmel89)等单片机进行在线下载或者脱机(脱离计算机的控制)下载的下载器设计,体积小,功耗低也是设计理念。
软件使用简单便捷,比官方的下载器版本简介方便。
无需手动安装驱动,自动寻找插入的USB下载器。
使用简单方便。
1.5本章小结
本章主要分析了单片机仿真器下载和单片机ISP下载器的当前现状及优缺点对比,总结了单片机下载的特征,指出了单片机下载的的一些问题,最后本课题的意义进行了简单的阐述。
第2章下载器软件的设计
2.1官方ISP下载器软件的设计
2.1.1官方功能下载分析
1、选择下载的串口
由于官方的ISP下载方式是通过串口的方式下载。
串口必不可少。
2、设置波特率
既然有串口,当然要设置波特率,但是设置波特率有两个接口,一是最高波特率,一是最低波特率。
为什么有两个波特率,是因为下载的是用两种波特率进行通讯的。
这就涉及到软件的通讯方式。
类似于“变频”,因为下载器不知道单片机的晶振频率,需要下载的过程由待下载的单片机给出。
首先,下载器会以设置的最低波特率发送0X7F的数据,从电平上看是1位的地电平,7位的高电平。
单片机接收电平,算出下载器的发送波特率的大小,然后以该波特率回复下载器。
并告知下载器自己的晶振的频率,下载器在根据单片机的晶振,和自己设置的最高波特率,取出其中“可以支持的最高波特率”。
以最低波特率发送待下载的单片机,通知单片机的设置好自己的新的波特率,及“可以支持的最高波特率”。
完成一次确认握手。
在进行下载。
3、打开HEX文件
每当我们打开一个HEX文件后。
右边的窗口总会出现一些十六进制的字符,没错,这就是程序经过编译的存放到flash里面的二进制数据。
但是如果用电脑的文本编辑器打来HEX的源文件,就和上面的字符不是相同的,但是有的一小段就会有。
IntelHEX文件是由一行行符合IntelHEX文件格式的文本所构成的ASCII文本文件。
在IntelHEX文件中,每一行包含一个HEX记录。
这些记录由对应机器语言码和/或常量数据的十六进制编码数字组成。
IntelHEX文件通常用于传输将被存于ROM或者EPROM中的程序和数据。
大多数EPROM编程器或模拟器使用IntelHEX文件。
可以看出,HEX文件需要解析,才是我们想要的程序。
通过HEX文件的地址编码,把数据拼接完成,就可以了。
所以官方软件对HEX文件进行了解析。
4、选择flash区域的空白填充。
可能使用软件从没有注意这点,选择flash空白区的内容是0xff或者是0x00,选择什么不重要,重要的是空白区域,因为HEX文件的地址并不是连续的,两个地址之间会有空白区域,如果不填充的话或导致下载的程序无法运行。
2.1.2官方软件的使用总结
官方的软件功能齐全,但是选项较多,会使初学者感到困惑,使用配置的地方也很多,如果配置错误很可能导致程序无法正常运行。
2.2课题下载器软件的设计
2.2.1USB的HID读取
本课题自行设计下载器是USB的HID设备。
所以软件要读取电脑的硬件HID设备,通过VID和PID还有PVN识别码自动寻找USB设备,打打简化课之前官方下载软件的设置串口的不方便之处。
2.2.2软件的功能介绍
软件如图
1、打开设备,无需手动设置任何参数,即可自动的打开连接到电脑上的HID设备。
使用简单方便
2、打开程序文件,为了方便用户的使用,打开文件默认寻找的格式和HEX文件,这样不会使一些不关注的文件干扰我们正常打开文件。
3、下载、编程,及一键下载,使下载变得简单、高速。
4、退出程序。
即可关闭USB连接。
退出程序。
2.2.3软件设计简介
采用C++面向对象语言编写,采用windows的原生API接口,相比MFC类库,原生API性能更高,,兼容性更好。
需要读取电脑硬件的USB控制器,对USB进行查找,打开,写入数据,读取数据,关闭设备。
还有对文件的操作,打开文件,遍历文件,对HEX文件进行解析,重组数据。
2.3软件的设计思路
2.3.1USB设备的读取
首先完成对USB设备的操作。
查找软件指定设备的USB设备,完成对设备的打开,可以进行正常的通讯,及可读可写。
保证通讯的正常进行。
2.3.2对文件的操作
要对文件的进行操作,主要是对HEX文件进行解析操作。
解析如下
Hex文件是可以烧录到MCU中,被MCU执行的一种文件格式。
如果用记事本打开可发现,整个文件以行为单位,每行以冒号开头,内容全部为16进制码(以ASCII码形式显示)。
Hex文件可以按照如下的方式进行拆分来分析其中的内容:
例如“:
1000080080318B1E0828092820280B1D0C280D2854”可以被看作“0x100x000x080x000x800x310x8B0x1E0x080x280x090x280x200x280x0B0x1D0x0C0x280x0D0x280x54”
第一个字节0x10表示本行数据的长度;
第二、三字节0x000x08表示本行数据的起始地址;
第四字节0x00表示数据类型,数据类型有:
0x00、0x01、0x02、0x03、0x04、0x05。
'00'DataRrecord:
用来记录数据,HEX文件的大部分记录都是数据记录
'01'EndofFileRecord:
用来标识文件结束,放在文件的最后,标识HEX文件的结尾
'02'ExtendedSegmentAddressRecord:
用来标识扩展段地址的记录
'03'StartSegmentAddressRecord:
开始段地址记录
'04'ExtendedLinearAddressRecord:
用来标识扩展线性地址的记录
'05'StartLinearAddressRecord:
开始线性地址记录
然后是数据,最后一个字节0x54为校验和。
校验和的算法为:
计算0x54前所有16进制码的累加和(不计进位),检验和=0x100-累加和
在上面的后2种记录,都是用来提供地址信息的。
每次碰到这2个记录的时候,都可以根据记录计算出一个“基”地址。
对于后面的数据记录,计算地址的时候,都是以这些“基”地址为基础的。
2.4本章小结
本章主要是对软件设计做出说明,下载器的核心就是简单快捷,这也是免驱的设计也是源于方便用户的使用,所以没有给下载软件添加更多的功能。
一些不常用的鸡肋功能,也是没有必要添加。
也对软件的架构,所使用的API,还有HEX文件的格式的分析。
也是软件设计的重要组成部分。
也都做了介绍。
第3章下载器的硬件设计介绍
3.1硬件系统需求分析
既然是USB通讯,需要带USB驱动器的单片机,这样不需要额外的添加芯片,简化电路,也节约成本。
给单片机下载程序是通过串口。
也需要单片机具有串口。
3.2单片机的选型
3.2.1STM32单片机的功能简介
STM32单片USB的HID设备:
STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARMCortex-M3内核,增强型系列时钟频率达到72MHz,是32位产品用户的最佳选择。
该设计就是采用增强型STM32F103系类单片机。
保证下载器的速度,以及高效性。
STM32单片机自带USB的协议库,以及USB硬件控制器,无需未接转换芯片。
保证了系统的稳定性和方便性,移植USB的HID设备的协议,并调通传输数据及可。
STM32单片机最多带5个串口,最少的也有两个,虽然STM32单片机是一款低功耗的单片机。
电源是3.3V。
但是STM的部分管脚是可承受5V的电压,这样也无需电平转换新芯片,简化了电路。
节约了成本。
3.3硬件详细设计
3.3.1STM32最小系统设计
STM32的最小系统主要是3部分,电源部分,SWD下载接口部分,和STM32单片机的晶振和复位电路
STM32是3.3V的单片机,正对下载器从USB取电,但是USB的电源是5V,直接接到芯片上会烧毁芯片,需要电源的转换芯片,一般采用LM317芯片。
但该芯片体积大,电源效率不高,所以设计采用PL2980芯片,是一款低功耗的电源芯片。
具体设计如图1。
图1
STM32下载采用四线制的SWD下载,用j-link仿真器下载,使用方便简单,如图2。
图2
STM32的晶振电路位8M的无源晶振。
复位电路通过瓷片电容耦合接地即可,如图3。
图3
3.3.2USB驱动电路和串口下载电路设计
USB驱动电路结构简单,是差分信号线,耦合一个40r的电阻即可。
下载串口电路需要对目标单片机进行自动的断电上电的控制。
由于STM32是3.3v。
目标单片机是5V,就需要两个二极管作为开关进行配合使用,具体如图4。
图4
3.3.3生成PCB文件的设计
根据绘制的原理图,对PCB进行布局布线,效果如图5。
图5
3.4本章小结
本章主要介绍了硬件电路的设计进行了详细的说明,可以看出下载器的电路结构是比较简洁的,这样简洁的设计,第一减小的PCB的面积,第二增加了电路的稳定性,节约了成本。
第4章下载器的程序设计介绍
4.1程序设计的介绍
4.1.1USB的HID设备的实现
STM32单片机自带USB的协议库,以及USB硬件控制器,无需未接转换芯片。
保证了系统的稳定性和方便性,移植USB的HID设备的协议,并调通传输数据及可。
4.1.2STC51单片机的下载协议
STC系列的单片机在上电的时候会执行在ISPFLASH的ISP程序。
只要在串口上收到连续的0x7f,便会进入ISP模式。
宏晶选择0x7f的理由是里面没有连续的低电平。
这样的话就可以让单片机来调整自身UART的时钟到计算机的时钟,让波特率同步。
但是若频率太高,则测不准。
所以启动波特率要控制在9600以下为宜。
而且均有时间限制。
如果不在超时时间内连接MCU。
MCU会自动断开,跑用户程序。
STC的数据包格式为:
包头2BYTE+标识2BYTE+长度1BYTE+包类型1BYTE+数据nnBYTE+校验码1BYTE+包尾1BYTE。
包头固定0×46,0xb9.(但是在信息帧中不包含包头
标识来自单片机的是6800
而来自计算机的是6A00
包尾固定0×16.
至于我这里捕获的标识有
0×00——信息
0×00——数据
0x8F——新波特率实验
0x8E——波特率正式更改
0×84——擦除芯片
0×80——校验返回
0x8D——设置选项并且结束编程
0×80——(结束时,上位机)结束编程,通知MCU复位。
0×80——暂时未知(交互中的,不影响下载)
4.2程序设计流程图
程序流程图如图6:
图6
结论
通过这次设计,让我深深的体会到软件设计和硬件设计集合的重要性。
通过对下载器的软件设计,我发现嵌入式开发离不开硬件开发,也离不开软件开发,在计算机、互联网飞速发展的今天,数据的处理和分析都离不开计算机,可见软件的重要性。
嵌入式的重要的组成部分还是硬件开发,扎实的C语言基础,跟电路知识都很重要。
所以既要学好软件,又要做好硬件,才能成为一名合格的嵌入式开发工程师。
参考文献
[1]刘荣.圈圈教你玩USB(第二版).北京:
北京航空航天大学出版社.2013年4月
[2]刘军.原子教你玩STM32-(寄存器版).北京:
北京航空航天大学出版社.2013年4月
[3]谭浩强.C++程序设计(第三版).北京:
清华大学出版社.2015年8月
[4] 刘守义、 杨宏丽、 王静霞. 单片机应用技术(第二版).西安电子科技大学出版社,2007.
[5] 王廷才.电力电子技术.高等教育出版社.2007.
[6] 张永生、林春方.电子设计自动化(第二版).上海交通大学出版社,2008,25—91.
[7] 耿长清.单片机应用技术[M].北京:
化学工业出版社.2002(7).
[8] 唐程山.电子技术基础.北京:
高等教育出版社,2001(7).
[9] Sheril, R. D. (1956). The terrifying future:
Contemplating color television. San Diego:
Halstead.
[10]Smith, J., & Peter, Q. (1992). Hairball:
An intensive peek behind the surface of an enigma. Hamilton, ON:
McMaster University Press.
谢辞
本文的研究工作是在我的导师xx的悉心指导和严格要求下完成的。
许老师在学习方法、工作方法和研究思路等方面给予了许多有益的启迪;同时,他对我的研究工作提出了宝贵的建议和意见,使我在研究工作中不断取得新的进展。
许老师深厚的专业知识、严谨的治学精神和求实创新的工作作风深深的影响着我。
在此,谨向许老师致以我最崇高的敬意和真挚的感谢!
感谢我的家人和朋友对我生活上的关心,学习和工作的支持,这些使得我能够安心的完成我的研究工作。
最后,对在我的学习和成长道路上给予帮助的所有老师和朋友们表示深深地感谢,对评阅该论文的所有专家表示最崇高的敬意和真挚的感谢!