对于每个参数,单击 ? 可了解相关说明。
有关图 4-2 的说明:
- 闪存器件:如果闪存不是 TI EVM 上的默认闪存之一,请选择定制闪存。
- 闪存名称:写入正在使用的闪存的名称,例如 W25Q512JV。
- 协议:从列出的协议中选择闪存也支持的协议之一。这将分别配置要用于命令、地址和数据的行数。它还指定数据速率,即 DDR(双倍数据速率)或 SDR(单倍数据速率)。例如,4S-4D-4D 表示 4 行分别用于命令、地址和数据。对于命令,数据在上升沿/下降沿锁存,但对于地址和数据,数据在上升沿和下降沿均锁存。
有关图 4-3 的说明:
- 闪存 JEDEC 制造 ID:特定制造商的此值相同。
- 闪存 JEDEC 器件 ID:该值因同一制造商的闪存型号而异。例如,Winbond 闪存对于分别在 1.8V 和 3.6V 电压下运行的闪存,具有不同的器件 ID。还有其他一些参数具有不同的闪存器件,这些参数可在闪存数据表中找到。
- 虚拟时钟 (CMD) 和虚拟时钟(读取):虚拟时钟用于同步闪存读取。也可以从闪存数据表中获取这些值。注意指定为虚拟周期/虚拟时钟的部分。请注意,该字段指定在 OSPI 控制器端设置的值。要在闪存结束时设置虚拟周期/时钟值,需要对闪存配置寄存器进行写入。请参阅虚拟周期配置字段。
- 四路使能类型:一些 QSPI 闪存具有 QE(四路使能)位。对于 1S-1S-4S、4S-4S-4S 和 4S-4D-4D 等协议,需要启用该位。
- QPI 序列和 OPI 序列:要分别启用 4-4-4 模式和 8-8-8 模式,请使用这些字段。
- 有关闪存的块大小和扇区大小,请参阅闪存数据表。可从诊断日志中获取相同的命令,但最好从数据表中进行验证。
- SysConfig 允许用户设置扇区大小和块大小,如果闪存支持不同的扇区/块大小,用户可以根据应用指定特定的扇区/块大小。
- (3B) 和 (4B) 是指闪存的 3 字节和 4 字节寻址模式。这基本上指定了必须发送多少个地址字节。对于小于 16MB 的闪存,只需 3 个字节寻址即可满足整个闪存区域的需求。
有关图 4-4 的说明:
- 协议配置:协议通常指定用于命令、地址和数据的行数。为了使闪存以特定协议运行,该部分需要被填满。
- 虚拟周期配置:为了使闪存以特定协议运行,闪存配置寄存器需要配置虚拟周期。这是闪存侧设置,OSPI 控制器的设置在虚拟时钟(读取)字段下定义。
- STR/DTR 配置:可以设置此位以使闪存在 SDR/DDR 模式下运行。
有关图 4-5 的说明:
让我们仔细了解这一点。假设配置寄存器的值为 10
111101b。如果位[5:2] 需要更新为 1001b,则数据移位位、数据二进制掩码和要写入的数据中的值将分别为 2、0x3C 和 9。使用逻辑 (value & ~(Data Binary Mask)) 对原始值 10
111101b 执行掩码操作。这样会得到值 10
000001b。现在,将按 (value | (Data To Be Written << Data Shift Bits)) 执行移位操作。最终值变为 10
100101b,因此会写入配置寄存器。
有关图 4-6 的说明:
字段一目了然。可以参考闪存数据表来设置正确的值。
有关图 4-7 的说明:
可以在闪存数据表中找到所有这些值。请参阅“闪存数据表”中的“读取器件 ID/读取制造 ID 事务表”。
有关图 4-8 的说明:
- WIP 位和 WEL 位:这些位指的是闪存状态寄存器中的“正在写入”和“写入使能锁存”位。
- 四字节寻址:如前所述,如果闪存大小大于 16MB,则需要执行此操作,并且闪存支持用于 (4B) 寻址的特定命令。
- 命令扩展类型:假设要发送的命令为 0x9F。因此,在以下情况下:
- NONE:发送 0x9F。
- REPEAT:发送 0x9F, 0x9F。
- INVERSE:发送 0x9F, 0x60(0x9F 的反码)。
- Quirks 函数用于定义自定义 API,该 API 会对闪存的配置寄存器进行其他更改。目前,它定义为 Flash_quirkSpansionUNHYSADisable。此函数基本上会在 TI EVM 上禁用 flash(S28HS512T) 的混合模式。