HG25Q16M/TR
时间: 2023-11-11 09:03:17 浏览: 74
HG25Q16M/TR是一款SPI NOR Flash存储器,具有16Mbit的存储容量。它可以通过SPI接口与微控制器进行通信,用于存储程序代码和数据。以下是使用STM32的Cube库编写的W25Q16/W25X16驱动代码,可以用于控制HG25Q16M/TR:
```c
#include "main.h"
#include "spi.h"
#include "w25q16.h"
#define W25Q16_WRITE_ENABLE 0x06
#define W25Q16_WRITE_DISABLE 0x04
#define W25Q16_READ_STATUS_REG1 0x05
#define W25Q16_READ_STATUS_REG2 0x35
#define W25Q16_READ_STATUS_REG3 0x15
#define W25Q16_WRITE_STATUS_REG1 0x01
#define W25Q16_WRITE_STATUS_REG2 0x31
#define W25Q16_WRITE_STATUS_REG3 0x11
#define W25Q16_READ_DATA 0x03
#define W25Q16_FAST_READ 0x0B
#define W25Q16_FAST_READ_DUAL_OUTPUT 0x3B
#define W25Q16_PAGE_PROGRAM 0x02
#define W25Q16_BLOCK_ERASE_4K 0x20
#define W25Q16_BLOCK_ERASE_32K 0x52
#define W25Q16_BLOCK_ERASE_64K 0xD8
#define W25Q16_CHIP_ERASE 0xC7
#define W25Q16_POWER_DOWN 0xB9
#define W25Q16_RELEASE_POWER_DOWN 0xAB
#define W25Q16_DEVICE_ID 0xAB
#define W25Q16_MANUFACTURER_ID 0x90
#define W25Q16_JEDEC_ID 0x9F
void W25Q16_WriteEnable(void)
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);
uint8_t cmd = W25Q16_WRITE_ENABLE;
HAL_SPI_Transmit(&hspi1, &cmd, 1, 100);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET);
}
void W25Q16_WriteDisable(void)
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);
uint8_t cmd = W25Q16_WRITE_DISABLE;
HAL_SPI_Transmit(&hspi1, &cmd, 1, 100);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET);
}
uint8_t W25Q16_ReadStatusReg1(void)
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);
uint8_t cmd = W25Q16_READ_STATUS_REG1;
HAL_SPI_Transmit(&hspi1, &cmd, 1, 100);
uint8_t data;
HAL_SPI_Receive(&hspi1, &data, 1, 100);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET);
return data;
}
void W25Q16_WriteStatusReg1(uint8_t data)
{
W25Q16_WriteEnable();
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);
uint8_t cmd = W25Q16_WRITE_STATUS_REG1;
HAL_SPI_Transmit(&hspi1, &cmd, 1, 100);
HAL_SPI_Transmit(&hspi1, &data, 1, 100);
阅读全文