为了提高芯片程序的可升级性、可维护性,许多系统设计师放弃了传统的座烧方式,转向了新颖的、更加灵活的在板编程方式,如汽车电子、电表系统、空调控制板等均采用在板编程。
图1 汽车电子
图2 电表
如何设计在线编程才能更快从工程阶段转向生产阶段呢?
首先,寻找芯片是否自带编程触发管脚。
我们来看一下芯片是如何进入编程模式的?芯片一般在复位后,会执行Boot程序,该程序通过检测芯片的编程管脚(如LPC系列芯片的ISP引脚、STM32的Boot0与Boot1引脚等)状态,进入不同的运行模式,如编程模式,正常执行模式等。该引脚可以通过编程接口提供给编程器控制,也可以通过短路帽或拨码开关等集成在电路板中,在芯片需要编程时再手动将其置高或置低,可以方便生产端进行硬件配置。
图3 编程短路帽
其次,芯片复位(Reset)对编程模式的影响。
进入编程模式一般有两种方式,第一种通过上电自动复位的方式进入编程模式,而第二种则通过外部控制RESET复位管脚复位进入编程模式。有些开发工程师为了简化芯片的编程接口,在设计中并没有引出RESET引脚,利用上电复位进入编程模式,此方法虽然简洁,节约资源,但也存在许多不稳定的因素,特别是板子电路比较复杂时,如电容、电感集合较多,上电瞬间会出现电源不稳定,从而导致在线编程握手失败。因此,接口设计时应尽可能引出芯片的RESET管脚,这样编程器可以等待上电稳定后再控制芯片进入编程模式,有效避免问题的产生,如致远电子P800在线编程器,可以设置上电的时间,可根据客户的现场情况进行调试,降低失败率。
图4P800电源设置
最后,电路硬件设计方面的注意事项。
在对P800的技术支持过程中,如果注意一下几点,你的在线编程的失败率会降低90%:
1、 当板子设计有硬件看门狗时,应将看门狗禁能引脚或“喂狗”引脚引出,防止芯片在编程时被复位;
2、 使用I2C接口编程时,为提高通讯的稳定性,接口的上拉电阻不宜过大;
3、 编程引脚需要注意不要连接过大的电容,如有必要则需要使用跳线帽或其他方式将编程功能和正常功能电路分开,某些需要提供编程高压的引脚要引出,可以使用跳线帽或其他方式将编程高压和正常功能电路分开;
4、 当编程接口使用排针时,VCC引脚不宜与GND引脚靠得太近,如图5所示,当烧录人员不慎将接口左错一个位,此时,编程器的VCC引脚直接接到芯片的GND引脚,芯片的RXD引脚接到编程器的GND引脚,结果将直接烧毁芯片的RXD引脚。为避免此类问题的产生,VCC与GND引脚应分别位于排针两侧。
图5 接口左错一位