OpenEdv-开源电子网

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

LPC2132芯片的ISP一键式下载问题

[复制链接]

2

主题

17

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2012-4-21
在线时间
0 小时
发表于 2012-4-21 14:40:43 | 显示全部楼层 |阅读模式
       我向同事借了原点的这个miniSTM32的开发板来玩玩。刚刚在看”STM32不完全手册_V2.1.pdf“第27页的时候,讲述了PL2303芯片进行USB转UART的电路。正好联想到我最近在设计的LPC2132芯片的电路,LPC2132在进行ISP下载的时候,必须在上电之前就将P0.14引脚接GND,这样才能进入ISP下载状态。但是我觉得很不方便。
      一来是现在笔记本电脑基本不带串口了。二来是不想每次下载的时候都要去短接P0.14至GND。所有还是直接考虑USB转UART,且能够进行自动下载,即所谓的一键式下载。
      我现在的思路是直接按照不完全手册上面说的那样,将miniSTM32上面的USB_RS232部分电路产生的RxD和TxD直接引到我的LPC2132板子上面。当然那种GND和3.3V我会公用起来的。
      现在的问题就是怎么实现一键式,也就是能够自动的将LPC2132的P0.14拉成低电平。这边看到PL2303的DTR和RST引脚,也就是miniSTM32板子上对应的RESET和BOOT0。(也就是说的那个Q1和Q2电路)
       我想请教的是,BOOT0是不是准备下载程序的时候就会被拉低,一直持续到程序下载完毕?如果是这样的话,我完全可以将这个信号引接到LPC2132的P0.14引脚了。


     

 
对B0引脚的修改.jpg
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

17

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2012-4-21
在线时间
0 小时
 楼主| 发表于 2012-4-21 15:01:44 | 显示全部楼层
以下是原子大哥回复别人的,链接 http://www.tosogo.com/posts/list/1060.htm 


回复【楼主位】shuier1028:
---------------------------------
这个很好理解吧? 
首先,你要了解STM32的几种启动模式. 
B0接GND,B1接GND.那就是正常的启动模式,从flash加载代码. 
而B0接V3.3,B1接GND.则是ISP模式,也就是串口更新代码. 

其次,你要了解STM32 ISP下载代码的过程. 
首先B0接V3.3,然后复位STM32.STM32就会加载ISP代码(固化存储在内部),从而进入ISP模式.此时便可以通过串口下载程序了. 

最后再来看看一键下载是怎么实现的呢? 
从原理图可知L2303的RTS控制B0,DTR控制RST. 
我们要达到下载的目的,就必须先让RTS拉高B0(设置B0为1),然后再让DTR控制RST为低(STM32为低电平复位).然后再释放RTS为高(停止复位),然后再开始串口下载代码(此时B0可以为高,也可以为低). 

所以我们看到mcuisp连接过程是: 

DTR电平置低(-3--12V),复位(DTR接了RST) 
RTS置高(+3-+12V),选择进入BootLoader(RTS接了B0) 
...延时100毫秒 
DTR电平变高(+3-+12V)释放复位(释放复位,但是此时B0为高,所以进入ISP模式) 
开始连接...4, 接收到:1F (连接成功) 
在串口COM10连接成功@230400bps,耗时437毫秒 

RTS维持高
回复 支持 反对

使用道具 举报

2

主题

17

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2012-4-21
在线时间
0 小时
 楼主| 发表于 2012-4-21 15:02:09 | 显示全部楼层
http://www.tosogo.com/posts/list/1060.htm
回复 支持 反对

使用道具 举报

2

主题

17

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2012-4-21
在线时间
0 小时
 楼主| 发表于 2012-4-21 15:33:13 | 显示全部楼层
