OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 12597|回复: 22

一波三折为下载:STC51单片机99%下载成功率攻略

[复制链接]

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2012-1-27
在线时间
0 小时
发表于 2012-7-12 19:58:27 | 显示全部楼层 |阅读模式
近期公司开发一款STC51核心的射频卡和2.4G无线通讯开发板,由本人操刀,原本认为难做的地方并没费什么力气,反倒是在串口下载这一块卡了壳,虽然最终搞定,但也费了不少周折,在网上查询了一下,发现为此类问题所困扰的难兄难弟难姐难妹们也不老少,因此把这次的经历成文以供大家参考,长文慎读。
板子上的下载接口设计成USB和RS232双接口形式,两者共用一个串口,都可以ISP下载;USB转串选择了CH340,这个芯片经过大量的试用,证明速度快、性能相当稳定,要注意的是电容C5,一定要靠近芯片布置,否则CH340会毫不客气地罢工;RS232电平转换芯片用的是SP3232,电路形式和参数都是以前用过的。由于USB接口比较方便,所以做程序的时候,一直用的USB下载,没什么问题。程序做好之后,到了整板验证阶段,突然发现,RS232口下载不了程序,握手通不过!




这真是辛辛苦苦二十年,转眼回到解放前。测试了RS232串口通讯,115200的波特率毫无问题,看波形也没发现有啥异常。到底为啥?网上搜索一番,发现有人说,STC51单片机下载,用SP3232不行,得用MAX3232!换!果然,奇迹。。。还就是没有发生,依然是握不上手,不管波特率设到多低。呆坐半晌,突然想起,板子刚焊好的时候,串口下载是试验过的,肯定是曾经通过,为什么现在就不行了?有啥不同呢?找来找去,目光落到ISP软件商,以前用的是STC-ISP4.83,现在是4.88,莫非是软件版本问题?换回4.83,这回,奇迹真的发生了,串口下载通了,无论是SP3232,还是MAX3232,都可以115200的速度下载,效果一样,芯片兼容论不攻自破了。
串口下载通倒是通了,但是多次试验发现,下载的成功率远比不上USB转串的高:CH340转串下载,成功率接近100%,而RS232下载,经常卡在握手阶段,50%的成功率都达不到。这就奇怪了,看STC-ISP软件的显示:某些USB转串口下载存在兼容性问题,这可好,USB兼容的好好的,RS232居然出现兼容性问题了。观察发现,下载不了的情况,都是握手不成功,只要握手成功,绝大多数情况擦写芯片都能进行到底,可见串行通讯没什么大问题。试想,通过USB串口下载,要经过串转U,U再转串两道折腾,居然好用,RS232下载,单纯就是电平转换,为啥反而不灵捏?莫非是速度问题,越折腾越好?PC软件运行的越慢越好?试!开发用的电脑,CPU是被超频到3G的Q8200,确实还比较快,找个慢的!在一台小Y450上,接上板子下载,真正的奇迹出现了,RS232下载,在STC-ISP4.83上,成功率飙升,超80%没问题;而原来下载不了的STC-ISP4.88上,也能下载了!娘诶,还真是慢了好啊!

接下来,又修正了一个小问题:看C20,用的是104,改成10uF的钽电容,世界终于彻底和谐了,RS232下载,成功率也能趋近于100%了。不敢大意,焊了几十块板子,把能找到的各种型号的STC51单片机也找了几十片,统统下载一番,结果是,确实是没事了,无论是U转串还是RS232下载,100%成功率不敢说,99%还是有的,剩下的那1%,无心探究了,毕竟100次里多按一下按键也累不着。板子终于可以出炉了,小晒一下:




感谢看此长文,摘要总结:
1 芯片兼容论貌似站不住脚,无论是MAX3232还是SP3232,做STC51单片机下载效果都一样;
2 芯片本身是有个体差异的,有的芯片确实是比较难下载;
3 不要吝惜通讯芯片的解耦电容,比如那个C20,虽然在我的板子上,离232芯片不远就是个220uF的铝电解,但是不用10uF钽电容,效果还就是不行;
4 STC-ISP4.83确实是比4.88版好用,4.86版,报告病毒???
5 电脑的配置不要太高,速度不要太快——老姚似乎还没注意到,电脑速度快了,STC-ISP软件和STC51单片机握手是要出问题的!解决方法很简单,本人有大量价钱高速度低的老机器,欢迎垂询哈:—P
http://item.taobao.com/item.htm?id=8251860556
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

