本帖最后由 Simon21ic 于 2010-2-20 02:16 编辑
虽然我有2个ST-Link,但是,我自己并不用这个调试工具。
这里所有说的,只是技术上的探讨。
以前曾今在偶的blog里提出过ST-Link硬件上的一些问题,包括:
1. 有对外供电能力,而没有保护能力,建议加上自恢复保险丝和低压差二极管
2. USB接口没有保护器件,这个还好,很多其他的也都没有
3. 对外的接口没有使用5V兼容的接口,这个问题也不大,当然使用的话,更好
最近又有客户提出了STM8L支持的问题,所以特意研究了一下ST-Link的SWIM的相关硬件。
ST-Link使用了一个电压转换芯片,用于SWIM的输入部分。这个芯片自己并不陌生,因为在Versaloon-Pro版本中,自己也使用过类似的芯片。
我想这个芯片有2个作用,一个是输入和输出的隔离,另一个是电平转换。STM8L的供电电压可以到1.65V(1.8V-10%,也就是可以用+-10%的1.8V电源芯片来安全供电),而一般STM32的Vih为0.7*Vdd=0.7*3.3V=2.3V,所以不能满足这个电压门限。这样就势必需要电平转换了,当然,仅用于STM8L输出/STM32输入的时候。
那么这个芯片是否一定需要呢?
SWIM接口实际上是OD结构的,只有低电平有驱动能力。而又由于对速度的要求,使得SWIM接口需要一定的sink电流能力,文档上说是8mA,这个就意味着SWIM接口输出低电平的时候,具有驱动能力,这样理论上违法完美实现短路保护。ST-Link的SWIM接口如果接在VDD上的话,在硬件上至少是不具备保护能力的。所以这个保护可以不考虑。那么,正常使用中,由于只有低电平有驱动能力,所以就不存在racing保护的问题。所以可以直接把SWIM的输入和输出端接。
至于STM8L的电压问题,可以这么解决,对于STM8S,由于没有超低电压,并且基本符合STM32的3.3V电平,所以可以仍旧将SWIM上拉到目标板电压。对于STM8L,则将SWIM上拉到编程调试器的3.3V上(实际加上保护后,为3.1V左右,PMOS+二极管)。STM8L101的IO电压的最大值的最小可能是4.6V(STM8L15为4.0V),Vdd范围是1.65-3.6V,Vih为0.7*Vdd ---- Vdd+0.3V,如果使用3.3V+1K上拉的话,在目标板电压为1.65V的情况下,最大会有(3.3*1.02-0.2-1.95)/1K的电流灌到目标电源上,这个对目标电压的提升影响非常有限,相信现在的芯片还不至于脆弱到受不起这1mA的电流。
目前一切只是推论,实际还需要等到芯片来测试。 |