如何设计一个在线烧录方案?

如何设计一个在线烧录方案?

[导读]在线烧录,芯片先贴在PCB板上后,再对其进行烧录。由于在线烧写的灵活性(产品先生产出来后,可根据用户订单,临时烧录不同的固件)、易返工性(直接在板重新烧录),越来越多的工厂选择了在线烧录的方案。由于每款目标板

在线烧录,芯片先贴在PCB板上后,再对其进行烧录。由于在线烧写的灵活性(产品先生产出来后,可根据用户订单,临时烧录不同的固件)、易返工性(直接在板重新烧录),越来越多的工厂选择了在线烧录的方案。

由于每款目标板存在各种差异性,烧录环境参数不统一,导致烧录出现异常以及达不到需求效果。那么,如何设计一个更合理的在线烧录放案?以下罗列了几个注意事项。

1、选择合适的烧录通讯协议

一款芯片,可能同时支持几种烧录通信协议,基于每种协议的特点,根据需求,在目标板预留一个或多个烧录通讯协议接口。以LPC1517为例,可以支持SWD、UART烧录通讯协议。其中,SWD通信速率能达到6M以上,而UART模式只能支持115200 的波特率(相比之下,SWD速率大约是UART的52倍)。更快的通讯速度,将减少烧录时间,提高烧录生产效率,如果追求烧录速度,首选SWD。但当芯片加密后,芯片杜绝编程器通过SWD访问芯片,这时只能通过UART模式擦除解密。一般产品出产后,芯片都配置成加密模式,后续产品升级、维修需要重新烧录固件时,由于芯片已处于加密模式,故不能再用SWD模式烧录,只能采用UART模式。因此,应根据具体情况,预留对应的SWD或UART烧录接口。或者两种都预留,SWD模式接口用于量产烧录,UART用于维修、升级时单次烧录。


2、预留禁能看门狗的接口

为了避免芯片程序跑飞或进入死循环状态,目标板一般都会放置外部看门狗,有效保证整个系统稳定运行。但是,如果芯片正处于烧录状态,由于没有喂狗,看门狗将计数溢出并复位目标芯片,意外中断了当前的烧录工作。为了避免以上异常情况,目标板应预留禁能看门狗的接口。当芯片烧录的时候,通过一个跳线,禁能看门狗,杜绝烧录时芯片被看门狗复位。如图1所示,目标板预留了禁能看门狗接口。


图1 禁能看门狗接口

3、烧录接口是焊盘测试点还是接线座

图2为焊盘测试点和普通烧录接线座的对比。如果生产烧录量很大,为了提高烧录效率,可以配合夹具和自动机,进行自动化的烧录。夹具一般都是配合顶针一起使用的,故需要在目标板预留焊盘测试点,以便烧录信号线的顶针与目标板接触;而如果生产烧录量偏小,则可以人工手动拔插烧录接口。

 

图2 焊盘测试点和普通烧录接线座的对比

4、引出芯片复位管脚

有时候,出于节省PCB空间考虑,设计烧录接口时会省掉复位管脚,但这有可能导致烧录不稳定。烧录前,先复位芯片,可以给芯片烧录提供一个纯净的初始化环境,避免芯片已跑有代码时,影响后续的烧录。此外,烧录前先复位芯片,还可以避免上电瞬间烧录信号线电平的抖动,使得芯片误采集到握手信号,导致烧录通信握手失败。因此,为了保证烧录的稳定性,烧录接口需引出复位管脚。烧录器烧录芯片前,利用复位管脚先复位芯片,使芯片处于一个纯净的初始化状态,有效保证芯片烧录的稳定性和有效性。

 

图3 引出复位管脚

以上只是罗列了常见的几种情况,但由于在线烧写目标板的差异性,设计PCB板时应该根据具体的芯片,配合你选择的烧录器特性,设计一个合理的方案。

 

/**********************wdt fuction**********************************************************************/
#define  WDT_OPEN		1
#define IS_DEBUG	(0)//NOTE:1)在线debug程序,须先禁掉看门狗,否则超时复位重启;2)keil在线烧录,烧录期间未能及时喂狗则会复位重启,导致烧录失败
void wdt_init(void)
{
		uint8_t u8Lock;
	
		/************在线debug,禁掉看门狗***************/
		#if(IS_DEBUG)
		u8Lock = SYS_Unlock();
		WDT_Close();
		CLK_DisableModuleClock(WDT_MODULE);
		SYS_Lock(u8Lock);
		#endif
	
		
	
		#if(1 != IS_DEBUG)  //test wdt timeout reset function 
		u8Lock = SYS_Unlock();
		CLK_EnableXtalRC(CLK_PWRCTL_LXTEN_Msk);//使能无源晶振(无源晶振记得要使能啊,有源晶振则上电自动起振)
		CLK_EnableModuleClock(WDT_MODULE);
		//CLK->CLKSEL1 = (CLK->CLKSEL1 & ~(3<<0)) | (1<<0);//clk source 32k  ==
		CLK_SetModuleClock(WDT_MODULE, CLK_CLKSEL1_WDTSEL_LXT, MODULE_NoMsk);//32k  CLK_CLKSEL1_WDTSEL_HCLK_DIV2048
		SYS_Lock(u8Lock);
			
		WDT_RESET_COUNTER();
		WDT_CLEAR_RESET_FLAG();
	
		u8Lock = SYS_Unlock();
	/*
		WDT->CTL = (WDT->CTL & ~(7 << 8)) | (7 << 8);//8224 ms
    WDT->CTL |= 1 << 1;//enable rst
		WDT->CTL |= 1 << 7;//enable wdt
		*/
		WDT_Open(WDT_TIMEOUT_2POW18,TRUE);//8224 ms
		SYS_Lock(u8Lock);
		#endif
}

void wdt_clear(void)
{
		WDT_RESET_COUNTER();
		WDT_CLEAR_RESET_FLAG();
}

餐考:http://www.21ic.com/app/analog/201605/676150.htm?_t_t_t=0.20653475700134421

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值