36

主题

1105

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2195
金钱
2195
注册时间
2012-2-8
在线时间
34 小时
发表于 2012-7-12 20:06:26 | 显示全部楼层
51 也把界面做得那么精致,赞一个,
想问一下实现的原理是什么?楼主自己写了个GUI吗?
https://github.com/roxma
回复 支持 反对

使用道具 举报

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2012-1-27
在线时间
0 小时
 楼主| 发表于 2012-7-12 20:11:49 | 显示全部楼层
GUI是自制的,触控操作。
http://item.taobao.com/item.htm?id=8251860556
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2012-7-12 22:10:05 | 显示全部楼层
gui做的不错
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

46

主题

329

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1544
金钱
1544
注册时间
2012-4-9
在线时间
80 小时
发表于 2012-7-16 09:32:45 | 显示全部楼层
回复【楼主位】jason.zhang:
---------------------------------
请问楼主,我用单片机下载,也是一直不能成功,是89C52RC的,用USB下载,PL2303模拟COM口,也是波特率设置到很低都不行,我用的WIN7的系统,PL2303的驱动也成功装上了,还是一直无法下载,握手不成功。是不是需要换电容啊?
STM32
回复 支持 反对

使用道具 举报

46

主题

329

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1544
金钱
1544
注册时间
2012-4-9
在线时间
80 小时
发表于 2012-7-16 12:30:16 | 显示全部楼层
回复【6楼】prefilon:
---------------------------------
我用的台式机,就是嫌RS232口又大又麻烦,没去试。。。USB一直又没成功
还是原子的板子好,USB供电一键下载,爽。。。
STM32
回复 支持 反对

使用道具 举报

36

主题

1105

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2195
金钱
2195
注册时间
2012-2-8
在线时间
34 小时
发表于 2012-7-16 13:31:47 | 显示全部楼层
51也可以做一键下载的,弄个单片机去监视串口的数据,适时进行复位就行了
https://github.com/roxma
回复 支持 反对

使用道具 举报

36

主题

1105

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2195
金钱
2195
注册时间
2012-2-8
在线时间
34 小时
发表于 2012-7-16 13:33:38 | 显示全部楼层
这有参考
http://www.amobbs.com/forum.php?mod=viewthread&tid=5279682
http://www.amobbs.com/thread-5287022-1-1.html
https://github.com/roxma
回复 支持 反对

使用道具 举报

46

主题

329

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1544
金钱
1544
注册时间
2012-4-9
在线时间
80 小时
发表于 2012-7-16 14:48:56 | 显示全部楼层
回复【10楼】Pony279:
---------------------------------
谢谢
STM32
回复 支持 反对

使用道具 举报

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2012-1-27
在线时间
0 小时
 楼主| 发表于 2012-7-20 22:26:59 | 显示全部楼层
回复【5楼】jj123paopao:

---------------------------------
多方面考虑吧,驱动版本、机器速度,等等,电容可以换换试试
http://item.taobao.com/item.htm?id=8251860556
回复 支持 反对

使用道具 举报

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2012-1-27
在线时间
0 小时
 楼主| 发表于 2012-7-20 22:28:45 | 显示全部楼层
回复【6楼】prefilon:

---------------------------------
从来都是。。。。。不知道怎么个从来都是法
为了验证,无论是独立的USB转串,还是自己做的USB转串,我都试了试,一点‘不堪入目’的迹象都没有啊
另外,USB转串下载,115200;RS232下载,57600,一点问题都没有。
http://item.taobao.com/item.htm?id=8251860556
回复 支持 反对

使用道具 举报

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2012-1-27
在线时间
0 小时
 楼主| 发表于 2012-7-20 22:31:54 | 显示全部楼层
回复【7楼】prefilon:

---------------------------------
自制GUI
http://item.taobao.com/item.htm?id=8251860556
回复 支持 反对

使用道具 举报

头像被屏蔽

6168

主题

7036

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
19705
金钱
19705
注册时间
2012-12-27
在线时间
25 小时
发表于 2013-4-22 17:01:48 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

126

主题

820

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1683
金钱
1683
注册时间
2012-10-28
在线时间
62 小时
发表于 2013-4-22 17:37:20 | 显示全部楼层
開發板做的很好,頂一個
坚持学习!就能成功!
回复 支持 反对

