|
用msp430f2132做了个模块,用于采集ds18b20数据,通信采用485模式,总线上接了100个模块,地址码存储在信息段的D段,经过测试发现,地址码会发生自动更改为默认的地址2,。
从一个返回维修的一个模块发现,在电源断开次数比较多时,会发生地址无故返回默认。
具体的协议如下:上位机发送更改地址命令,如果收到的地址正确,则将地址存储在信息段。在新上电的时候读取出来,如果读取出来的数据不正确,则恢复默认地址。
具体的写入程序如下,请懂行的大侠分析下,谢谢!
oid WriteFlash(unsigned char value)
{
char *Flash_ptr;//Flash pointer
Flash_ptr=(char *)0x1000;//Initialize Flash pointer C segment
FCTL3=FWKEY;//Clear Lock bit
FCTL1=FWKEY+ERASE;//+EEI;//Set Erase bit, allow interrupts
*Flash_ptr=0;//Dummy write to erase Flash seg
FCTL1=FWKEY+WRT;//Set WRT bit for write operation
*Flash_ptr++=value;
*Flash_ptr++=value;
*Flash_ptr++=value;
FCTL1=FWKEY;//Clear WRT bit
FCTL3=FWKEY+LOCK;//Set LOCK bit
} |
|