关于STM32读到M25P80数据全为255是什么情况?请求解答

2019-12-10 18:22发布

采用STM32F103系列芯片读写M25P80
能读到ID为202014,写完后读出数据全为255

使用STM32F103的SPI1
PB3————SPI1_SCK
PB4————SPI1_MISO
PB5————SPI1_MOSI
PD3————SPI1_NSS

以下为M25P80电路图

以下为与单片机引脚连接图


这里需要开启映射时钟和J-link的SW使能 否则PB3和PB4一个一直拉高

以下为配置代码

[code] void SPI_FLASH_Init(void)
{
  SPI_InitTypeDef  SPI_InitStructure;
  GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO,ENABLE);
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答
waka-can
2019-12-10 22:55
问题已解决 确实 是自己的菜的问题 ,是因为读地址过长 希望各位引以为鉴吧
#define  FLASH_WriteAddress     0x000020000    //注意这里地址超长了 所以出现问题
        M25P80_Section_Erase(FLASH_WriteAddress);
//        for(k=0; k<10; k++ )
        delay_ms(1000);
        id=SPI_FLASH_ReadID();
        printf(" ID%x ", id);
        M25P80_Write_Bytes(FLASH_WriteAddress,Tx_Buffer,BufferSize);
        for( k=0; k<30; k++ )
      printf(" дÈëµÄÊý¾ÝΪ£º%d ", Tx_Buffer[k]);
                       
  delay_ms(1000);       
       
        M25P80_Read_Bytes(FLASH_WriteAddress,Rx_Buffer, BufferSize);
   for( k=0; k<30; k++ )
      printf(" %d ", Rx_Buffer[k]);

一周热门 更多>