STC12C5AXX实现ISP的几种办法(非IAP系列)

1、什么是ISP

在这里简单解释一下:

ISP——in system programming:
    在系统编程。芯片可以在目标板上,通过烧录器接入特定的接口,进行CODE的烧录。

我们在调试代码阶段一般都是用这种方式烧录代码的,但是量产之后的维护呢,总不可能拆开每一个设备吧,更何况还有一些设备安装在恶劣环境下。

针对本文的主角,宏晶的非IAP系列的单片机,这里以STC12C5A60S2为例。采用ISP的方式,可以在不拆开设备外壳且设备不断电冷启动的情况下,对芯片进行CODE更新。

2、实现方法

从手册中可以在特殊寄存器的列表中找到如下图所示内容

 由上图可知,在非IAP系列的单片机中,是存在ISP相关寄存器的,这就是这篇文章的基础。我们继续顺藤摸瓜找到如下描述

由手册描述可知,非IAP系列的单片机内的IAP接口是用于内部划分的EEPROM进行读写擦除动作的。

看到这里,其实我们应该明白了,就是其实都支持ISP/IAP的,只是厂家没有开发接口而已。那我们就只有利用已知的信息,进行改动了。 

1.采用官方的ISP烧录器

 通过查阅官方渠道,价格有点小贵,不适合个人玩家。如果是工作需要,可以考虑由采购统一购买。

2.采用官方的ISP电路

下图是官方给出了应用的电路,可知需要自己制作一个烧录器或者是直接修改电路板(这个违背了我们的初衷。) 

 

3.前面两点都不想用的低成本

使用常用的PL2312和CH340作为烧录器的伙伴们,可以采用这个办法。

1)修改串口中断

    if(RI)//特定指令ISP升级用
    {
        RI = 0;
        ACC = SBUF;
        if(ACC == 0x5A)
        {
            ACC = 0;
            IAP_CONTR = 0x60;
        }
    }

其中0x5A是下载指令,这个可以自由发挥增加多个字符。最关键的是

IAP_CONTR = 0x60;

这个语句是在芯片运行情况下,非冷启动,直接进入代码烧录。

2)配置STC-ISP烧录软件

如下图步骤,其中第三步的5A是上一步所说,可以自由定义(防止被他人无端改写)。有条件的朋友,可以由自家的软件集成进自家的上位机中统一管理。

3)测试

修改完代码之后,要冷启动一次,以后烧录,都是要先发自己设定的指令之后,才可以烧录,且不需要冷启动。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值