Dear All,
I am using AM3517 controller. I am able to transmit data at the rate of i.5 mhz..but not able to receive the data.
#if TX_RX
while(1)
{
debug_print("\nTransmitting Data");
SETBIT_REGL(MCSPI1_CH0_CTRL, SPI_CTRL_EN); // Activate channel
SETBIT_REGL(MCSPI1_IRQ_STAT, SPI_IRQSTATUS_TX0_EMPTY); // Clear TX0_EMPTY
SETBIT_REGL(MCSPI1_IRQ_STAT, SPI_IRQSTATUS_RX0_FULL); // Clear TX0_EMPTY
SETBIT_REGL(MCSPI1_CH0_CONF, SPI_CONF_FORCE);
OUT_REGL(MCSPI1_TX0,bCnt++); // Send word
debug_print("Transmitted Data = %x\r\n\n",IN_REGL(MCSPI1_TX0));
while(!CHKBIT_REGL(MCSPI1_CH0_STAT,SPI_EOT))
{
debug_print("\nWaiting For Eot != %x",IN_REGL(MCSPI1_CH0_STAT));
}
debug_print("\nWaiting For Eot !!!= %x",IN_REGL(MCSPI1_CH0_STAT));
while (!CHKBIT_REGL(MCSPI1_IRQ_STAT, SPI_IRQSTATUS_TX0_EMPTY))
{
debug_print("\nWaiting for Transmission...");
}
while(!CHKBIT_REGL(MCSPI1_CH0_STAT,SPI_RX_FULL))
{
debug_print("\nWaiting For Eot != %x",IN_REGL(MCSPI1_CH0_STAT));
}
while (!CHKBIT_REGL(MCSPI1_IRQ_STAT, SPI_IRQSTATUS_RX0_FULL))
{
debug_print("\nWaiting for RecepTion...");
}
debug_print("Received Data = %x\r\n\n",IN_REGL(MCSPI1_RX0));
CLRBIT_REGL(MCSPI1_CH0_CONF, SPI_CONF_FORCE);
CLRBIT_REGL(MCSPI1_CH0_CTRL, SPI_CTRL_EN); // DE-activate channel
debug_print("Received Data = %x\r\n\n",IN_REGL(MCSPI1_RX0));
USTIMER_delay(1000000);//NC
}
#endif
the above code is used to tranmit and receive data.
I am transmitting 8 bit data on the MOSI Line. But when i read the RX register the received data is 0x0100..0x0200..0x0300 and so on..and since i am tranmitting 8 bit data.. i am not able to find how the data gets shifted by 8 bit..which keeps the SOMI line LOW.