《STM32从零开始学习历程》——SPI读取FLASH ID
发布日期:2021-05-10 01:33:09 浏览次数:21 分类:精选文章

本文共 3626 字,大约阅读时间需要 12 分钟。

STM32 SPI������FLASH ID

������������

���������������������STM32������SPI������������������������������FLASH���������ID���������������������������SPI������������������������������ FLASH ������������������������ID���

������������

���������������������������F4������������������������������������������

  • SPI1������������������FLASH������������
  • FLASH���������
  • USART1������������������������������

������������������������������������SPI���������������GPIO���������������

  • SCK���������������������PB3
  • MISO���������������/output������PB4
  • MOSI���������������������PB5
  • F_CS���Flash������������������PB14

������������������

  • ������������������

    • ������SPI1���������������RCC_APB2PeriphClockCmd(RCC_FLASH_SPI_CLK, ENABLE)
    • ������GPIO���������������������RCC_AHB1PeriphClockCmd(RCC_FLASH_SPI_SCK_GPIO_CLK | RCC_FLASH_SPI_MOSI_GPIO_CLK | RCC_FLASH_SPI_MISO_GPIO_CLK | RCC_FLASH_SPI_CS_GPIO_CLK, ENABLE)
  • ���������GPIO������

    • ������������������������������������������
      GPIO_PinAFConfig(FLASH_SPI_SCK_GPIO_PORT, FLASH_SPI_SCK_SOURCE, FLASH_SPI_SCK_AF);
      GPIO_PinAFConfig(FLASH_SPI_MOSI_GPIO_PORT, FLASH_SPI_MOSI_SOURCE, FLASH_SPI_MOSI_AF);
      GPIO_PinAFConfig(FLASH_SPI_MISO_GPIO_PORT, FLASH_SPI_MISO_SOURCE, FLASH_SPI_MISO_AF);
    • ���������������������������������������
      GPIO_InitTypeDef GPIO_InitStructure;
      GPIO_InitStructure.GPIO_Pin = FLASH_SPI_SCK_PIN;
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
      GPIO_Init(FLASH_SPI_SCK_GPIO_PORT, &GPIO_InitStructure);
  • ���������SPI������

    • ���������������������CPOL������������������
      SPI_InitTypeDef SPI_InitStructure;
      SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
      SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
      SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
      SPI_Init(FLASH_SPI, &SPI_InitStructure);
    • ������SPI���������
      SPI_Cmd(FLASH_SPI, ENABLE);
  • ������������������������

    • ���������������
      uint8_t SPI_FLASH_ByteWrite(uint8_t data) {
      // ���������������������Flash������������
      // ������������������������������
      // ������10���������������
      uint32_t SPITimeOut = 10 * SPIT_FLAG_TIMEOUT;
      while (SPI_I2S_GetFlagStatus(FLASH_SPI, SPI_I2S_FLAG_TXE) == RESET) {
      SPITimeOut--;
      if (SPITimeOut == 0) {
      // ������������
      return SPI_TIMEOUT_UserCallback(1);
      }
      }
      SPI_I2S_SendData(FLASH_SPI, data);
      // ������������������
      SPITimeOut = 10 * SPIT_FLAG_TIMEOUT;
      while (SPI_I2S_GetFlagStatus(FLASH_SPI, SPI_I2S_FLAG_RXNE) == RESET) {
      SPITimeOut--;
      if (SPITimeOut == 0) {
      // ������������
      return SPI_TIMEOUT_UserCallback(2);
      }
      }
      return SPI_I2S_ReceiveData(FLASH_SPI);
      }
    • ������ID���
      uint8_t SPI_FLASH_Read_ID(void) {
      // ������������
      FLASH_SPI_CS_LOW();
      // ������������������
      SPI_FLASH_ByteWrite(0xAB);
      SPI_FLASH_ByteWrite(0xFF);
      SPI_FLASH_ByteWrite(0xFF);
      SPI_FLASH_ByteWrite(0xFF);
      // ������������������
      uint8_t id = SPI_FLASH_ByteWrite(0xFF);
      FLASH_SPI_CS_HIGH();
      return id;
      }
  • ������������������

    • ������������������������
      SPI_FLASH_Init();
    • ������FLASH ID���
      int main(void) {
      // ���������������
      NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
      delay_init(168);
      uart_init(115200);
      LED_Init();
      SPI_FLASH_Init();
      printf("\r\n������ID: 0x%x\r\n", SPI_FLASH_Read_ID());
      while (1) {
      // ��� Carey stayed here looking for exit condition
      }
      }
  • ������������

    ���������������������������������������������������������������������������������������������������ID���������������������������

    ������ID: 0x17

    ���������������������������������������������Flash���������������������������

    上一篇:《STM32从零开始学习历程》——SPI读写FLASH
    下一篇:Linux中一些关于vim编辑器的问题

    发表评论

    最新留言

    初次前来,多多关照!
    [***.217.46.12]2025年04月19日 17时58分38秒