玩过Arduino的同学们可能听说过Arduino as ISP,也就是说,用Arduino来当做编程器,给另外一个AVR MCU或者Arduino来编程。这里面使用了两种协议,一种是基于UART串口的STK500v1协议,一种是基于SPI的ISP协议。协议的具体内容可以参考文章底部的参考资料。
我根据这两种协议,独创了一个低成本的编程器:使用CH340作为USB-UART转换器,使用STM8S103F3作为STK500v1协议和SPI ISP协议的处理器。
之所以这样做,是因为CH340只要一块多钱,STM8S103只要两块多钱,总体比USBasp还便宜呢!
我将ArduinoISP的源码移植到了STM8平台,移植过程非常顺利,C语言的可移植性真的是非常好。
我对下载速度进行了优化调整,将串口的速度定在115200bps,将SPI速度定在了1MHz,这样下载程序的时候很快而且很稳定,优于之前做的USBasp和FabISP。
电路图:
PCB设计图:
程序源码需要整理,稍后会开源与GitHub。
参考资料:
https://www.arduino.cc/en/Tutorial/ArduinoISP
http://www.atmel.com/Images/doc2591.pdf
http://www.atmel.com/Images/Atmel-0943-In-System-Programming_ApplicationNote_AVR910.pdf