单片机写完代码编译生成hex或者bin文件后,下一步就是烧录到芯片里。这个过程看似简单,其实里面的门道不少。不同的单片机有不同的烧录方式,不同的应用场景也有不同的选择。今天把常用的几种烧录方式整理一下,方便大家选型参考。
最传统的方式是把芯片插在编程器里烧录,然后再焊到板子上——这叫离线烧录。这种方式的好处是烧录稳定、不受目标板电路影响,缺点是麻烦,尤其是贴片芯片,拆下来烧录再焊回去很容易搞坏板子。现在除了批量生产中需要统一烧录的情况,研发阶段基本很少用离线烧录了。
现在最常用的是在线烧录(ISP,In-System Programming)。芯片焊在板子上不用拆,通过专用的烧录接口就能把程序写进去。STM32的SWD接口、AVR的ISP接口、51单片机的串口下载,都属于ISP。这种方式的核心是芯片内部有一段出厂就固化好的bootloader程序,收到烧录指令后接管控制权,把新程序写到Flash里。
还有一种更方便的方式是IAP(In-Application Programming),也就是应用中编程。程序运行的时候自己能更新自己,比如STM32的双Bank机制,运行Bank0的同时可以把新程序写到Bank1,写完后切换重启。这种方式特别适合需要远程升级的产品,比如智能硬件、工业设备,用户在家就能通过WiFi或者串口更新固件。
不同的烧录方式有不同的接口协议。JTAG是比较老的协议,接口多(至少4根线),速度中等。SWD是ARM Cortex-M系列常用的,只要2根线(SWDIO和SWCLK),速度跟JTAG差不多甚至更快,现在基本取代了JTAG。串口烧录(UART)最简单,只要TX和RX两根线,很多低端单片机都支持,但速度慢,适合小容量程序。
烧录工具方面,ST-Link是STM32的标配,又便宜又好用,十几块钱一个。J-Link支持的芯片种类多,ARM、AVR、PIC都能烧,价格稍贵。还有不少国产烧录器,比如昂科、希能科,针对特定系列的单片机做了优化,性价比不错。开源的也有,比如Bus Pirate,可以当万用烧录器用。
实际工程中烧录失败是常见问题。先检查连线对不对,特别是GND有没有共地,烧录器的供电电压跟目标板是不是匹配。再看芯片是不是需要先解锁,有些单片机出厂是加密状态,需要先擦除再烧录。还有时序问题,有些芯片烧录时需要复位一下,按住复位键再点下载成功率会高很多。
下一篇:没有了