将BOOT1接地,不过有个问题---PB2就不能用了吗???能否配置PB2为IO???
因为通用的rs232电平转换芯片一般为2路,例max3232.
1路: PC端 MAX3232 STM32 TX ---> RXD RX <--- TXD
另1路 PC端 MAX3232 STM32 RTS ---> NRST CTS <--- RXD (此线实际无实质用处,主要检测)
那么BOOT0怎么控制呢???
答案是RXD接非门反向控制BOOT0(实际直连也行,不过可能误入ISP)
即:
路: PC端 MAX3232 STM32 TX ---> RXD ---> 非门 ---> BOOT0 RX <--- TXD
另1路 PC端 MAX3232 STM32 RTS ---> NRST CTS <--- RXD或BOOT0 (此路可不要,但可作为有无max3232的检测信号)
注: PC端输出也可用DTR代替 PC端输入也可用DSR/RING/CD代替
这个3线(4线带检测)方案可行吗???
答案是可行的~~~
为什么要采用非门呢??? 因为平常无232信号时,RXD为'1',BOOT0为'0',NRST为'1' 即为用户工作状态.
当然可以将RXD与BOOT0直连 这时: 无232信号时,RXD为'1',BOOT0为'1',NRST为'1' 也不会进入ISP.
不过看门狗复位或其他非正常复位时RXD为'1',BOOT0为'1',NRST为'0'(应该是内部复位,但也不排除NRST引脚受干扰) 所以就误入到了ISP状态,这不是我们希望得到的.
故采用非门逻辑(可用NPN+电阻代替)会提高安全性的.
当需要进入ISP(ICP)时,PC发送0x00到STM32,导致BOOT0出现9个单位时间的 '1'
例如波特率选择9600时,发送10个数据位约为1.04mS,9个'1'也在0.9mS左右. 这时再使NRST为'0',肯定进入ISP状态.
当然也可采用变波特率的控制方式,即切换时用低速率,数据通讯用高速率.
实际串口控件可以使BOOT0长时间为'1',所以本电路理论上是可行的~~~
故再次自贺倒塌成功!!!!!!!!
|
|
用户377235 2013-1-3 20:57
用户1133846 2008-6-28 17:27