雅特力的AT32,部分型号比如AT32F403/403A/413/407等,支持SPIM功能,最大支持16MB地址空间,起始地址0x08400000,占据bank3。它的作用就是把外部SPI FLASH映射到MCU的地址空间中,大大简化SPI FLASH的访问速度和便捷性。比较可惜的是SPIM接口只支持SPI FLASH,不支持PSRAM。
SPIM接口使用的管脚如下,注意这些管脚并不是某个特定的SPI接口,是专有的。幸运的是这些管脚都在PA和PB端口,小到QFN-32的AT32F413都能用。
NSS:PA8
SCK:PB1
IO0:PA11,可以映射到PB10
IO1:PA12,可以映射到PB11
IO2:PB7
IO3:PB6
其它注意事项:
只允许32位操作
使能GPIOA和GPIOB的时钟
AFIO_MAP2使能SPIM
设置FLASH_SELECT选择FLASH类型
使用KEY解锁SPIM,然后检查是否解锁成功
加密密钥地址0x1FFFF820-0x1FFFF82F,共16个字节,128位,全部为0xFF表示不加密。FLASH_DA为加密分界区,0x08400000到0x08400000+FLASH_DA为加密区,剩下的为明文区。SPIM运行频率为 AHB的一半,200M主频,SCLK就是100M了,配合4线SPI,理论速度有50MB/s,也非常快了。
参考文档:AN0042_AT32_SPIM_Application_Note_ZH.pdf
SPIM不支持PSRAM的遗憾在AT32F435得到了解决。AT32F435上升级到双QSPI,支持地址映射,可以连接SPI FLASH和PSRAM。
QSPI1的管脚分配:
QSPI1_IO3:PA1,PB3,PC5,PD13,PF6,PG14
QSPI1_IO2:PA15,PE2,PC4,PC8,PF7,PG9
QSPI1_IO1:PA7,PB10,PF9,PH3
QSPI1_IO0:PA6,PB0,PB11,PC9,PF8,PH2
QSPI1_SCK:PB1,PB2,PD3,PF10
QSPI1_CS:PB6,PB9,PB10,PC11,PG6
QSPI2的管脚分配:
QSPI2_IO3:PA3,PE10,PG11
QSPI2_IO2:PA5,PE9,PG10
QSPI2_IO1:PB7,PC3,PE8,PG12
QSPI2_IO0:PB0,PE7
QSPI2_SCK:PB1,PG13
QSPI2_CS:PB8,PG8
从管脚分配来看,由于PA和PB都影射了两个QSPI的管脚,因此LQFP-48这样的小封装也能使用QSPI接口。两个QSPI接口,一个外扩SPI FLASH,一个外扩PSRAM,从此MCU上存储空间不再是事儿。
|