不能读出M25P64 寻求帮助
本人使用的调试环境为STR910-EVAL, STR912 CPU, 该板上有一片串行Flash 芯片M25P64, 本人使用SPI0的与其通信,但是不能读出数据,请调通过的大侠给与帮助.
有示波器观察 MOSI, CLK , CS的波形均正确,但MISO没有任何输出.
开发板式南京万利的,和原装的基本相同
初始化部分如下:
// CLK =P5.4 GPIO5, GPIO_Pin_4 , GPIO_PinOutput, GPIO_Type_PushPull, GPIO_IPConnected_Enable , GPIO_OutputAlt2, // MOSI=P5.5 GPIO5, GPIO_Pin_5 , GPIO_PinOutput, GPIO_Type_PushPull, GPIO_IPConnected_Enable , GPIO_OutputAlt2, // MIS0=P5.6 GPIO5, GPIO_Pin_6 , GPIO_PinInput, GPIO_Type_PushPull, GPIO_IPConnected_Enable , GPIO_InputAlt1 , // CS =P5.7 GPIO5, GPIO_Pin_7 , GPIO_PinOutput, GPIO_Type_PushPull, GPIO_IPConnected_Disable, GPIO_OutputAlt1,
SSP_InitTypeDef SSP_InitStructure;
SSP_StructInit(&SSP_InitStructure); /*********************** For SPI Flash *****************************/ SSP_InitStructure.SSP_FrameFormat = SSP_FrameFormat_Motorola; SSP_InitStructure.SSP_Mode = SSP_Mode_Master; SSP_InitStructure.SSP_CPOL = SSP_CPOL_Low; SSP_InitStructure.SSP_CPHA = SSP_CPHA_1Edge; SSP_InitStructure.SSP_DataSize = SSP_DataSize_16b; SSP_InitStructure.SSP_SlaveOutput = SSP_SlaveOutput_Enable; SSP_InitStructure.SSP_ClockRate = 0xB; SSP_InitStructure.SSP_ClockPrescaler = 12;
SSP_Init(SSP0, &SSP_InitStructure); SSP_Cmd(SSP0,ENABLE);
读出M25P64内部ID的代码如下:
GPIO_WriteBit(GPIO5,GPIO_Pin_7,Bit_RESET); // CS=0 Delay(20); SSP0->DR=0x9F00; // 发出读ID命令 Delay(100); TT=SSP0->DR; // 读出的数据不对 GPIO_WriteBit(GPIO5,GPIO_Pin_7,Bit_SET); // CS=0 |
|