其他分享
首页 > 其他分享> > NXP RT1021应用笔记

NXP RT1021应用笔记

作者:互联网

1. FlexSPI driver API

1.1 API产生背景

​ i.MXRT系列都是Flashless(没有内置NVM)的芯片,所以BootROM必不可少。BootROM是个很特殊的东西,本质上它是一个完整的C代码写成的系统级App,这个系统级App专门用于从外部存储器中加载用户级App执行。简单地说,BootROM就是PC机里的BIOS。

​ BootROM代码是存放在专门的ROM区域的(前面讲i.MXRT系列没有内置NVM,其实不够准确,其实是有内部ROM空间的,只不过这个ROM区域用户无法下载程序使用,因此等效于没有NVM),ROM顾名思义Readonly,所以BootROM代码只能随着芯片一起Tapeout,代码无法更改(其实也有ROM patch机制,以后再介绍)。

​ ROM空间其实挺大的,从64KB到512KB不等,因芯片启动功能复杂程度而异。下图是i.MXRT1050系列的BootROM所占空间,ROM起始地址是0x200000(起始地址在i.MXRT上都一样),ROM大小为96KB(这是标准启动功能所要的代码长度。在i.MXRT1010上是64KB - 精简启动功能,在i.MXRT1170上是256KB - 复杂启动功能)。

img

​ BootROM代码其实并没有占满全部ROM空间,总有些剩余空间(因为工艺原因,ROM空间都是8/16KB倍数),这部分空间浪费了着实可惜。如果我们能把SDK里的一些常用模块驱动(比如WDOG)顺便放进去供用户调用,既充分利用ROM空间,也为用户节省Flash空间,岂不是一举两得。此外,BootROM功能代码中也有一些现成模块驱动(比如各种启动设备存储器驱动接口)可以一并导出,这便是API由来。

​ 这里是恩智浦官方工程师博客中关于此项的开发笔记:

其实i.MXRT1050,1020,1015系列ROM也提供了FlexSPI driver API

利用i.MXRT1xxx系列ROM提供的FlexSPI driver API可轻松IAP

1.2 支持ROM API型号

RT芯片型号是否支持ROM API是否全功能API
i.MXRT117x支持
i.MXRT1064支持
i.MXRT106x支持
i.MXRT105x未开放 -> 官宣开放N/A -> 仅少get_config()
i.MXRT1021未开放 -> 官宣开放N/A -> 少get_config()和erase_all()
i.MXRT1015未开放 -> 官宣开放N/A -> 少get_config()和erase_all()
i.MXRT1011支持否(没有program()和erase())

1.3 RT1021 FlexSPI驱动使用示例

// 找到API根结构体
#define g_bootloaderTree (*(bootloader_api_entry_t **)0x0020001c)
 
// 定义FlexSPI配置变量
flexspi_nor_config_t config;
uint32_t instance = 0;
 
// 需要初始化完整512bytes FlexSPI配置变量
config.memConfig.tag     = FLEXSPI_CFG_BLK_TAG
config.memConfig.version = FLEXSPI_CFG_BLK_VERSION
// ...
 
// 调用API中init()函数
g_bootloaderTree->flexSpiNorDriver->init(instance, &config);
// 调用API中erase()函数

2. IMX RT FlexSPI的DQS信号

​ DQS信号是数据采样信号,实际上就是“从器件”接收“主控器件”发送的SCK时钟信号后,返回给了“主控器件”,一般低速SPI通信使用SCK作为采样时钟即可,想要通信可靠,需要数据和SCK信号之间满足Setup和Hold时间的要求,如下图:

img

​ DQS信号就是源SCK信号经过“从器件” 的同步和线路上的延迟,与数据信号是基本同步的,因此“主控器件”使用DQS信号作为数据的采样信号,可以达到比较高的速度和采样正确率。

​ FlexSPI接口提供了三种DQS选项,参看前面一篇记录iMX RT FlexSPI 时序及驱动程序参数设置解析

  1. 第一种

​ 内部虚拟读探测和内部环回流(MCR0 [RXCLKSRC = = 0) (kFLEXSPI_ReadSampleClkLoopbackInternally)

  1. 第二种
  1. 第三种

标签:FlexSPI,NXP,DQS,笔记,RT1021,API,信号,BootROM,ROM
来源: https://blog.csdn.net/qq_39088943/article/details/116045996