AT32F403A驱动复用PSRAM
实验目的:
最近使用AT32F403A做项目,需要外扩PSRAM用来存储程序运行中间数据,所以记录一下心路历程。开干!
实验步骤:
-
硬件选型
主控芯片:看题目就知道啦,就是雅特力科技的AT32F403A系列。注意的要使用AT32F403A系列的XMC驱动PSRAM必须选用100脚封装的芯片,小封装的芯片脚位不够哦。
PSRAM选择:选择的是Winbond的W957D6HB系列,此系列address线的低16bit和Data线是复用的,具体出pin可看下图:
2. 驱动代码准备
PSRAM这边没有初始化的步骤,在使用上电默认的异步模式时,只需将脚位正确与MCU的脚位接在一起即可。驱动程序也主要是MCU这边的配置了。
1) 配置MCU XMC外设
XMC是AT32F403A芯片的一个外设,主要用于驱动外部存储器;其实这个外设就是大家所熟知的某MCU厂商的FSMC啦,哈哈!
这里需要注意的几点是:1.PSRAM的总线宽度是16bit,所以XMC的数据总线宽度要配置为16bit;2.由于此颗PSRAM是复用的,所以XMC要配置为复用模式;3.其他细节就可以看附件的驱动程序了。
2) XMC脚位一览
XMC所使用到的pin脚可以看如下表格:
需要将表格中的PIN脚配置成AF_PP模式,那么在开启XMC的时钟后,这些PIN就被XMC驱动了。
3) 时序配置
现在就是时序配置了,具体时序需要对照PSRAM的Datasheet中的时序参数,这里就不啰嗦了,我用的这颗PSRAM的时序配置就在代码中了。
实验结果:
为了验证正确性,使用雅特力科技的BSP中相关例程稍作修改;先写数据到PSRAM某个地址,然后读出来对比。写入和读出的数据相符,实验成功!!!这里实验ok了就可以移植进项目中了。如果有兴趣的同学,可以将附件中的代码解压到雅特力官方BSP的下面路径即可编译下载哦: AT32F4xx_StdPeriph_Lib_V1.x.x\Project\AT_START_F403A\Examples\XMC
注意:驱动可参考如下路径中的附件:
https://bbs.21ic.com/icview-3067454-1-1.html