Pony279 发表于 2011-12-18 18:38:53

折中版的STC免手动免断电下载程序方案, 只需加一行代码, 不占用其他任何资源, 有图

想了想, 还是单独开个帖子吧

在说这个之前要谢谢 BXAK 提供的免手动的方案方案,./emotion/em012.gif
我借鉴了他的方法, 也做了一个, 刚拿到STC15F104E的时候下载程序出了问题, 也要谢谢 BXAK 的帮助

这个是BXAK 的原帖 ./emotion/em012.gifhttp://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=5279682&bbs_page_no=1&bbs_id=1006 , 他的最终程序在32楼, 我在35楼也贴出了我做出来的效果
至于原理, BXAK 的帖子已经解释过了, 我就没有必要重复了, 大家看那个帖子就行了

先看看做出来的样子吧, 原本是只用了一个STC15F104E的, 后来考虑到连线的时候可能会出现错误, 就在在TXD(P31)和控制复位的脚(P33)串了个100欧的电阻, 然后又想有个复位电路, 就又改了下, 手上只有贴片的按键, 焊起来真是麻烦死了...

http://cache.amobbs.com/bbs_upload782111/files_49/ourdev_705706XNHR6T.jpg
(原文件名:1.jpg)

http://cache.amobbs.com/bbs_upload782111/files_49/ourdev_705707OTTUSR.jpg
(原文件名:2.jpg)

http://cache.amobbs.com/bbs_upload782111/files_49/ourdev_705708BKUERN.jpg
(原文件名:3.jpg)

接下来是电路图
http://cache.amobbs.com/bbs_upload782111/files_49/ourdev_705709L5BEVB.png
(原文件名:4.png)
使用的时候就是用你原来的下载电路, 然后目标单片机引出几个脚和这个东东连接
其实他的工作就是监听串口的信息
当检测到有下载信号的时候, 它就可以复位目标单片机了


程序一开始的说明:
//说明:
// STC单片机免手动下载的串口监视器程序,
// 只使用了一个单片机STC15F104E制作
// 为了安全第因素可以在P33(目标机复位控制脚), P31脚串联一个100欧的限流电阻
// P31(串口发送)脚如果不引出线来的话也不需要串联电阻, 引出来是为了以后更新这个串口监视程序的方便
// 还可以给串口监视器的单片机STC15F104E加一个复位电路, 因为程序里没有使用看门狗, 有复位电路方便复位
// 可以自适应波特率1200, 2400, 4800, 9600
//注意:
// 第一次下载目标机程序的时候还是需要冷启动的,
// 而且每次下载的目标机程序的代码的主函数第一句要写上一条语句:IAP_CONTR |= (0x01<<6);
// 这条语句是用来设置目标机下次复位的时候从ISP启动的, 如果使用 BXAK 大哥的继电器的方案就不需要这样了

最后是程序 ourdev_705711DL51L9.zip(文件大小:86K) (原文件名:STC15.zip)
因为有一小部分代码是直接从我的STC12C5A60S2的库代码移植过来的, 所以有些地方的注释还有代码不太恰当, 也懒得改了...将就着看吧

