OpenEdv-开源电子网

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

FlyMcu下载时 BOOT0及复位脚的设置

[复制链接]

1

主题

4

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2016-3-11
在线时间
2 小时
发表于 2016-3-11 23:34:57 | 显示全部楼层 |阅读模式
1金钱
微信截图_20160311231246.png 微信截图_20160311231206.png
求助,最近拿到同学的一块板子,发现一个现象无法解决。求大家相助。    这个电路图里面的RSET和BOOT0引脚和原子哥的不一样。我在使用FlyMcu下载的时候,无论boot0接1,boot1接0还是boot0和boot1都接0,都不能下载,显示如下:
DTR电平置低(-3--12V),复位
RTS置高(+3-+12V),选择进入BootLoader
...延时100毫秒
DTR电平变高(+3-+12V)释放复位
RTS维持高
开始连接...401, 接收到:
芯片超时无应答,无法连接


然后我尝试了各种各样的RTS,DTR设置都不能成功。按复位键也不行

后来,我试着把P8,也就是高电平第一个图右下角那个连接端拔了,发现一拔掉,它就开始接收数据,然后下载成功。
另外,还有一个现象,就是不论我是boot0接1,boot1接0,还是boot0和boot1都接0,只要我拔了P8(也就是让复位键加一个高电平)就可以下载成功,而不这样就怎么也不成功。
可是无不太理解这是为什么???
1、若按这个电路boot0的接法,在RTSN为0时,三极管会截止啊,这样3.3V经过一个100K电阻,通过boot0,然后再串一个1K电阻,这样boot0的电平为低电平啊,怎么能够变到高电平上面呢?这一块有点混乱
2、复位电路这一块,DTRN为高电平时,无论三极管无论是导通还是不饱和的导通RSET应该都是为低电平的,而经过延时100msDTRN变为低电平后,三极管一定截止,这样RSET就为高电平了啊,那为什么非要我用手拔了它才能正常下载呢?


最佳答案

