本帖最后由 zsy-s 于 2024-12-5 21:59 编辑
spi 硬件资源
片上设计有两个flash
MX25L25645G ,256-Mbit(256M x 1/128M x 2/64M x 4) norflash。
MX25L51245GMI-08G,3V 512M-BIT norflash。
接口octalspi接口,也就是八线spi。
flash手册
芯片地址空间:
octalflash地址空间映射模式下地址映射情况
关于sopi和dopi的区别,是一个clk周期内读取数据的次数,dopi上升和下降沿,都是可以读写数据的。可以看下图
引脚功能配置
ospi flash配置
工具使用
编译和开发工具:e2 studio
烧录工具: jlink flash lite
日志查看工具: jlink rtt
spi 学习
本任务主要使用芯片的ospi 控制器。支持三种设备接口:标准spi接口(spi),单速率八线(sopi),双速率八线(dopi)。
代码
基于例程:ospi,测试512Mbit flash的读写性能。
opi支持三种读写模式:spi sopi,dopi。
本次验证dopi方式,使用的映射地址:0x70003000
准备 0-255数值的256数组
int inx = 0;
while(inx < 256){
write_data_t[inx] = (uint8_t)inx;
inx++;
}
写入数据
R_OSPI_Write(&g_ospi_ctrl, write_data_t, ospi_ref_addr, 256);
读出数据并比较
uint8_t read_data_t[256] ;
memcpy(read_data_t,ospi_ref_addr,256);
int pos = 0;
while(pos < 256){
APP_PRINT("-[%x]-",read_data_t[pos]);
pos++;
}
效果
写入的数据和读出的数据一致,验证可读可写。
结论
最初的spi协议比较简单容易理解。
随着性能提高,和业务复杂,现在的spi有点难深入理解啊