反复探索STM32F0单片机之精髓通过工控DCS技术深入理解SPI HAL库的W25Q128读写奥秘
W25Q128:一个高性能的SPI接口Flash存储器
当我们面临大量数据需要在断电后保持时,256个字节的EEPROM就显得不足。这个时候,我们转向更大容量、更高速度的存储解决方案,比如W25Q128,它拥有128M-bit(16M字节)的存储空间和66MB/s的读写速度。虽然STM32F030仅支持标准SPI模式,因此实际速度会有所降低。但是,这颗芯片提供了133MHz SPI Clock,10万次擦写寿命以及20年的数据保持时间。此外,每颗W25Q128都具有64位唯一序列号Unique ID,并且可以一次性写入1到256字节数据,但前提是先对目的地址所在扇区进行擦除操作。
连接W25Q128到STM32F030
为了连接W25Q128与STM32F030,我们需要通过以下方式将其相连:
W25Q128 STM32F030
Pin 1 /CS PA4 (也可以用GPIO引脚)
Pin 2 DO PA6 (SPI1_MISO)
Pin 3 /WP VCC
Pin 4 GND GND
Pin 5 DI PA7 (SPI1_MOSI)
Pin 6 CLK PA5 (SPI1_SCK)
Pin 7 /HOLD or /RESET VCC
Pin 8 VCC VCC
驱动代码开发
为了提高效率并避免重复造轮子,我们可以从GitHub上获取开源驱动代码。在本例中,我们使用nimaltd提供的w25qxx库,该库采用GNU General Public License v3.0许可证。首先,将解压后的文件夹“w25qxx-master”放置于“DriversBSPComponents”目录下,然后在Keil IDE中打开名为“SPI_FullDuplex_ComPolling”的项目,并按照以下步骤进行:
Step 1: 下载并配置w25qxx-master文件夹。
Step 2: 在项目窗口右键点击“STM32F030R8-Nucleo”,选择添加组,然后创建一个新的组并命名为“DriversBSPComponents/w25qxx-master”。
这样一来,你便能够利用现成的驱动代码实现W25Q128设备上的读写功能,同时也能充分发挥STM32CubeMX工具提供的一系列优势,包括自动配置硬件,以及生成完整且优化过的HAL层代码。