Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

MengFanjun的博客

问题

最近一直在做一个项目,发现STM32的定时器不太够。 正好我们上课在学STM32F103RCT6,就想利用两个芯片做项目。 那么问题来了:怎么用一个上位机给两个单片机下载程序和通信呢?

解决方案

结果学长设计了一个电路: 在这里插入图片描述

感觉其中的OE很有玄机,于是去查了查这个芯片的芯片手册,看到了这句话 在这里插入图片描述 上面的意思大概就是:如果将OE置为低电平,那么芯片的其他脚将变成高阻态。

再看看上面的电路 请添加图片描述 如果UART CS为高,那么就是给单片机B下载 如果UART CS为低,那么就是给单片机A下载

但只有这个还不够,STM32还有BOOT电路,BOOT电路在这里就不详细说了。

关于这一点,我们是这么设计的电路: 在这里插入图片描述 通过ISP A和ISP B来对单片机A和单片机B的BOOT电路进行控制,但由于这是一个MOS管的开漏电路,如果给ISP A为1那么输出会变成0,需要注意这一点。如果ISP A和ISP B设置的不对的话,程序可以下载进去,但是就是没有反应。 于是,我们得到了这个表 请添加图片描述 后来进行了测试 请添加图片描述 成功出现了B的数据! 这时为ISP A和ISP B都为高,再将UART CS置低,就会出现A的串口输出,不需要将串口关闭。 这样就实现了上位机一对二对单片机进行下载与串口接收。

总结

之前在打第一版板子之前老师和我们说,这个方法太笨了,不如用CAN,但是我们还是想试一下,结果居然成功了,之前BOOT电路那里一直忘了改,导致一直出现各种奇怪的问题。 芯片其实就是个电平转换芯片,没想到居然还能有这样的作用,不得不说还是学长更聪明啊。

评论