问题
最近一直在做一个项目,发现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电路那里一直忘了改,导致一直出现各种奇怪的问题。 芯片其实就是个电平转换芯片,没想到居然还能有这样的作用,不得不说还是学长更聪明啊。