查看完整内容[请看2#楼]

终于,还是我自己解决了这个问题。使用普中科技的STM32F103开板子的朋友,可以看看,怎么样不用普中ISP,而用FLYMCU正常下载,因为他们的电路有问题。 因为无论你把BOOT0接到3.3V还是0V上,芯片上实际的BOOT0引脚值都是0V!!!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2016-3-11
在线时间
2 小时
 楼主| 发表于 2016-3-11 23:34:58 | 显示全部楼层
终于,还是我自己解决了这个问题。使用普中科技的STM32F103开板子的朋友,可以看看,怎么样不用普中ISP,而用FLYMCU正常下载,因为他们的电路有问题。     因为无论你把BOOT0接到3.3V还是0V上,芯片上实际的BOOT0引脚值都是0V!!!
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2016-3-11
在线时间
2 小时
 楼主| 发表于 2016-3-12 00:14:27 | 显示全部楼层
求原子哥帮忙
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2016-3-11
在线时间
2 小时
 楼主| 发表于 2016-3-15 21:33:05 | 显示全部楼层
  上电后,BOOT0端子接3.3V,BOOT1端子接0V时:RTS#为4.67V,DTR#4.64V,TP5三极管(C3.3V E0V B4.67V),R58电压为0V,R59电压为0V,R48一端为3.3V,一端为0V,R48为0V的这一端与TP5三极管的E端均为0,这是线BOOT0的电平,也就是说实际上此时芯片的BOOT0为0V。
  现在若BOOT0端子接0V,BOOT1端子接0V:则R48电压为0V,TP5三极管仍然是(C3.3V E0V B4.67V),E极表示的是实际上芯片的BOOT0端,此时仍然为0V。
  也就是说在普中科技的这个STM32F103VET6开发套件板子上,无论BOOT0端子是接在高电平上,还是接在低电平上,实际上芯片的BOOT0脚都是0V,即使我们将BOOT0端子靠左接3.3V,实际的BOOT0引脚仍然为0V,无法将其拉高!!!但是BOOT1端子的3.3V和0V选择是有效,这个根据R49电阻的电压测试可了解。总结就是我们把BOOT0端子上中间引出来的那个端子无论接在3.3V或是0V,芯片BOOT0引脚得到的电压设置总是0V。除非我们主动把芯片的第138脚(R48的一端,或者TP5三极管的E极)单独拉出来接上一个高电平。

用flymcu选择DTR的低电平复位,RTS高电平进BootLoader时,情况如下:
DTR电平置低(-3--12V),复位
RTS置高(+3-+12V),选择进入BootLoader
...延时100毫秒
DTR电平变高(+3-+12V)释放复位
RTS维持高
开始连接...401, 接收到:

此时RTS#为0V,DTR#0V,TP5三极管(C3.3V E3.31V B2.65V),R48电压为0V,R48两脚的电压分别均为3.3V说明实际芯片BOOT0引脚是高电平(同R48的一端,或者TP5三极管的E极)为3.3V,至此才进入BOOT0=0,BOOT1=1的系统存储器选择状态,用于串口下载。因为首先, flymcu 控制 DTR 输出低电平,则 DTR_N 输出高,然后 RTS 置高,则 RTS_N 输出低,然后,延时 100ms 后, flymcu 控制DTR为高电平,则 DTR_N输出低电平,RTS维持高电平,则 RTS_N继续为低电平,这就是我们此时测得的状态。
在这里的结论是,RTS#引脚为高电平时,BOOT0=0V,RTS#引脚为低电平时,BOOT0=3.3V。注意在RTS#引脚为低电平期间,无论BOOT0端子接3.3V还是0V, 三极管E3.31V,B2.65V这个值不变。


上电时,P8若插好是3.3V,R69两端电压为0V,C103电容一端为3.3V,另一端为4.65V,TP7三极管(C3.3V E0V B4.67V),C82电容一端为0V,另一端为3.3V,R45两端电压为0V,也就是说RSET为高电平。用flymcu选择DTR的低电平复位,RTS高电平进BootLoader后,延时 100ms 后, flymcu 控制DTR为高电平,则 DTR_N输出低电平,此时测得P8端子电压0.66V,TP7三极管(C0.66V E0V B0.08V),C103一端3.3V,另一端0.08V,也就是说DTR#为低电平后,RSET端会一直处于低电平状态,而无法恢复到高电平状态,从而不能正常完成复位(正常复位是低电平复位,然后复位脚恢复到高电平状态,从而完成复位),此时相当于复位键一直被人按着一样,那么为了使得下载正常,可以拔掉P8这个端子的短路帽,这样断开DTR#控制电路与RSET的连接,一旦P8断开,RSET会因为复位电路,拉到高电平,这样手动完成复位状态。
下载的需要是在BOOT0=1,BOOT1=0的时候,有一个复位操作。
在普中自己的ISP下载软件里面,可以探测TP5三极管E极(也就是芯片的BOOT0脚),和P8端。E极电平是从0.03V(上电),点击下载后,E极电平会跳到3.3V然后又下降到0.03V。RSET是从3.3V有一个下降的电压然后回升至3.3V。

总结:普中的这个板子,RTS#为低电平时BOOT0引脚才能置为高电平,DTR#为低电平时RSET为0。
在flymcu下载时有这样几种方式:
1、选择DTR的低电平复位,RTS高电平进BootLoader,然后拔掉P8,让复位脚有一个高电平正常完成复位。
2、选择能够让RTS#电平维持低电平的选择,不拔P8,按一下复位键就好。譬如RTS的低电平复位,不用DTR。过程如下:

RTS电平置低(-3--12V),复位
...延时100毫秒
RTS电平变高(+3-+12V)释放复位
开始连接...47, 接收到:

。。。等等

总之使得满足串口下载条件即可!
                                                                                                       
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-13 01:48

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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