回复【2楼】shuier1028:
以下是原子大哥回复别人的,链接 http://www.tosogo.com/posts/list/1060.htm 
回复【楼主位】shuier1028:
---------------------------------
这个很好理解吧? 
首先,你要了解STM32的几种启动模式. 
B0接GND,B1接GND.那就是正常的启动模式,从flash加载代码. 
而B0接V3.3,B1接GND.则是ISP模式,也就是串口更新代码. 
其次,你要了解STM32 ISP下载代码的过程. 
首先B0接V3.3,然后复位STM32.STM32就会加载ISP代码(固化存储在内部),从而进入ISP模式.此时便可以通过串口下载程序了. 
最后再来看看一键下载是怎么实现的呢? 
从原理图可知L2303的RTS控制B0,DTR控制RST. 
我们要达到下载的目的,就必须先让RTS拉高B0(设置B0为1),然后再让DTR控制RST为低(STM32为低电平复位).然后再释放RTS为高(停止复位),然后再开始串口下载代码(此时B0可以为高,也可以为低). 
所以我们看到mcuisp连接过程是: 
DTR
......
---------------------------------
按照原子大哥的解释,我理解如下:
 要想ISP自动下载,无非两个信号:①RESET;②使能,简单的说就是允许进入ISP下载状态的使能;
 1、RESET复位:
     LPC2132和STM32是一样的,都是低电平复位;
2、使能,进入ISP的使能:
     LPC2132的ISP使能是P0.14为低电平,且是在上电的时候,也就是保持P0.14=0,然后复位。这一点和STM32不一样的地方就是STM32是B0=1的时候,复位STM32才进入了ISP。
  那么,LPC2132进入ISP的步骤就是:
     1)首先将P0.14拉低,也就是P0.14=0;
     2)在1)的基础上重新上电或者复位LPC2132;这样就进入了ISP;
     3)在下载程序的时候,LPC2132和STM32是一样的,也就是在程序下载期间,P0.14和B0随便是高电平还是低电平。因此,进入ISP的条件主要还是发生在复位的那个很小的短暂时间内,一旦进入ISP下载状态之后,不用管P0.14和B0的引脚电平了。
   根据以上三个步骤,将要修改miniSTM32上面的LP2303部分Q1和Q2组成的“一键式下载”电路,主要就是修改B0那一块,因为LPC2132进入ISP状态是P0.14为低电平,而miniSTM32进入ISP下载状态是B0为高电平。因此要想应用miniSTM32上面的一键式下载电路到LPC2132上面去,是必须要将B0那边修改掉的,否则死了也不会“自动”进入ISP下载状态。
   怎么修改?
   方法如下:将P0.14接到Q2的发射极,同时上拉4.7K电阻至3.3V,主要是为了保证不下载程序的时候P0.14是高电平,避免最终产品误入ISP状态导致程序不运行。Q2的集电极接GND,基极就和原来的一样,接到PL2303的RTS_N引脚。这样在PL2303原有驱动不变的情况下,开始下载时先将RTS_N置低电平,那么就导致P0.14变为低电平。,之后将DTR_N置高电平,导致RESET=0,也就是复位了。这样,就满足了P0.14=0并开始复位时,自动进入ISP下载模式

   
回复 支持 反对

使用道具 举报

2

主题

17

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2012-4-21
在线时间
0 小时
 楼主| 发表于 2012-4-21 15:34:18 | 显示全部楼层
晕死,我改好了那一块,怎么不能回复图片的
回复 支持 反对

使用道具 举报

2

主题

17

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2012-4-21
在线时间
0 小时
 楼主| 发表于 2012-4-21 15:36:58 | 显示全部楼层
回复【5楼】shuier1028:
---------------------------------
我把对B0引脚的修改图放在附件里
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165225
金钱
165225
注册时间
2010-12-1
在线时间
2107 小时
发表于 2012-4-21 20:10:13 | 显示全部楼层
回复【4楼】shuier1028:
---------------------------------
理解的不错.
实践一下吧,不过这个要和你使用的下载软件配套才行.否则白搭...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

17

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2012-4-21
在线时间
0 小时
 楼主| 发表于 2012-4-27 12:42:38 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
