STC单片机下载实验
简介
STC(宏晶)公司的单片机是基于8051内核指令集,加速后的单片机。配置有丰富的外设,编程和调试简洁明快,适应于广大消费量电子产品的设计与开发。
STC在2020年通过赞助的形式支持全国大学生智能车竞赛。应用该单片机简洁明快,低功耗,抗干扰能力强的优势,竞赛的节能组可以充分发挥该单片机的优势。
▲ STC单片机的外设
为了便于开发也应用该单片机,下面对该单片机的程序下载过程进行实验。
建立AD元器件库
1. 建立元器件库
STC单片机具有丰富的小型封装形式,在其产品手册中列写除了相关的封装关键的定义。在DIP40封装还给出了单片机下载电路的形式。
▲ STC15W 系列单片机封装形式
在 AD\MISCLIB\LIB\Documents\SCH中建立相应的封装形式,它们的命名分别是:STC15-8,-16,-20, -28,-40
▲ AD中STC15W的不同封装的元器件
2. 原器件的封装
对于不同元器件的封装形式,选择标准的元器件苦衷的封装形式。
设计实验板
实验板的AltiumDesign的工程文件目录:
AD\Test\2020\STCTest\STC15W-16-Test.
1. 测试电路板的原理图
设计一个可以在面包板上完成实验的测试电路。使用STC15W415AS信件。具体电路原理图如下:
▲ 实验测试电路板的原理图
这种设计可以利用面包板的灵活性做多种测试。在原理图中,出来通过4PIN的P1口将电源和编程口引出之外,还引出了两个IO口以及UART口。
2. 测试电路板的PCB
通过快速制版,十分钟后得到测试电路板。
▲ 快速制版后的测试电路板
实验结果
1. 搭建实验电路
将测试的电路板放置在面包板上,将PL2303的的UART部分与单片机相连。测量UART的TXD,RXD的电压分别是:
管脚 | 电压 |
---|---|
RXD | 3.35V |
TXD | 3.35V |
因此,如果不加上隔离,PL2303有可能会通过RXD,TXD给单片机供电,这样就会无法真正冷启动MCU。
▲ 测试电路板
根据STC使用手册给出的参考电路,在PL2303的TXD串联一个二极管,在PL2303的RXD串联一个300Ω的电阻。
防止下载程序串口对MCU供电的电路如下图所示:
▲ 防止下载程序串口反过来给MCU供电的电路
2. 运行下载程序
(1)下载程序允许错误
允许STC-ISP-V3.80-NOT-SETUP程序出现如下的提示错误:
▲ 下载程序显示错误
错误解决方法1:
““部件MSCOMM32.OCX或其附件之一不能正确注册:一个文件丢失或无效”问题的解决办法”博文给出了解决办法:
(1)在网上下载mscomm32.ocx
(2)32位放在Windows/System32 下,64位放在Windows/SysWOW64下,然后在对应目录下找到cmd.exe文件
右键–管理员身份运行(关键)–输入regsvr32 mscomm32.ocx
允许命令后,注册成功。
▲ 安装MMCOMM32.OCX成功
▲ 注册成功后的ISP程序界面
错误解决方法2:
与STC聂经理联系之后,他建议使用STC-ISP-15XX-v6.87C.exe。这样便可以不再使用MSCOMM32.OCX,直接运行就可以了。
只不过这个程序在允许的时候两次弹出的信息窗口比较令人讨厌。
(2) 上电测试
很是奇怪,在单片机单片机的P1.3端口便有信号输出。
▲ 上电后内部便开始闪烁
(3)下载波特率选择
通过实验,最低波特率会影响单片机下载结果。
波特率选择4800~57600,可以进行单片机的正常检测和下载。如果低于4800,或者高于等于115200单片机无法正常下载。
设置下载速率为57600,在下载开始的时候,在RXD上出现的波形如下图所示。可以看到由于二极管的存在,使得单片机的上升沿出现了延迟,延迟时间大约2.2微妙。
▲ 这是设置波特率57600下载是,在TXD上出现的波形
下面是二极管前后的波形,可以明显看到二极管的截止时间使得脉冲的上升沿延迟了2.2us左右。如果波特率升至115200,这个延迟将会造成UART通讯出现错误。
▲ 测量RXD二极管前后的波形
为了改善二极管的上升速度,在二极管与单片机引脚之间增加一个至+5V的430欧姆的电阻,此时波形如下:
▲ 在二极管上增加上拉电阻后的波形
但是很奇怪,增加了上拉电阻之后,最高的下载频率只能是38400;最低的下载频率可以为1200.
在下载过程,微机每隔10ms左右发送连续两个0xff,完成握手信号。然后设置波特率115200,完成后面的芯片擦除和下载过程。
正在重新握手 ... 成功 [0.032"] 当前的波特率: 115200 正在擦除目标区域 ... 完成 ! [0.671"] 芯片出厂*** : F563C5D701D5F9 正在下载用户代码 ... 完成 ! [1.731"]
▲ 两次脉冲之间的间隔为10ms左右
结论
-
确定了正确的下载程序:
D:\zhuoqing\DesignCenter\STC\Program -
确定的PL2303的正确的驱动程序:
D:\zhuoqing\DesignCenter\STC\Program\USB to UART Driver\PL2303 -
确定的STC下载前的握手信号形式:
在TXD上,会出现10ms间隔的两次低脉冲。 -
使用STC-ISP下载程序的时候,设置最低波特率很重要,通过实验发现,该波特率设置为19200,下载过程比较顺利。