1831|2

13

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

【AG32VF407测评】SPI Flash读写测试 [复制链接]

 

AG32VF407 的SPI相对特殊一些,不是一般MCU通用的SPI控制器,只能实现SPI Master的功能,不支持SPI Slave,且SPI Master似乎也只支持驱动SPI Flash,所以在AG32VF407 RM中SPI控制器实际是叫Flash-SPI控制器

 

也许内部逻辑实现并不完善,如果是一般的MCU的SPI这个样子,大概率就是个残血版的SPI了,好在AG32是可以通过内部的FPGA定制SPI协议控制器的,后续楼主再探索一些这方面的应用,本贴将基于这个Flash-SPI控制器实现对Flash的读写操作。

 

1、工程配置

建立工程的步骤不再演示,可以参考【AG32VF407测评】开箱、环境搭建与点灯Demo,本贴用同样的方法新建一些SPI的Demo项目,在src目录下新建spi.c

 

在board.ve上配置引脚映射,同时加上串口和LED,方便调试

SYSCLK 248

HSECLK 8

SPI0_SCK            PIN_89
SPI0_SI_IO0         PIN_91
SPI0_SO_IO1         PIN_90

UART0_UARTRXD       PIN_69
UART0_UARTTXD       PIN_68

GPIO4_3             PIN_32 # LED1
GPIO4_4             PIN_31 # LED2

需要特别说明的是,一定要自己对着原理图映射引脚,而不是直接搬官方examples里面的,那里跟AG32VF407用的并不是同一个板子,引脚映射不完全一样

这里使用SPI0来控制,AG32VF407有两个SPI,分别为SPI0和SPI1,通过映射引脚的方式,都可以用来控制读写Flash

 

2、AG32VF407的Flash-SPI控制器

SPI这个协议是老熟人了,具体的协议规范啥的就不多讲了

 

AG32VF407的Flash-SPI控制器总共3组共17个寄存器,即1个控制寄存器CTRL,8个段控制寄存器PHASE_CTRL,8个段数据寄存器PHASE_DATA,这里的段可以理解为Flash-SPI控制器完成一轮完整的读写或配置等操作所需要的子操作,每一轮操作都支持细分为8个以下的段即PHASE,每个PHASE都可以配置为独立的子操作,例如读写数据,读取数据等

 

Flash-SPI控制器通过段的划分去支持兼容不同型号和时序要求的SPI Flash

寄存器的具体描述可以参考AG32 MCU Reference Manual202305.pdf中21.2.2 register description的内容,我们操作寄存器去读写Flash的一般流程参考文档如下

 

其中的SPCR即CTRL寄存器,文档和SDK中的描述稍微有些出入

 

3、AG32VF407的SPI Flash

首先是SPI Flash的原理图电路,采用的是SPI 1线的模式,顺带一提,AG32VF407的Flash-SPI控制器是支持1/2/4线模式的

 

SPI Flash芯片为W25Q16,这里面只需要配置SPI1_SCK/SPI1_MISO/SPI1_MOSI三个引脚即可,参照上面的ve配置代码

 

4、测试代码

这里使用官方examples中example_spi.c代码,作了小许修改,主要在设置读写模式的位置,由于Flash已经固定是Single模式,这里就直接设置为Single就好了

    const SPI_PhaseModeTypeDef FLASH_READ_MODE = SPI_PHASE_MODE_SINGLE;
    SPI_PhaseModeTypeDef FLASH_WRITE_MODE = FLASH_READ_MODE;

	SPI_FLASH_Erase(spi, FLASH_ADDR, FLASH_SIZE);
	SPI_FLASH_Read(spi, buf, FLASH_ADDR, FLASH_SIZE, FLASH_READ_MODE, spi_dmac_channel);

另外找到下面这一行,并注释掉,并不需要开发Qual 4线模式

SPI_FLASH_QuadEnable(spi);
完整的代码如下 spi.zip (3.05 KB, 下载次数: 10)

 

不过楼主在测试的时候并没有得到准确的结果,Flash 输出的都是fffff之类的值

 

个人判断可能在于原理图中SPI1_MISO跟TRST接到一起,而TRST被设置成上拉模式,查了以下资料,有说SPI_MISO上拉不拉都可以的,也有设置成下拉的,由于楼上身上暂时缺少测试仪器,暂时不能进行详细的测试,后续有进展再更正结果

   

最新回复

Flash已经固定是Single模式,只能设置这个模式了   详情 回复 发表于 2023-8-13 21:52
点赞 关注
 
 

回复
举报

1704

帖子

0

TA的资源

五彩晶圆(初级)

沙发
 

Flash已经固定是Single模式,只能设置这个模式了

 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(中级)

板凳
 

用示波器测量了SPI_SCK引脚,发现时钟根本就没起来,全程高电平,换了一个引脚才能正常输出时钟,看原理图,SPI的时钟跟TDO引脚接到一起了,同样也被上拉了,可能SPI_SCK的驱动力太弱了,拉不低电平

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表