- 1、本文档共23页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
PAGE1
PAGE1
存储器架构
在嵌入式系统设计中,存储器架构是一个至关重要的部分。LPC1114系列单片机采用了高效的存储器架构,旨在优化性能和功耗。本节将详细介绍LPC1114的存储器架构,包括其各类存储器的类型、大小、访问速度以及如何高效地使用这些存储器资源。
1.内部存储器
LPC1114系列单片机配备了多种内部存储器,包括闪存(FlashMemory)、静态随机存取存储器(SRAM)和寄存器(Registers)。
1.1闪存(FlashMemory)
闪存是LPC1114系列单片机的主要程序存储区域。LPC1114提供了32KB的闪存,用于存储用户程序和常量数据。闪存的特点是是非易失性的,即断电后数据不会丢失。
1.1.1闪存结构
闪存被分为多个块,每个块可以独立擦除。LPC1114的32KB闪存通常被分为128个256字节的块。这种结构使得程序更新和数据擦除更加灵活高效。
1.1.2闪存访问
闪存的访问速度相对较慢,但LPC1114通过使用内部缓存(Cache)来加速代码执行。缓存会预取和存储常用代码片段,从而减少闪存访问的频率,提高整体运行效率。
1.1.3闪存编程
闪存编程通常通过片上编程器(ISP)和在线编程(IAP)两种方式进行。ISP是通过UART接口进行编程,而IAP则是在运行过程中通过软件调用编程函数来更新闪存内容。
示例代码:在线编程(IAP)
#includeLPC11xx.h
//IAP命令代码
#defineIAP_CMD_PREPARE50
#defineIAP_CMD_ERASE51
#defineIAP_CMD_PROGRAM52
#defineIAP_CMD_READPART53
#defineIAP_CMD_READUID54
#defineIAP_CMD_COMPCODE55
//IAP函数指针
typedefvoid(*IAP)(uint32_tcommand,uint32_tparam1,uint32_tparam2,uint32_tparam3,uint32_tparam4,uint32_t*result);
//获取IAP函数指针
staticIAPiap_entry=(IAP)0x1FFF1FF1;
voidprepare_flash(uint32_tstart_address,uint32_tend_address){
uint32_tresult[5];
iap_entry(IAP_CMD_PREPARE,start_address,end_address,0,0,result);
if(result[0]!=0){
//准备失败
while(1);
}
}
voiderase_flash(uint32_tstart_address,uint32_tend_address){
uint32_tresult[5];
iap_entry(IAP_CMD_ERASE,start_address,end_address,0,0,result);
if(result[0]!=0){
//擦除失败
while(1);
}
}
voidprogram_flash(uint32_taddress,uint32_tdata){
uint32_tresult[5];
iap_entry(IAP_CMD_PROGRAM,address,data,0,0,result);
if(result[0]!=0){
//编程失败
while(1);
}
}
intmain(){
//准备闪存块
prepare_flash(00x000000FF);
//擦除闪存块
erase_flash(00x000000FF);
//编程闪存
program_flash(00;
//程序运行
while(1){
//主循环
}
}
1.2静态随
您可能关注的文档
- NXP 系列:LPC810 系列 (低功耗)_(15).固件开发流程.docx
- NXP 系列:LPC810 系列 (低功耗)_(16).调试技术与故障排除.docx
- NXP 系列:LPC810 系列 (低功耗)_(17).典型应用案例分析.docx
- NXP 系列:LPC810 系列 (低功耗)_(18).安全性与可靠性设计.docx
- NXP 系列:LPC810 系列 (低功耗)_(19).未来发展趋势与挑战.docx
- NXP 系列:LPC810 系列 (低功耗)all.docx
- NXP 系列:LPC1114 系列 (低功耗)_(1).LPC1114系列概述.docx
- NXP 系列:LPC1114 系列 (低功耗)_(2).低功耗特性与应用.docx
- NXP 系列:LPC1114 系列 (低功耗)_(3).硬件架构与外设.docx
- NXP 系列:LPC1114 系列 (低功耗)_(4).电源管理技术.docx
文档评论(0)