TI中文支持网
TI专业的中文技术问题搜集分享网站

G2553有个别片子会在写FLASH时写入错误的数值

这次用了一批MSP430G2553,据供应方说是从香港走私来的,6.5元/PCS,现使用的时候发现有少许芯片会在写入FLASH时写成错误的数值。

有没有可能是买到次品了?

检查了写FLASH的代码应该没什么错。

下面这个是设置时钟的代码

if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF) { WDTCTL=1; // If calibration constants erased
// do not load, trap CPU!!
}
P2SEL=BIT6+BIT7;
BCSCTL1 = CALBC1_8MHZ; // Set range
DCOCTL = CALDCO_8MHZ; // Set DCO step + modulation */
BCSCTL3|=LFXT1S_1+XCAP_1;

下面是写FLASH的代码:

void flash_A_save()//保存ID等信息
{
char *flash_ptr;//flash指针
flash_ptr=(char *)0x1000; // 指定指针位置
_DINT();
FCTL2=FWKEY + FSSEL0 +FN0;
FCTL1=FWKEY + ERASE;//允许擦除
FCTL3=FWKEY; //解锁
while(FCTL3&BUSY);
*flash_ptr=0; //任意写一数据,该段会全部擦除
FCTL1=FWKEY+WRT; //允许写入
while(FCTL3&BUSY);
*flash_ptr=1; //写入启动位,启动位为FF时表示第一次上电
*flash_ptr++;
*flash_ptr=ID[0];//保存ID
*flash_ptr++;
*flash_ptr=ID[1];
*flash_ptr++;
*flash_ptr=ID[2];
*flash_ptr++;
*flash_ptr=ID[3];
*flash_ptr++;
*flash_ptr=txpow;//保存发射功率
*flash_ptr++;
*flash_ptr=xindao;
*flash_ptr++;
*flash_ptr=WKQ_heat[0];
*flash_ptr++;
*flash_ptr=WKQ_heat[1];
*flash_ptr++;
*flash_ptr=WKQ_heat[2];
*flash_ptr++;
*flash_ptr=WKQ_heat[3];
*flash_ptr++;
*flash_ptr=qianzhi_fa;
*flash_ptr++;
*flash_ptr=chuchan;//出厂启用
FCTL1=FWKEY; FCTL3=FWKEY+LOCK;//锁定
_EINT();
}

void flash_A_load()//读取ID等信息
{
WDTCTL = WDTPW+ WDTHOLD;
_DINT();
char *flash_ptr;//flash指针
flash_ptr=(char *)0x1000; // 指定指针位置
if(*flash_ptr!=0x01)//如果第一个字节不等于1,表示还FLASH还未初始化,写入初始化数据。
{
flash_A_save();
}
*flash_ptr++;
ID[0]=*flash_ptr;
_NOP();
*flash_ptr++;
ID[1]=*flash_ptr;
_NOP();
*flash_ptr++;
ID[2]=*flash_ptr;
_NOP();
*flash_ptr++;
ID[3]=*flash_ptr;
_NOP();
*flash_ptr++;
txpow=*flash_ptr;//读取发射功率
if(txpow>7)
txpow=7;
*flash_ptr++;
xindao=*flash_ptr;
if(xindao>31)
xindao=0;
*flash_ptr++;
WKQ_heat[0]=*flash_ptr;
*flash_ptr++;
WKQ_heat[1]=*flash_ptr;
*flash_ptr++;
WKQ_heat[2]=*flash_ptr;
*flash_ptr++;
WKQ_heat[3]=*flash_ptr;
*flash_ptr++;
qianzhi_fa=*flash_ptr;
*flash_ptr++;
chuchan=*flash_ptr;
_EINT();
}

请大家帮忙看下代码有没有错误,如果没错应该是2553本身的问题了吧?现在就是有个别片子会在写FLASH的时候写成错误的数值,虽然丢弃个别芯片不要紧,但担心已经检验好的板子还会出现这种情况。

Lina Lian:

ddd ddd,

检查一下电源的纹波以及 写FLASH的时钟频率,这也可能是导致flash数据出错的因素。

赞(0)
未经允许不得转载:TI中文支持网 » G2553有个别片子会在写FLASH时写入错误的数值
分享到: 更多 (0)