gd32f4 qspi配置
时间: 2024-12-14 13:10:40 浏览: 12
GD32F4系列单片机是一款基于ARM Cortex-M4内核的微控制器,它内置了QSPI(Quad-SPI Flash)模块,用于高速存储器的访问。QSPI配置通常涉及以下几个步骤:
1. **初始化外设**:
首先需要启用QSPI时钟,并通过GPIO配置相应的CS( Chip Select),SCK(Serial Clock),MISO(Master In Slave Out)和MOSI(Master Out Slave In)信号线。
```c
RCC_APB1PeriphClockCmd(RCC_APB1Periph_QSPI, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7; // CS pin(s)
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; // Push Pull Output
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
```
2. **设置QSPI模式**:
根据需求选择工作模式,例如全双工(Mode 0)或半双工(Mode 1)。这需要配置QSPI控制器的CR register(如QSPI_CR)。
```c
QSPI_Cmd(QSPI, DISABLE); // Disable first for configuration
QSPI_CfgMode(QSPI, QSPI_Modes_Dual); // Dual mode (Mode 0 or Mode 1)
QSPI_CfgDSM(QSPI, DISABLE); // If DSM (Data Shift Margin) is not required
```
3. **配置频率**:
设置时钟分频因子,确定SCK的速度。这可通过CR寄存器中的CFGR field来完成。
```c
QSPI_SetPrescaler(QSPI, QSPI_Prescaler_2); // Example: 2x prescaler
```
4. **连接Flash**:
如果连接的是外部SPI闪存,需指定它的容量、块大小等信息,并可能调整其他配置,如页大小、等待时间等。
```c
QSPI_InitTypeDef QSPI_InitStructure;
QSPI_InitStructure.QSPI_BusWidth = QSPI_BusWidth_DIO; // Data lines
QSPI_InitStructure.QSPI_DataAddressMux = QSPI_DataAddressMux_Disable; // No address/data multiplexing
QSPI_InitStructure.QSPI_ChipSelect = GPIO_Pin_6; // Use the configured CS pin
// ... configure more flash-specific parameters
QSPI_Init(QSPI, &QSPI_InitStructure);
```
5. **启动并操作Flash**:
完成以上设置后,可以开启QSPI功能并执行读写操作。
```c
QSPI_Cmd(QSPI, ENABLE);
uint8_t data[4] = {0x00, 0x01, 0x02, 0x03};
QSPI_Read(0x00, data, 4); // Read 4 bytes starting from address 0x00
```
阅读全文