Hello. I am trying to communicate with flash via quad spi. I initialized GPIO and QSPI according to referance manual and ST's documents but, it seems I am missing something. I can't write anything in QUADSPI_DR register, it just stay 0x00000000. Can anyone help me with this? The code I wrote :
Code:
void GPIO_init(){
int main()
{
SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOAEN);
SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOBEN);
SET_BIT(RCC->AHB3ENR, RCC_AHB3ENR_QSPIEN);
while ((RCC->AHB3ENR & RCC_AHB3ENR_QSPIEN) == 0)
{
}
GPIOA->MODER |= (0x0000A0A0);
GPIOA->MODER &= ~(0x00005050);
GPIOB->MODER |= (0x0000000A);
GPIOB->MODER &= ~(0x00000005);
GPIOB->AFR[0] |= (0XA << GPIO_AFRL_AFSEL0_Pos); //ALTERNATIF FONKSIYON
GPIOB->AFR[0] |= (0XA << GPIO_AFRL_AFSEL1_Pos);
GPIOA->AFR[0] |= (0XA << GPIO_AFRL_AFSEL2_Pos);
GPIOA->AFR[0] |= (0XA << GPIO_AFRL_AFSEL3_Pos);
GPIOA->AFR[0] |= (0XA << GPIO_AFRL_AFSEL6_Pos);
GPIOA->AFR[0] |= (0XA << GPIO_AFRL_AFSEL7_Pos);
}
void QSPI_init()
{
QUADSPI->CR &= ~(QUADSPI_CR_EN);
QUADSPI->CR |= (QUADSPI_CR_EN);
QUADSPI->CCR |= 0x0100759F;
QUADSPI->DLR = 0x00000003;
QUADSPI->ABR = 0x000000AA;
QUADSPI->CR = 0x00000000;
QUADSPI->DCR |= (0x1C << 16);
QUADSPI->CR |= (QUADSPI_CR_EN);
QUADSPI->AR = 0xFAAAAAAF;
//static uint8_t tx_buf[4];
//tx_buf[0] = 0xAA;
//QUADSPI->DR = (uint32_t)&tx_buf[0];
QUADSPI->DR = 0xAFFFFFFA;
}