STC ISP

STC ISP
2012年01月12日
   STC单片机包含两个Flash块,在一块Flash中运行的程序可对另一块Flash进行擦除和重新编程。一般都将ISP程序存放在容量较小的一块Flash中(Block1),而将用户代码存放在容量较大的一块Flash中(Block0)。Block1中的ISP程序对Block0中的用户代码进行擦除和重新编程。在做STC单片机解密或是使用的朋友都知道,在STC单片机的程序存储区后,还有一段大约3K的代码,这段代码就是STC单片机的ISP程序,在STC单片机的数据手册里有关于对于ISP的生机资料,既然这段代码是可以升级的,那么我们就可以肯定这个区域是可以改写的,呵呵,这些涉及到了对STC单片机软解密的技术,我不多提了,大家可以动用自己的智慧。
  下面为大家提供一些自己设计STC ISP协议的资料。许多应用系统中都需要进行程序代码升级,如果程序代码在外部Flash存储器中,实现程序代码升级可以对外部Flash直接操作。但对于在单片机内部的一些系统程序代码,就要求此单片机支持IAP(In-Application-Programming)功能。本文即介绍此情况下的ISP(In-System-Programming)程序设计方法,以及在SST和STC单片机上的具体实现。
  1 ISP实现基本结构
  ISP的实现方式有很多种,但大致都遵循图1所示流程。
  
  
  下载 (5.51 KB)
  2011-7-28 11:17
  图1
  其中,判断用户ISP选择,一般有以下几种方式。
  (1) 连接计算机系统,由系统的命令选择
  进入用户ISP选择判断时,先由单片机发送特定特征数据,然后等待命令数据,如果在一定的时间内,接收到计算机系统发出的选择命令则进入用户代码升级,否则直接跳转到用户代码执行。
  (2) 由用户板上的跳线选择
  一般利用单片机空余的端口,设计一个代码升级选择跳线。进入用户ISP选择判断时,单片机可以直接根据此端口的状态判断进入用户代码升级还是直接跳转到用户代码执行。
  (3) 由用户板操作功能选择
  在用户板的功能菜单或功能组合中,允许用户选择代码升级功能,同时,在外部存储器中存放相应的标志。当选择代码升级功能时,在外部存储器中写入特定数据,然后程序复位。进入用户ISP选择判断时,判断外部存储器中的数据,如果符合条件则进入用户代码升级,否则直接跳转到用户代码执行。
  2 IAP程序设计
  目前,许多单片机都支持IAP功能,一般这些单片机内部都包含两个Flash块,在一块Flash中运行的程序可对另一块Flash进行擦除和重新编程。一般都将ISP程序存放在容量较小的一块Flash中(Block1),而将用户代码存放在容量较大的一块Flash中(Block0)。Block1中的ISP程序对Block0中的用户代码进行擦除和重新编程。
  下面以两种51系列兼容的Flash单片机为例,介绍IAP的程序设计。一种是SST89C54,另一种是STC89C516RD。
  (1) SST89C54相关特性
  SST89C54内部有20KB(16KB+4KB)程序存储器,统一编址。Block0为0000H~3FFFH;Block1为F000H~FFFFH。Block1可以选择映射到0000H地址开始的1KB/2KB/4KB程序区。
  (2) STC89C516RD相关特性
  SST89C516RD内部有72KB(64KB+8KB)程序存储器。Block0为0000H~FFFFH,Block1可以选择映射到0000H地址开始的8KB程序区(上电复位缺省为地址映射)。
  SST与STC单片机的IAP操作几乎完全相同,本刊网站(www。dpj。com。cn)中给出了IAP函数的C程序源代码IAP。C。要特别注意的是,Block0_erase函数中对于block0的选择,两种单片机是不同的(正好相反)。
  3 ISP程序到用户代码的切换
  在设计中一般都将ISP程序设计为上电复位后运行的程序,如果不需要用户代码升级或升级完成后,就要将程序切换到用户代码执行。ISP程序到用户代码的切换,不同的单片机各不相同。
  (1) SST89C54程序区Block1到Block0的切换实现
  SST89C54单片机在烧录时,将ISP程序写到Block1,并且烧录映射选择位RB0/RB1(RE-MAP[1:0])。这样程序上电复位时,自动将Block1映射到0000H地址开始的4KB程序区,进入ISP程序执行。由于Block1同时还分配在地址F000H~FFFFH,因此,编译生成ISP程序代码时,设定所有的地址范围都在F000H~FFFFH。需要切换到用户代码(Block0)运行时,修改SFCF[7]控制位VIS,将Block1的0000H地址映射取消,然后程序跳转到地址0000H执行,则开始运行Block0中的用户代码程序。
  .
  本刊网站中给出了ISP的C程序源代码ISP。C。需要注意的是,此程序在Keil-C中要建立工程文件,包含
  IAP。C函数以及STARTUP。A51,并且在IAP。C和ISP。C中都要去掉STC的定义。为了将地址范围设定到F000H~FFFFH,要将STARTUP。A51中程序入口地址由0改为0F000H,如下:
  CSEG AT 0F000H
  C_STARTUP: LJMP STARTUP1
  还要修改编译选项设置Target选项卡中Off-chip Code memory:Start
  =0xF000;Size=0x1000;还要设置C51选项卡中Interrupt Vectors at address:0xF000。
  (2) STC89C516RD程序区Block1到Block0的切换实现
  STC89C516RD单片机在烧录时,将ISP程序写到Block1。(注意:并不烧录SC0/SC1位)。单片机上电复位时,缺省的Block1映射到0000H地址开始的8KB程序区,进入ISP程序执行。需要切换到用户代码(Block0)运行时,ISP修改SFCF[1]控制位SWR,产生一个软复位(Software Reset)。由于SC0和SC1都未烧录,程序软复位后,Block1将不再映射到0000H地址映,则开始运行Block0中的用户代码程序。
  本刊网站中给出了ISP的C程序源代码ISP。C。要注意的是:此程序在Keil-C中要建立工程文件,包含IAP。C函数,并且在IAP。C和ISP。C中都要保留STC的定义。
  4 与计算机的通信协议
  升级用户代码时,需要与计算机进行通信,一般采用RS232串行通信,数据协议采用简单协议。此协议参考了ADuC812单片机的ISP数据协议。(ADuC812单片机硬件内置ISP程序)。
  (1) 复位命令(计算机→单片机)
  计算机发送4字节复位命令:21H,5AH,00H,A6H,单片机返回复位信息。
  (2) 复位信息(单片机→计算机)
  复位信息为25字节,前3字节为单片机公司特征字符(如:“ADI”“SST”“STC”),最后1字节为校验和。
  (3) 数据包格式(计算机→单片机)
  计算机发送数据包格式:07H、0EH、长度、数据、校验和(长度与数据的校验和)。
  (4) 擦除命令
  计算机发送数据包,其中数据只有1字节,内容为:字符“A”或“C”。单片机擦除用户程序区后返回1字节06H表示成功;05H表示失败。
  (5) 编程命令
  计算机发送数据包,其中数据内容:“W”,00H,地址高字节,地址低字节,程序数据。单片机返回1字节06H表示成功;05H表示失败。
  (6) 运行用户程序
  计算机发送数据包,其中数据只有1字节,内容为:字符“U”。单片机返回1字节06H表示成功,然后跳转到用户程序运行。
  本刊网站提供了计算机下载软件的C程序源代码Download.C。
  结语
  根据以上ISP程序设计思路和实例,大家可以修改ISP初始代码,或者丰富它的ISP功能(读功能、口令控制等),尝试设计自己的ISP程序,定能为自己的系统增色不少。
  
  
  
