在LPC2000系列ARM微控制器中,如何正确设置外部存储器控制器(EMC)以扩展存储容量?
时间: 2024-11-27 22:07:46 浏览: 31
要在LPC2000系列ARM微控制器中使用外部存储器控制器(EMC)扩展存储容量,首先要理解EMC的工作机制及其与系统总线的交互方式。EMC使得微控制器能够与外部存储器,如SDRAM、SRAM等进行数据交换。在进行硬件连接后,需要在软件层面进行配置。
参考资源链接:[LPC2000系列ARM微控制器硬件结构详解](https://wenku.csdn.net/doc/6y6j26nyyv?spm=1055.2569.3001.10343)
具体配置步骤如下:
1. 初始化EMC相关引脚,确保它们被正确配置为外部存储器功能。
2. 设置时钟控制寄存器,配置EMC时钟源和频率,以匹配外部存储器的时序要求。
3. 配置控制寄存器,确定存储器类型(如SDRAM、SRAM等),并设置行地址、列地址的大小,以及存储器的访问宽度等参数。
4. 根据外部存储器的数据手册,配置读写时序寄存器,包括行激活到列地址的延迟时间、行预充电时间等。
5. 启用外部存储器,完成EMC的初始化,之后便可以如同操作内部存储器一样,进行读写操作。
例如,假设我们要初始化一个8位宽的SRAM,可以按照以下伪代码进行配置(实际代码需要参考《LPC2000系列ARM微控制器硬件结构详解》中对应的具体寄存器设置细节):
```
// 假设已经配置好时钟和引脚复用
LPC_EMC->EMCControl = EMC_BLS_WIDTH_8bits | EMC_OE_WIDTH_8bits | EMC_WE_WIDTH_8bits | ...;
LPC_EMC->EMCDynamicReadConfig = ...; // 根据需要配置动态读取时序
LPC_EMC->EMCDynamicWriteConfig = ...; // 根据需要配置动态写入时序
LPC_EMC->EMCStaticConfig = EMC_CKEOUT_HIGH | EMC_CKEOUT_NONE | EMC_RAS_WIDTH_3clk | EMC_CAS_WIDTH_2clk | ...;
// 启用EMC
LPC_EMC->EMCEnable = 0x01;
```
通过以上步骤,即可将LPC2000系列ARM微控制器与外部存储器相连接,并进行正确的配置和使用。了解EMC的详细配置和操作,可以帮助你在项目中更加有效地利用外部存储资源,提升系统性能。为了深入学习LPC2000系列的硬件结构以及如何进行高级配置,推荐阅读《LPC2000系列ARM微控制器硬件结构详解》。这本书不仅详细讲解了EMC的使用,还包括了其他外设和系统控制模块的全面介绍,是进行LPC2000系列微控制器开发不可或缺的参考资料。
参考资源链接:[LPC2000系列ARM微控制器硬件结构详解](https://wenku.csdn.net/doc/6y6j26nyyv?spm=1055.2569.3001.10343)
阅读全文