我说这是折中版, 因为网上有完全软件的方案, 但是至少要占用一个串口, 对于没有仿真器的我来说, 占用一个串口会给我的调试带来很大的麻烦..../emotion/em004.gif
然后BXAK的方案是使用了继电器, 也有网友提出用MOS管, 嗯, 也是不错的, 继电器我手上没有, 开发板上是有一个, 不好拆下来吧... MOS管串进去总觉得不放心, 呵呵
然后我就取了个折中, 只需要在以后的程序代码开头加上一句 IAP_CONTR |= (0x01<<6就可以了
这条语句是用来设置单片机复位以后从ISP区启动的, 所以当STC15F104E从串口检测到合法的下载命令后, 就可以发一个复位信号给目标单片机, 然后目标单片机就复位从ISP区启动了~

程序里面使用了掉电状态, 平常所有IO口全部是高阻, 所以功耗很低, 基本上不会给USB带来什么负担

Pony279 发表于 2011-12-18 18:54:32

使用的时候就是用你原来的下载电路, 然后目标单片机引出几个脚和这个东东连接
其实他的工作就是监听串口的信息
当检测到有下载信号的时候, 它就可以复位目标单片机了

hefq 发表于 2011-12-18 19:43:33

不用冷启动,直接复位就可以下载吗?

mcu_mouse 发表于 2011-12-18 19:53:11

还要延时的,收到串口发来的消息后延时一秒左右再软复位从ISP下载区启动,要不就有可能两边下载时间不匹配了,导致下载失败

BXAK 发表于 2011-12-18 19:56:49

回复【2楼】hefq 何访贤
-----------------------------------------------------------------------

//███████████████将这段代码嵌入到主函数的初始化中████████████████
   if(PCON&0x10)PCON &= 0xEF;         //如果POF位=1,将POF位清0。
   else {PCON |= 0x10; IAP_CONTR=0x60;} //如果POF位=0,将POF位置1。软复位从ISP监控区启动。
//█████████████████████████████████████████████████████████████
//说明:开始烧写程序时,按一下单片机的“复位键”就可以下载程序。



PS:汗,以前一直以为提示“请给MCU上电…”才可以冷启下载程序,最近才明白点击“下载”后就可以了冷启

Pony279 发表于 2011-12-18 20:01:18

回复【4楼】BXAK
-----------------------------------------------------------------------
嗯, 我一开始使用的就是类似这种方法, 加一个STC15F104E来监视串口的话就免去了手动按复位键的环节了

Pony279 发表于 2011-12-18 20:03:00

回复【3楼】mcu_mouse
还要延时的,收到串口发来的消息后延时一秒左右再软复位从isp下载区启动,要不就有可能两边下载时间不匹配了,导致下载失败
-----------------------------------------------------------------------

不懂....

我测试了好多次了, 没什么出现什么问题呀...

watermarker 发表于 2011-12-18 20:15:30

mark

Pony279 发表于 2011-12-18 20:21:30

回复【3楼】mcu_mouse
还要延时的,收到串口发来的消息后延时一秒左右再软复位从isp下载区启动,要不就有可能两边下载时间不匹配了,导致下载失败
-----------------------------------------------------------------------

你可能误解了,
我的方案应该不算是使用软件复位
是由STC15F104E控制 目标单片机复位

你说的两边下载时间不匹配的问题, 我不太理解?

losting 发表于 2011-12-23 03:48:32

mark

LSZD 发表于 2011-12-23 04:45:10

回复【9楼】losting
mark
-----------------------------------------------------------------------

taojie 发表于 2011-12-26 16:21:01

可以的,不用断电,直接按复位键,延时要久一点啊

chigonxwt 发表于 2011-12-26 18:35:10

我汗,你这板子我也有。。。。LZ怎么残忍地把彩屏卸下来了。。LZ有没有彩屏的例程可以提供的?

Pony279 发表于 2011-12-27 12:36:21

回复【12楼】chigonxwt
-----------------------------------------------------------------------

呵呵, 这个都被你发现了
我是觉得彩屏嵌死在板上太浪费了,
所以想卸下来单独做一个模块, 不过卸的时候因为我不懂所以有些损坏...

彩屏的资料我没有, 这位大哥的帖子里有例程代码
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=5203339&bbs_page_no=1&search_mode=4&search_text=Pony279&bbs_id=9999

pkjapan 发表于 2011-12-27 12:48:57

楼主,你的51开发板上的屏怎么被你拆掉了?那个屏怎么用啊,我也用的是这个板子

j-link 发表于 2011-12-27 13:15:22

方式错误,STC有些设定必须冷启动,否则有些动作会异常!!!!!!!!!!!!!!!!!!!!!

nongxiaoming 发表于 2011-12-27 13:19:42

有个和楼主一样的单片机,呵呵,但是现在闲置了

Pony279 发表于 2011-12-27 15:04:03

回复【15楼】j-link
-----------------------------------------------------------------------

比如呢?
欢迎指正!

Pony279 发表于 2011-12-27 15:06:26

回复【14楼】pkjapan
-----------------------------------------------------------------------

哈, 我是强拆的, 所以有点损坏了, 不要学我...

应该是要用到热风枪比较好

Pony279 发表于 2011-12-27 15:17:23

回复【18楼】Pony279 霍斯
-----------------------------------------------------------------------

热风枪好像不好...

拆焊条那里还是应该用烙铁头吧...

我没经验, 不清楚

nono2000 发表于 2011-12-27 17:15:43

回复【17楼】Pony279霍斯
回复【15楼】j-link
-----------------------------------------------------------------------
比如呢?
欢迎指正!
-----------------------------------------------------------------------
設定 LV 判斷腳位,如果沒重新開關電源永遠無法起用。(第一次)
還有很多問題,STC有些設定都必須重起,否則....

Pony279 发表于 2011-12-27 18:46:13

回复【20楼】nono2000
-----------------------------------------------------------------------

谢谢你的指出, 我看了STC的datasheet, 你想说的是这个吧? 不过软件上也写的很清楚了, 是下次冷启动....所以就算手动冷启动下载完程序后还是要再冷启动的吧?所以我这个方案木有神马问题呀
不过我感觉用MOS管的方案还是比较好的(如果真的有datasheet上写的几个m欧的导通电阻的话...), 如果可以判断出什么时候下载完程序了就可以再次冷启动开发板, 呵呵...
http://cache.amobbs.com/bbs_upload782111/files_49/ourdev_708073VKEZ83.jpg

我已经把那小玩意儿挂在我的开发板上调过几个程序了, 挺方便的呀~

Pony279 发表于 2011-12-27 18:51:08

http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=5203339&bbs_page_no=1&search_mode=4&search_text=Pony279&bbs_id=9999
这位网友的开发板上用的就是MOS管的方案

不过我有点怀疑原理图上的那个PMOS管画反了(见45楼), 不知各位能否给我解释一下(不要用一句看模电书打发我, 我就是看了模电书才怀疑的...)

zaixian 发表于 2011-12-27 19:11:57

看多了觉得糊涂了。俺希望是前者,因为15f100系列没有硬件串口,自动isp不了,

a 到底是给stc15F104E,可以自己(就一片)做到不断电下载呐?

还是

b 用一片stc15f给其它stc芯片做不断电下载??

貌似是后者。。。。

Pony279 发表于 2011-12-27 19:16:12

回复【23楼】zaixian 来来
-----------------------------------------------------------------------

呵呵, 是后者...
不好意思, 我没解释清楚...

zaixian 发表于 2011-12-27 19:29:04

回复【24楼】Pony279 霍斯
-----------------------------------------------------------------------

明白了。
,后者的话,对偶来说就没多大意义,呵呵,
习惯了初期占用串口,auto-isp调试stc,最后收工的时候,改一下串口即可。

j-link 发表于 2011-12-27 20:07:39

回复【21楼】Pony279霍斯
回复【20楼】nono2000
-----------------------------------------------------------------------
谢谢你的指出, 我看了stc的datasheet, 你想说的是这个吧? 不过软件上也写的很清楚了, 是下次冷启动....所以就算手动冷启动下载完程序后还是要再冷启动的吧?所以我这个方案木有神马问题呀
不过我感觉用mos管的方案还是比较好的(如果真的有datasheet上写的几个m欧的导通电阻的话...), 如果可以判断出什么时候下载完程序了就可以再次冷启动开发板, 呵呵...
我已经把那小玩意儿挂在我的开发板上调过几个程序了, 挺方便的呀~
-----------------------------------------------------------------------
STC内部有一个严重bug,必须使用lv功能,否则程序power down时会乱跑,STC官方工程师千交代万交代,不对外公开^.^


如果你的程序有修改开机init...建议最好冷启动.包括uart...等等设定,所以干脆通通冷启动比较好

Pony279 发表于 2011-12-27 20:25:17

回复【26楼】j-link
-----------------------------------------------------------------------

晕...
我以后还是做个MOS管的好了...

Pony279 发表于 2011-12-27 20:29:09

回复【26楼】j-link
-----------------------------------------------------------------------

其实我不太明白你说的那个BUG

有没有实际测试的内容? 发条链接给我看看吧

j-link 发表于 2011-12-27 20:45:08

回复【28楼】Pony279霍斯
回复【26楼】j-link
-----------------------------------------------------------------------
其实我不太明白你说的那个bug
有没有实际测试的内容? 发条链接给我看看吧
-----------------------------------------------------------------------
你有没有发现很多人反应:STCflash被乱写或是外部RAM遭乱写或是掉电时突然乱动作...其实都是没有起动外部低电压RESET判断导致!!!
这个问题,别的厂牌8051不会发生,为独 STC 必须要加入""官员不说""(因为会影响 44PIN以下包装产品)
因为 STC 的RESET脚并不是真正的CPU RESET脚,真正RESET脚是LV.

所以喔,你如果使用 STC 产品,如果没设定LV起用...你的产品保证被退货^.^(不要跟别人说是STC官方讲的喔)

Pony279 发表于 2011-12-27 21:10:59

回复【29楼】j-link
-----------------------------------------------------------------------

或许吧,

我玩过STC90的, 玩过STC12C5A60S2的, 也玩过STC15的, 也算是调过挺多程序的了, 不过还没受到这些BUG的影响

这种东西, 最好有个人发个专帖, 有完整的测试过程和测试数据才能让人相信的,

在坛子里也看了挺多人骂STC的, 可是我就没看到有发完整的测试过程和测试数据的, 光骂是不管用的, 要是真有人发了, 那才是给STC的致命一击

都在骂, 都在用...现在市场上的51开发板, 也基本上是STC的

j-link 发表于 2011-12-27 21:22:45

回复【30楼】Pony279霍斯
回复【29楼】j-link
-----------------------------------------------------------------------
或许吧,
我玩过stc90的, 玩过stc12c5a60s2的, 也玩过stc15的, 也算是调过挺多程序的了, 不过还没受到这些bug的影响
这种东西, 最好有个人发个专帖, 有完整的测试过程和测试数据才能让人相信的,
在坛子里也看了挺多人骂stc的, 可是我就没看到有发完整的测试过程和测试数据的, 光骂是不管用的, 要是真有人发了, 那才是给stc的致命一击
都在骂, 都在用...现在市场上的51开发板, 也基本上是stc的
-----------------------------------------------------------------------
实验很早就做过了也发表过了,你可以在STC起用flash或是外挂其他的RAM,然后每天开开关关上千次(设计一个简单定时开关)
你就知道了^.^.......

Pony279 发表于 2011-12-27 21:41:14

回复【31楼】j-link
-----------------------------------------------------------------------

这个寒假我是有可能做个外挂RAM的...

到时候可能就知道了

prophet000 发表于 2012-2-14 13:28:00

再Mark

hamipeter 发表于 2012-5-15 23:41:05

顶一下!!!

dwfc 发表于 2012-5-16 00:26:14

好方法借鉴下{:biggrin:}

tonyone 发表于 2013-3-31 11:25:30

留个痕迹走人

macp 发表于 2014-2-21 14:42:09

这个方法就不用开关再启动就能下载程序了?
页: [1]
查看完整版本: 折中版的STC免手动免断电下载程序方案, 只需加一行代码, 不占用其他任何资源, 有图