03-31
<think>好的,用户想了解STC ISP编程软件的使用或教程。首先我需要确认STC ISP是什么。根据记忆,STC是中国的一家微控制器制造商,他们的ISP(In System Programming)软件用于通过串口给单片机下载程序。用户可能需要具体的操作步骤或资源链接。 接下来,我需要检查是否有相关的引用内容。用户提供的引用中,引用[1]提到了Traffic Control的安装,引用[2]是关于负载测试工具FORECAST,这些似乎和STC ISP无关。因此,可能需要依靠自己的知识库来回答。 首先,我应该概述STC ISP的基本信息,然后分步骤介绍使用方法,比如连接硬件、配置软件、下载程序等。需要注意使用中文,并正确应用LaTeX格式,但可能数学公式在这里用不上,不过如果有示例代码,需要用代码块包裹。同时,用户要求生成相关问题,所以最后需要添加相关问题部分。 需要确保回答结构清晰,步骤详细。可能还需要提醒用户安装驱动程序、选择合适的单片机型号、注意事项如冷启动等。另外,提供官方网站或论坛链接对用户可能有帮助,但用户提供的引用中没有相关链接,所以可能需要建议用户访问STC官网或社区获取最新资料。 最后,生成的相关问题应该围绕常见问题,比如驱动安装失败、程序下载失败、软件配置技巧、替代软件等,这样用户能进一步解决可能遇到的问题。</think>### STC ISP编程软件使用指南 STC ISP是由STC微控制器公司提供的串口烧录工具,支持89/90/10/11/12/15等多个系列单片机编程,主要操作流程分为硬件连接、软件配置、下载执行三个阶段。 #### 一、环境准备 1. 安装USB转串口驱动(如CH340/CH341) ```bash # Debian/Ubuntu系统安装示例 sudo apt-get install ch341ser ``` 2. 连接开发板与PC,注意部分型号需要冷启动(断电后重新上电)才能进入烧录模式[^1] #### 二、软件操作步骤 1. 设置通信参数 - 选择正确的串口号(Windows设备管理器中查看COM编号) - 波特率推荐使用默认值$115200\text{ bps}$ 2. 芯片型号选择 $$ \text{MCU型号} = \begin{cases} STC89C52 & \text{经典8051架构} \\ STC15W4K56S4 & \text{1T增强型架构} \end{cases} $$ 3. HEX文件加载 ```python # 代码编译示例(Keil生成HEX文件) Build Target -> hex_file.hex ``` #### 三、下载流程优化技巧 - 使用独立供电模式时,勾选"下次冷启动时P3.2/P3.3为0/0才下载" - 调节最低波特率可提升通信稳定性 - EEPROM区域设置需与程序存储器地址空间不重叠
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值