使用道具 举报

2

主题

255

帖子

0

精华

高级会员

Rank: 4

积分
821
金钱
821
注册时间
2013-6-5
在线时间
141 小时
发表于 2013-6-7 04:19:44 | 显示全部楼层
大家注意:
1.232芯片有配0.1uF,有配10uF的,这个看后缀查手册,不要想当然的瞎用,蒙对了也不要当经验推广。
2.STC芯片,不接电源,任何一个IO口给5V芯片也能工作,原理自己想,所以有的USB,232芯片太好了,TXD给出的高电平就能让STC断电也不能冷启动,解决办法是加一个二极管隔离一下。
回复 支持 反对

使用道具 举报

18

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
377
金钱
377
注册时间
2013-3-1
在线时间
50 小时
发表于 2013-6-14 11:58:41 | 显示全部楼层
232芯片的几个电容,试用1uF最好,经验谈。  也就是105
回复 支持 反对

使用道具 举报

13

主题

202

帖子

0

精华

高级会员

Rank: 4

积分
527
金钱
527
注册时间
2012-10-27
在线时间
65 小时
发表于 2013-6-14 16:13:16 | 显示全部楼层
回复【5楼】jj123paopao:
---------------------------------
STC的单片机好像不用P1.0和P1.1成功率会高点
回复 支持 反对

使用道具 举报

13

主题

202

帖子

0

精华

高级会员

Rank: 4

积分
527
金钱
527
注册时间
2012-10-27
在线时间
65 小时
发表于 2013-6-14 16:16:46 | 显示全部楼层
回复【5楼】jj123paopao:
---------------------------------
说错了,成功率与 1.0 1.1 无关
16楼第二句是对的

参考如下


RS-232 等通信电路, 推荐选择步骤4中:
    下次冷启动“P1.0/P1.1”等于“0/0”才可以下载程序

    单片机冷启动后(先没有电,后上电)首先运行的是单片机
系统 ISP 监控程序。系统 ISP 监控程序首先判断是否需要
“P1.0/P1.1”等于“0/0”才可以继续执行系统 ISP 监控程
序。
    如果用户设置了下次冷启动后“P1.0/P1.1”等于“0/0”
才可以下载程序,而下次冷启动后“P1.0/P1.1”不同时为
“0/0”,则单片机立即结束运行系统 ISP 监控程序,软复
位到用户应用程序区执行用户应用程序。
    如果用户设置了下次冷启动后“P1.0/P1.1”等于“0/0”
才可以下载程序,冷启动后如“P1.0/P1.1”同时为“0/0”,
则单片机会去判断 3.0/RxD 口有无合法下载命令流(有几百
个字节)。如果有合法下载命令流,则下载用户应用程序。如
果没有合法下载命令流,则单片机立即结束运行单片机系统 
ISP 监控程序,软复位到用户应用程序区执行用户应用程序。
回复 支持 反对

使用道具 举报

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2012-1-27
在线时间
0 小时
 楼主| 发表于 2013-6-22 08:53:27 | 显示全部楼层
回复【17楼】zhxzhx:
---------------------------------
C20是电源滤波,跟什么后缀没关系,不要想当然的瞎说
http://item.taobao.com/item.htm?id=8251860556
回复 支持 反对

使用道具 举报

5

主题

69

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2012-10-4
在线时间
2 小时
发表于 2013-6-26 21:11:54 | 显示全部楼层
stc下载用PL2303的成功率比max232,要高一些,,具体电容还是得看技术手册呀

多多思考,再接再厉
回复 支持 反对

使用道具 举报

2

主题

255

帖子

0

精华

高级会员

Rank: 4

积分
821
金钱
821
注册时间
2013-6-5
在线时间
141 小时
发表于 2014-3-6 17:00:30 | 显示全部楼层
回复【21楼】jason.zhang:
---------------------------------
那是电荷泵的充电电容,和振荡频率有关,可不是滤波电容.
回复 支持 反对

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2014-11-26 10:44:22 | 显示全部楼层
MARK&STUDY
回复 支持 反对

使用道具 举报

0

主题

13

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2014-9-7
在线时间
0 小时
发表于 2014-12-4 09:14:24 | 显示全部楼层
回复【21楼】jason.zhang:
---------------------------------
还得继续修炼啊!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 08:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表