Part Number:EK-TM4C123GXL
Hi
I am trying to talk to a SPI Flash Memory AT45DQ321 using the TM4C123 Launchpad.. I couldn't get the ID. Could someone please give me feedback on my code below. I'm using SSI2 on port B.
Thanks.
AJ
void InitializeFlash(void)
{
uint32_t dumpByte, *p;
SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI2);
while(!SysCtlPeripheralReady(SYSCTL_PERIPH_SSI2))
{
}//end while(!SysCtlPeripheralReady(SYSCTL_PERIPH_SSI2))
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
while(!SysCtlPeripheralReady(SYSCTL_PERIPH_GPIOB))
{
}//end 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_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);
}//end void ReadID(void)