本帖最后由 小恩GG 于 2021-5-26 23:56 编辑
LPC540xx:聊聊SPIFI工作时钟 LPC540XX全系列芯片为Flashless,只有LPC54018JXM与LPC54S018JXM内部集成了QSPI Flash,典型型号为LPC54018J2M与LPC54S018J4M。有些客户在使用此系列芯片时,对SPIFI接口概念与时钟配置有些许疑问,而手册上对这一部分的描述相对比较分散,故本文针对客户比较集中的疑惑进行一个简要的说明。 1. SPIFI简介 SPIFI(SPI Flash Interface)为SPI Flash接口,MCU通过SPIFI接口连接小尺寸、低成本的串行Flash,替代大尺寸、高成本的并行Flash。利用SPIFI技术,外部串行Flash可以映射到微控制器内存中,达到片上内存读取效果,即可以在保证运行速率的情况下优化成本并增大Flash大小。 SPIFI的电气接口如下图所示: LPC540XX系列芯片中,LPC54018JXM的QSPIFlash已集成在芯片内部,芯片型号末位不带M的芯片,需要用户外挂QSPI Flash。下图为LPC54S018JXM与LPC54S018在SPIFI结构上的对比,区别一目了然:
2. SPIFI时钟频率说明 以LPC54S018J4M为例,如下两图为用户手册中对SPIFI时钟频率的说明。SPIFI支持1/2/4bit传输,传输一个字节需要两个clock。这样在4bit传输模式下,可以达到最大传输速率每秒SPIFI_CLK/2 bytes,即52MBytes/s。即 SPIFI_CLK/2 = 52MBytes/s 从而得到此时的最大SPIFI_CLK 104MHz。
如下为LPC54S018J4M Datasheet中SPIFI时钟源选择,默认情况下SPIFI时钟源为FRO96。举个例子,当SPIFI clock配置96M时,在默认的4bit传输模式下,传输速度为96/2=48Mbyte/s。 LPC54S018J4M使用了W25Q32JV-DTR作为内部SPIFI Flash,下图为其支持的最高时钟频率。在4bit模式下,工作频率最高为133MHz,大于SPIFI最高频率104Mbyte/s。这说明W25Q32JV自身的性能完全满足LPC54S018J4M QSPI Flash接口对于通讯速率的要求。 3.更改SPIFI时钟频率 以下介绍常用到的修改SPIFI时钟的两种方式。
3.1 通过IMG_BAUDRATE修改SPIFI clock 下图所示为用户手册中对SPIFI时钟频率的说明。在setup_lpc54s018m.c中,偏移量为0X1C的地址上定义的是SPIFI工作频率(宏定义为IMG_BAUDRATE),初始值为0。根据下表,当IMG_BAUDRATE=0时,SPIFI的工作时钟频率为24M。我们可以通过修改IMG_BAUDRATE的值来调整SPIFI的时钟。 main函数运行前BOOT ROM获取到IMG_BAUDRATE来设定SPIFI时钟频率。如果对SPIFI时钟速率的要求小于等于96M,建议直接更改setup_lpc54s018m.c中IMG_BAUDRATE的宏定义来更改SPIFI时钟,下图将IMG_BAUDRATE从默认的0改为96000000,将SPIFI时钟从24M调整到96M:
3.2 通过system config修改SPIFI clock 另外一种方法是在用户代码中直接设置SPIFI的分频系数来修改SPIFI的工作时钟,如下: Debug结果如下所示,SPIFI的时钟频率被设置为96M: 如果想配置更高的SPIFI工作时钟,如104M,就要使用频率更高的外部时钟源,调整PLL系数及SPIFI分频系数,以达到所需时钟频率。
|