stm32 外接硬件看门狗与ISP功能冲突,大神们是如何解决这个问题的。
发布网友
发布时间:2022-04-30 18:47
我来回答
共4个回答
热心网友
时间:2023-10-09 14:03
将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',所以本电路理论上是可行的~~~
热心网友
时间:2023-10-09 14:03
不用说,肯定要禁止外接的看门狗啊!!不然你正在下载的时候突然复位了,那还怎么下载程序?弄个跳线断开RST信号什么的,下载的时候断开,下载完成好之后再接上。
热心网友
时间:2023-10-09 14:03
看你觉得哪个重要啦,如果你不用ISP功能,那就不用管,如果你用ISP功能,那你可以换一个型号的看门狗来试试,一般是软件冲突,换一个可能会好的。
热心网友
时间:2023-10-09 14:04
已然陈腐,
你难道带着新的阴谋而来,把一千种诡计献
婴儿是精子和卵子巧遇
一朵有人烟的云朵。我更向前倾,亲睹
望着直到看见地球各上反射的光辉。
你是过的幸福哈哈