传感器的毕业设计(6)

2019-08-30 19:32

中北大学2009届毕业设计说明书

4 系统软件设计

4.1 软件总体设计

程序的控制思想:系统运行后初始化系统变量、初始化串行口和中断源、启动键盘扫描子程序,设计程序将完成Data Flash中存储的数据通过串行口发送到PC机;并完成单次数据采集并存储到Data Flash中;以及删除Data Flash中原有数据,等待下次存储[15]。 4.2 子程序设计

24CXX存储器可以通过ISP/IAP技术对其内部Data Flash进行擦除、读取和写入操作。

4.2.1 24CXX存储器Data Flash的字节读

24CXX存储器Data Flash进行字节读的过程如图4.1

地址赋值 写入读命令 打开ISP,IAP功能 触发ISP_IAP 关闭ISP,IAP功能 返回读取到的数据

图4.1 Data Flash字节读流程

第 26 页 共 38 页

中北大学2009届毕业设计说明书

如果24CXX存储器读取成功,将会返回读取到的数据,否则无返回。 程序如下:

/* ================ 公用的触发代码 ==================== */ void ISPgoon(void) { }

/* ==================== 字节读 ======================== */ uchar byte_read(uint byte_addr) { }

4.2.2 24CXX存储器Data Flash的字节写

24CXX存储器Data Flash的字节写操作流程如图4.2所示。写入正确则返回OK以示成功写入,写入错误则返回ERROR表示写入失败[16]。

ISP_ADDRH = (uchar)(byte_addr >> 8); /* 地址赋值 ISP_ADDRL = (uchar)(byte_addr & 0x00ff); ISP_CMD = ISP_CMD ISP_CMD = ISP_CMD ISPgoon();

& 0xf8;

/* 清除低3位 */

*/

ISP_IAP_enable(); ISP_TRIG = 0x46; ISP_TRIG = 0xb9; _nop_();

/* 打开 ISP,IAP 功能 */ /* 触发ISP_IAP命令字节1 */ /* 触发ISP_IAP命令字节2 */

| ReadCommand; /* 写入读命令 */

/* 触发执行

*/

*/

ISP_IAP_disable(); return (ISP_DATA);

/* 关闭ISP,IAP功能 /* 返回读到的数据 */

第 27 页 共 38 页

中北大学2009届毕业设计说明书

打开ISP,IAP功能 地址赋值 取数据 写入读命令 读取数据 比较对错 返回ERROR 返回OK 图4.2 Data Flash的字节写操作流程

程序如下:

/* ===================== 字节写 ===================== */ uchar byte_write(uint addr, uchar wdata) { ISP_IAP_enable();

/* 打开IAP功能

*/

ISP_ADDRH = (uchar)(addr >> 8); ISP_ADDRL = (uchar)(addr & 0x00ff); ISP_DATA = wdata;

/* 取数据 */ ISP_CMD = ISP_CMD & 0xf8;

/* 清低3位

*/

ISP_CMD = ISP_CMD | PrgCommand; /* 写命令2 */

ISP_TRIG = 0x46;

/* 触发ISP_IAP命令字节1 */

第 28 页 共 38 页

中北大学2009届毕业设计说明书

}

4.2.3 24CXX存储器Data Flash的扇区擦除操作

Data Flash的扇区擦除操作的流程如图 4.3所示 ,擦除扇区时必需一次擦除一个扇区,不能跨扇区擦除,所以每次调用扇区擦除子程序时输入的地址都为每个扇区的首地址。所以在启动单次采集前要进行手动擦除扇区[17]。

ISP_TRIG = 0xb9; _nop_(); /* 读回来 */ ISP_DATA = 0x00;

ISP_CMD = ISP_CMD & 0xf8;

/* 清低3位

*/ */

/* 触发ISP_IAP命令字节2 */

ISP_CMD = ISP_CMD | ReadCommand;/* 读命令1 ISP_TRIG = 0x46; ISP_TRIG = 0xb9; _nop_(); /* 比较对错 */ if(ISP_DATA != wdata) { }

ISP_IAP_disable(); return Error;

/* 触发ISP_IAP命令字节1 */ /* 触发ISP_IAP命令字节2 */

ISP_IAP_disable(); return Ok;

第 29 页 共 38 页

中北大学2009届毕业设计说明书

打开ISP,IAP功能 地址赋值 写入读命令 触发执行 关闭ISP,IAP功能

图4.3 Data Flash的扇区擦除操作流程

程序如下:

/* ================== 扇区擦除 ======================== */ void sector_erase(uint sector_addr) { }

4.2.4 ADS774的A/D采集流程

第 30 页 共 38 页

uint iSectorAddr;

iSectorAddr = (sector_addr & 0xfe00); /* 取扇区地址 */ ISP_ADDRH = (uchar)(iSectorAddr >> 8); ISP_ADDRL = 0x00;

ISP_CMD = ISP_CMD & 0xf8;

/* 清空低3位 */

/* 擦除命令3 */

*/ */

ISP_CMD = ISP_CMD | EraseCommand; ISPgoon();

/* 触发执行

ISP_IAP_disable(); /* 关闭ISP,IAP功能


传感器的毕业设计(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:养护规范及标准

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: