打印

STC如何实现不断电ISP功能

[复制链接]
7168|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jerkoh|  楼主 | 2008-3-3 10:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STC的单片机可以通过串口ISP,
但必须断电再上电才可以ISP。
如何实现不断电的情况下ISP呢?
另外,在运行主程序时是如何切换到ISP区这功能
进行升级的呢?
      是否在整个主程序运行过程中,一直要运行到ISP区
去检测串口有没命令流的到来?然后从AP区进入ISP区?
      或者还是其他什么原理呢?
      请大家指导下。

相关帖子

沙发
jerkoh|  楼主 | 2008-3-3 16:34 | 只看该作者

re

大家来讨论下啊

使用特权

评论回复
板凳
古道热肠| | 2008-3-3 16:45 | 只看该作者

程序运行过程中可以将MCU复位到ISP状态

上位机好象要使用自定义下载,反正是不方便,不象Philips的单片机,给出完整的通讯协议,将PSEN拉低后,复位机器就能ISP了。

使用特权

评论回复
地板
jerkoh|  楼主 | 2008-3-3 16:56 | 只看该作者

re

是啊,上位软件也的自己写,不能用STC那个ISP软件

使用特权

评论回复
5
wkman| | 2008-3-3 17:10 | 只看该作者

楼上几位是想写stc的ispcode???

使用特权

评论回复
6
jerkoh|  楼主 | 2008-3-4 12:31 | 只看该作者

re

今天把不断电实现ISP完成了,但只是232通信现在我想用422通信实现STC的升级,只要是没法控制485芯片的控制脚。但STC不开放ISP代码,得自己写协议具体怎么做呢?

使用特权

评论回复
7
nopchina| | 2008-3-6 10:41 | 只看该作者

楼上如何实现的,能说说吗

我试过热启动,可不行,请问怎么实现啊

使用特权

评论回复
8
winds| | 2008-3-6 15:23 | 只看该作者

不断电IAP很容易啊

1,把宏晶的软件开起来,设置好串口,点击下载
2,单片机内部有个寄存器,对它操作后就跳入到引导程序了
STC单片机内部有个重新启动
sfr                     RTR = 0xE7;
RTR=0x60;

使用特权

评论回复
9
jerkoh|  楼主 | 2008-3-6 16:43 | 只看该作者

re

用软件的自定仪下载.
程序里面加串口判断。
当MCU串口收到下载命令流就跳到ISP区
mov isp_contr,#60h  ;从AP软复位到ISP区
还是很易实现。

不过422通信目前只好全双工---控制脚全接死。
现在我想控制422通信的RE和DE的高低。
但软复位到ISP后所有脚都置高了没管脚可以用,怎么拉低啊?
加非门的话太不合理了。大家出个好主意。

使用特权

评论回复
10
winds| | 2008-3-6 17:59 | 只看该作者

422或者485控制脚接个非门“太不合理”?

大部分的单片机上电后管脚都是高电平,所以,485或422上电的时候都是处于发送状态,当多个设备同时上电的时候,485芯片处于短路状态,非常容易烧485芯片
因此,我通常都是在控制脚端加个非门或者加个三极管,花不了多少成本啊。。哪怕对成本要求再严格的1个三极管加2个电阻应该也能承受的

使用特权

评论回复
11
winds| | 2008-3-6 18:09 | 只看该作者

我现在用的设备都是485接口的

因为需要,我们都是做远程更新的,通常做485或422远程更新的时候,和232更新有几点不同
1。通信协议必须定义成有包头和包尾格式的,通信的时候必须运行在单工方式。
2。波特率必须固定。做485更新,一般不是为了烧写芯片,如果这样还不如在烧写器上烧写,一般是为了在现场更新,现场有很多设备连接在一起,所以通信包不能太简单,否则有可能引起其他的设备的误动作,当是一个复杂的通信包的时候,波特率不固定会引起算法的复杂化,有可能让引导区程序区溢出。
3。第一次握手的时候,由上位机把切换脚告诉单片机,这样引导程序可以做成各种设备通用的

使用特权

评论回复
12
jerkoh|  楼主 | 2008-3-6 18:53 | 只看该作者

re

谢谢winds 的宝贵经验 非常受用!
我明白了。

使用特权

评论回复
13
jerkoh|  楼主 | 2008-7-12 14:10 | 只看该作者

re

winds

是不是STC在ISP前的握手响应是需要STC回应的,等处理好了这些
进入IAP区就不会回应软件的,只管收该更新的数据。
自定义下载命令 和串口部分握手成功后
自动进入IAP 此时MCU的IO口全高通过非门变低后接收数据的过程是不会回应上位软件的,也就是IAP时发过来的更新程序并不是带校验,要MCU回应确认是否对后再下发的?

另外:实现比如100台设备的更新ISP
只需要在串口命令里带地址就可以使不需要更新的MCU丢弃

您说的由上位机把切换脚告诉单片机,这样引导程序可以做成各种设备通用的
这句话我不怎么明白,上位机告诉了MCU该控制哪个脚有什么用呢?
到了IAP区脚都复位高了

使用特权

评论回复
14
哲哲55| | 2011-9-18 21:14 | 只看该作者
mark

使用特权

评论回复
15
zhangliangwuhen| | 2013-1-21 18:25 | 只看该作者
请教STC系列单片机 ISP固件怎么更新???

使用特权

评论回复
16
atemoya| | 2015-12-25 10:41 | 只看该作者
winds 发表于 2008-3-6 18:09
因为需要,我们都是做远程更新的,通常做485或422远程更新的时候,和232更新有几点不同1。通信协议必须定义 ...

你好,我想了解一下程序远程更新的情况?我现在要做的东西可能跟你的情况类似,希望交流一下:)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

116

主题

1401

帖子

2

粉丝