hi,
i made it work. but unexpected problem coming i dnt know why. if i call all API function in single function its working fine.(all DSPI init and write, read function). i made seperate function for DSPI initialization , data_write and data_read that time its not working i dnt know why.
that code i added below.
WORKING CODE:
void DSPI_init()
{
uint32_t dataLength, numBytes;
uint8_t statusRegister;
dspi_status_t spiStatus;
uint8_t i,data_w;
dspi_master_user_config_t userConfig;
userConfig.isChipSelectContinuous = true;
userConfig.isSckContinuous = false;
userConfig.pcsPolarity = kDspiPcs_ActiveLow;
userConfig.whichCtar = kDspiCtar1;//kDspiCtar0;
userConfig.whichPcs = kDspiPcs1;//kDspiPcs0;
/* Init the DSPI module */
dspi_master_state_t dspiMasterState;
dspi_status_t status = DSPI_DRV_MasterInit(SPI_INSTANCE, &dspiMasterState, &userConfig);
/* Define bus configuration */
dspi_device_t spiDevice;
spiDevice.dataBusConfig.bitsPerFrame = 8;
spiDevice.dataBusConfig.clkPhase = kDspiClockPhase_SecondEdge;//kDspiClockPhase_FirstEdge;
spiDevice.dataBusConfig.clkPolarity = kDspiClockPolarity_ActiveLow;//kDspiClockPolarity_ActiveHigh;
spiDevice.dataBusConfig.direction = kDspiMsbFirst;
spiDevice.bitsPerSec = 500000;
/* Configure the SPI bus */
uint32_t calculatedBaudRate;
status = DSPI_DRV_MasterConfigureBus(SPI_INSTANCE, &spiDevice, &calculatedBaudRate);
/* Configure pins for SPI */
configure_spi_pins(SPI_INSTANCE);
/* SPI use interrupt, must be installed in MQX and file fsl_dspi_irq.c must not be included in project */
int32_t IRQNumber = g_dspiIrqId[SPI_INSTANCE];
_int_install_isr(IRQNumber, (INT_ISR_FPTR)DSPI_DRV_MasterIRQHandler, (void*)SPI_INSTANCE);
data_w='A';
while(1)
{
printf("\n\rgoing to write data");
write_backup_data(data_w); //INSIDE THIS FUNCTION AM CALLING // "DSPI_DRV_MasterTransferBlocking"
data_w=read_backup_data();
printf("\n\rF_data=%c",data_w);
_time_delay(1500);
}
}
NOT WORKING CODE:
same code only i am calling different function for read/write
void DSPI_init()
{
uint32_t dataLength, numBytes;
uint8_t statusRegister;
dspi_status_t spiStatus;
uint8_t i,data_w;
dspi_master_user_config_t userConfig;
userConfig.isChipSelectContinuous = true;
userConfig.isSckContinuous = false;
userConfig.pcsPolarity = kDspiPcs_ActiveLow;
userConfig.whichCtar = kDspiCtar1;//kDspiCtar0;
userConfig.whichPcs = kDspiPcs1;//kDspiPcs0;
/* Init the DSPI module */
dspi_master_state_t dspiMasterState;
dspi_status_t status = DSPI_DRV_MasterInit(SPI_INSTANCE, &dspiMasterState, &userConfig);
/* Define bus configuration */
dspi_device_t spiDevice;
spiDevice.dataBusConfig.bitsPerFrame = 8;
spiDevice.dataBusConfig.clkPhase = kDspiClockPhase_SecondEdge;//kDspiClockPhase_FirstEdge;
spiDevice.dataBusConfig.clkPolarity = kDspiClockPolarity_ActiveLow;//kDspiClockPolarity_ActiveHigh;
spiDevice.dataBusConfig.direction = kDspiMsbFirst;
spiDevice.bitsPerSec = 500000;
/* Configure the SPI bus */
uint32_t calculatedBaudRate;
status = DSPI_DRV_MasterConfigureBus(SPI_INSTANCE, &spiDevice, &calculatedBaudRate);
/* Configure pins for SPI */
configure_spi_pins(SPI_INSTANCE);
/* SPI use interrupt, must be installed in MQX and file fsl_dspi_irq.c must not be included in project */
int32_t IRQNumber = g_dspiIrqId[SPI_INSTANCE];
_int_install_isr(IRQNumber, (INT_ISR_FPTR)DSPI_DRV_MasterIRQHandler, (void*)SPI_INSTANCE);
}
void read_write_external_data()
{
while(1)
{
printf("\n\rgoing to write data");
write_backup_data(data_w); //INSIDE THIS FUNCTION AM CALLING // "DSPI_DRV_MasterTransferBlocking"
data_w=read_backup_data();
printf("\n\rF_data=%c",data_w);
_time_delay(1500);
}
}
so if i did like that my code was hanging i dnt know why? can you give some solution for this.
same code only i dnt know why..? or i want to initialize every read/write ?
thanks and regards,
sudhakar p