主题中讨论的其他器件:TM4C123
你(们)好
我正在尝试使用 TM4C123 Launchpad 与 SPI 闪存 AT45DQ321进行通信。 我无法获取 ID。 请有人就我的以下代码向我提供反馈。 我在端口 B 上使用 SSI2
谢谢。
AJ
void InitializeFlash (void)
{
uint32_t dumpByte、*p;
SysCtlPeripheralEnable (SYSCTL_Periph_SSI2);
while (!SysCtlPeripheralReady (SYSCTL_Periph_SSI2))
{
}//结束 while (!SysCtlPeripheralReady (SYSCTL_Periph_SSI2))
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOB);
while (!SysCtlPeripheralReady (SYSCTL_Periph_GPIOB))
{
}//结束 while (!SysCtlPeripheralReady (SYSCTL_Periph_GPIOB))
GPIOPinConfigure (GPIO_PB4_SSI2CLK);
//GPIOPinConfigure (GPIO_PB5_SSI2FSS);
GPIOPinConfigure (GPIO_PB6_SSI2RX);
GPIOPinConfigure (GPIO_PB7_SSI2TX);
GPIOPinTypeSSI (GPIO_PORTB_BASE、GPIO_PIN_4 | GPIO_PIN_6 | GPIO_PIN_7);
SSIConfigSetExpClk (SSI2_base、SysCtlClockGet ()、SSI_FRF_MOTO_MOTO_MODE_0、
SSI_MODE_MASTER、1000000、8);
GPIOPinTypeGPIOOutput (GPIO_PORTB_BASE、GPIO_PIN_5);
GPIOPinWrite (GPIO_PORTB_BASE、GPIO_PIN_5、GPIO_PIN_5);
SSIEnable (SSI2_base);
P =(uint32_t*)&dumpByte;
while (SSIDataGetNonBlocking (SSI2_base、p))
{
}
}//end void InitializeFlash (void)
/******* /
void readid (void)
{
uint32_t x、*p;
P =(uint32_t*)&x;
GPIOPinWrite (GPIO_PORTB_BASE、GPIO_PIN_5、0x00);
SSIDataPut (SSI2_base、0x9F);
while (SSIBusy (SSI2_base))
{
}
SSIDataGet (SSI2_base、p);
FlashBuffer[0]= 0x000000FF & x;
SSIDataPut (SSI2_base、0x00);
while (SSIBusy (SSI2_base))
{
}
SSIDataGet (SSI2_base、p);
FlashBuffer[1]= 0x000000FF & x;
SSIDataPut (SSI2_base、0x00);
while (SSIBusy (SSI2_base))
{
}
SSIDataGet (SSI2_base、p);
FlashBuffer[2]= 0x000000FF & x;
SSIDataPut (SSI2_base、0x00);
while (SSIBusy (SSI2_base))
{
}
SSIDataGet (SSI2_base、p);
FlashBuffer[3]= 0x000000FF & x;
SSIDataPut (SSI2_base、0x00);
while (SSIBusy (SSI2_base))
{
}
SSIDataGet (SSI2_base、p);
FlashBuffer[4]= 0x000000FF & x;
GPIOPinWrite (GPIO_PORTB_BASE、GPIO_PIN_5、GPIO_PIN_5);
//结束空 readid (void)