工具/软件:
尊敬的先生:
我们连接的是 W25Q16JLUXIG_TR 16MB 闪存、但无法读取器件 ID。 也无法写入闪存。
我将附加该文件以供参考
//必须启用 SSI3外设才能使用。
SysCtlPeripheralEnable (SysCtl_Periph_SSI3);
//
ROM_GPIOPinConfigure (GPIO_PF0_SSI3XDAT1);
ROM_GPIOPinConfigure (GPIO_PF4_SSI3XDAT2);
ROM_GPIOPinConfigure (GPIO_PF5_SSI3XDAT3);
ROM_GPIOPinConfigure (GPIO_PQ0_SSI3CLK);
ROM_GPIOPinConfigure (GPIO_PQ1_SSI3FSS);//添加了
ROM_GPIOPinConfigure (GPIO_PQ2_SSI3XDAT0);
// ROM_GPIOPinTypeSSI (GPIO_PORTF_BASE、GPIO_PIN_0 | GPIO_PIN_4 | GPIO_PIN_5);
ROM_GPIOPinTypeSSI (GPIO_PORTQ_BASE、GPIO_PIN_2 | GPIO_PIN_1 | GPIO_PIN_0);//添加了。
ROM_GPIOPinTypeSSI (GPIO_PORTF_BASE、GPIO_PIN_5 | GPIO_PIN_4 | GPIO_PIN_0);//添加了。
void Flash_SPI_init (uint32_t ui32SysClock){
uint32_t pui32Dummy[1];
uint32_t ui32DeviceID;
SSIConfigSetExpClk (SSI3_BASE、ui32SysClock、SSI_FRF_MOTO_MODE_0、
SSI_MODE_MASTER、1000000、8);
//启用 SSI3模块。
ROM_SSIAdvModeSet (SSI3_BASE、SSI_ADV_MODE_WRITE);
SSIAdvFrameHoldEnable (SSI3_BASE);
SSIEnable (SSI3_BASE);
while (SSIDataGetNonBlocking (SSI3_BASE、&pui32Dummy[0])){
}
延迟(500000);
//首先读取设备 ID
ui32DeviceID = SSILibSendReadIDAdvMode (SSI3_BASE);
if (ui32DeviceID!= device_ID){
延迟(500000);
延迟(500000);
}
// UARTprintf ("检测到器件 ID 为%x\n"的外部闪存、ui32DeviceID);
}
uint32_t SSILibSendReadIDAdvMode (uint32_t ui32Base){
uint32_t ui32Idx、ui32Receive;
uint32_t ui32MfgID;
uint32_t ui32DevID;
uint32_t ui32ReadID[]={0xAA、0xAA};
uint32_t ui32ReadIDFlash;
对于(ui32Idx = 0;ui32Idx < sizeof (g_ui8InstrReadID)/ sizeof (g_ui8InstrReadID[0]);ui32Idx++){
SSIDataPut (ui32Base、g_ui8InstrReadID[ui32Idx]);
}
SSIAdvModeSet (ui32Base、SSI_ADV_MODE_READ_WRITE);
SSIDataPut (ui32Base、0x00);
SSIDataGet (ui32Base、&ui32Receive);
ui32ReadID[0]= ui32Receive;
SSIAdvDataPutFrameEnd (ui32Base、0x00);
SSIDataGet (ui32Base、&ui32Receive);
ui32ReadID[1]= ui32Receive;
ui32MfgID = ui32ReadID[0];
ui32DevID = ui32ReadID[1];
ui32ReadIDFlash = ui32MfgID;
ui32ReadIDFlash = ui32ReadIDFlash << 8;
ui32ReadIDFlash || ui32DevID;
SSIAdvModeSet (SSI3_BASE、SSI_ADV_MODE_WRITE);
返回 ui32ReadIDFlash;
}
它的16MB 但架构错误显示512MB