成功了。的确如你所说的和软件配套才行。我一开始用MCUISP的软件,选择那个DTR和RTS的时候,不管设置成哪一个都不行,而且miniSTM32光盘资料里的MCUISP这个软件,他只能设置选择哪一种DTR和RTS的复位进入Bootloader,并不能修改里面的时间,里面的时间都是100ms,很难用来看到DTR和RTS两个引脚的时序。
  我改用FlashMagic之后,里面可以修改时间,这样很容易就看出来了DTR和RTS的时序了,根据时序我发现只要直接将PL2303的DTR接LPC2132的RESET,RTS直接接P0.14。这样就可以自动进入ISP,开始下载,下载完毕了,又自动退出ISP。现在我也是在miniSTM32板子上引出线来的,后面根据结论我整理出来后发表出来。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165225
金钱
165225
注册时间
2010-12-1
在线时间
2107 小时
发表于 2012-4-27 15:01:19 | 显示全部楼层
恭喜
回复 支持 反对

使用道具 举报

2

主题

17

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2012-4-21
在线时间
0 小时
 楼主| 发表于 2012-4-27 15:13:38 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
原子大哥:
    问你一下,因为我现在把miniSTM32的板子基本上拆的不像样子了。所以我想问一下当那个USB_232供电的时候,所有ISP下载时候该短接的短路帽都按照ISP下载要求短接,一旦USB_232的USB上电的时候,STM32芯片是不是会自动进入ISP下载状态。我现在按照本帖子上写的那样,根据miniSTM32板子的USB转232电路,重新设计出了LPC2132芯片的ISP自动下载,但是现在出现一个问题,就是USB一插上电脑之后,板子就开始自动进入了ISP下载。如果不下载,只想供电的话,重新按一下复位键就好了。我想问一下miniSTM32是不是也会一上电就进入ISP?(假设那些短路帽就已经按照ISP下载)
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165225
金钱
165225
注册时间
2010-12-1
在线时间
2107 小时
发表于 2012-4-27 16:37:07 | 显示全部楼层
回复【10楼】shuier1028:
---------------------------------
会闪烁几下(被复位.).然后开始正常工作.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

17

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2012-4-21
在线时间
0 小时
 楼主| 发表于 2012-4-27 16:42:52 | 显示全部楼层
回复【11楼】正点原子:
---------------------------------
对呀,我分别对DTR和RTS引脚上接了两个LED,发现上电的时候LED在闪烁。但是现在的问题就是这个上电时候的“被复位”导致我的LPC2132直接进入ISP状态了。此时如果不想下载程序的话,按一下LPC2132的复位键就好了,DTR和RTS保持着高电平。接下来如果想自动下载,都是没有问题的。我就是想怎么样的电路才能避免上电时候PL2303引脚DTR和RTS闪烁对LPC2132的影响?我现在的电路就是将DTR和RTS通过一个NPN三极管接到对应的RESET和P0.14,这个NPN电路的作用就是DTR和RTS输出高电平时候,P0.14和RESET也相应输入高电平,相反,低电平也是一样的。NPN8050就是起一个增强驱动作用。
回复 支持 反对

使用道具 举报

2

主题

17

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2012-4-21
在线时间
0 小时
 楼主| 发表于 2012-4-28 09:03:32 | 显示全部楼层
回复【11楼】正点原子:
---------------------------------
会不会是因为PL2303芯片的RESET引脚直接接的是VDD而导致的呢?如果接一个阻容复位电路,其一个延时的作用会不会解决呢??
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165225
金钱
165225
注册时间
2010-12-1
在线时间
2107 小时
发表于 2012-4-28 17:42:35 | 显示全部楼层
回复【13楼】shuier1028:
---------------------------------
因为PL2303在和电脑USB建立连接或者电脑其他USB口接入USB设备的时候,RST/DTR引脚的信号不稳定,导致复位.这个问题还真不好解决.
不过就是上电的时候有点问题,上电稳定了,就没问题了,影响倒是不大.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2012-5-2
在线时间
25 小时
发表于 2012-5-2 21:51:59 | 显示全部楼层
呵呵,也是一个小问题,想办法解决
我就是我,只有一个
回复 支持 反对

使用道具 举报

0

主题

13

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2014-12-22
在线时间
2 小时
发表于 2015-1-30 13:01:46 | 显示全部楼层
文中提到的BootLoader是ISP功能固化在内部的,那IAP的BootLoader则是自己写的,好像感觉不到两者的区别吗,望指示
STM MCU FAE
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-1 12:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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