This Question regarding Accessing ADC MAX11040 through MSBSP Port (SPI Mode).If I send Read command ie 0xF00000 to the ADC will return entire 4 channel continuously.
That is total 24bits X 4 channels =96 bits.How can I read this this 96 bit data from the SPI registers.
I configured the data bits to 24 bits and number of words in phase1 as 4.whether the below code will work or not
/*Code Starts here*/
static MCBSP_Config adc_spiConfigR = {
/* Serial Port Control Register (SPCR) */
MCBSP_SPCR_RMK(
MCBSP_SPCR_FREE_YES,
MCBSP_SPCR_SOFT_YES,
MCBSP_SPCR_FRST_YES,
MCBSP_SPCR_GRST_YES,
MCBSP_SPCR_XINTM_XRDY,
MCBSP_SPCR_XSYNCERR_YES,
MCBSP_SPCR_XRST_NO,
MCBSP_SPCR_DLB_OFF,
MCBSP_SPCR_RJUST_RZF,
MCBSP_SPCR_CLKSTP_DELAY,
MCBSP_SPCR_DXENA_OFF,
MCBSP_SPCR_RINTM_RRDY,
MCBSP_SPCR_RSYNCERR_YES,
MCBSP_SPCR_RRST_NO),
/* Receive Control Register (RCR) */
MCBSP_RCR_RMK(
MCBSP_RCR_RPHASE_SINGLE,
MCBSP_RCR_RFRLEN2_OF(0),
MCBSP_RCR_RWDLEN2_24BIT,
MCBSP_RCR_RCOMPAND_MSB,
MCBSP_RCR_RFIG_YES,
MCBSP_RCR_RDATDLY_1BIT,
MCBSP_RCR_RFRLEN1_OF(3),
MCBSP_RCR_RWDLEN1_24BIT,/
MCBSP_RCR_RWDREVRS_DISABLE),
/* Transmit Control Register (XCR) */
MCBSP_XCR_RMK(
MCBSP_XCR_XPHASE_SINGLE,
MCBSP_XCR_XFRLEN2_OF(0),
MCBSP_XCR_XWDLEN2_24BIT,
MCBSP_XCR_XCOMPAND_MSB,
MCBSP_XCR_XFIG_YES,
MCBSP_XCR_XDATDLY_1BIT,
MCBSP_XCR_XFRLEN1_OF(3),
MCBSP_XCR_XWDLEN1_24BIT,
MCBSP_XCR_XWDREVRS_DISABLE),
/*serial port sample rate generator register(SRGR) */
MCBSP_SRGR_RMK(
MCBSP_SRGR_GSYNC_FREE,
MCBSP_SRGR_CLKSP_FALLING,
MCBSP_SRGR_CLKSM_INTERNAL,
MCBSP_SRGR_FSGM_DXR2XSR,
MCBSP_SRGR_FPER_OF(63),
MCBSP_SRGR_FWID_OF(40),
MCBSP_SRGR_CLKGDV_OF(25)
),
MCBSP_MCR_DEFAULT,
MCBSP_RCER_DEFAULT,
MCBSP_XCER_DEFAULT,
/* serial port pin control register(PCR) */
MCBSP_PCR_RMK(
MCBSP_PCR_XIOEN_SP,
MCBSP_PCR_RIOEN_SP,
MCBSP_PCR_FSXM_INTERNAL,
MCBSP_PCR_FSRM_INTERNAL,
MCBSP_PCR_CLKXM_OUTPUT,
MCBSP_PCR_CLKRM_OUTPUT,
MCBSP_PCR_CLKSSTAT_0,
MCBSP_PCR_DXSTAT_0,
MCBSP_PCR_FSXP_ACTIVELOW,
MCBSP_PCR_FSRP_ACTIVELOW,
MCBSP_PCR_CLKXP_FALLING,
MCBSP_PCR_CLKRP_FALLING)
};
hMcbsp = MCBSP_open(MCBSP_DEV1, MCBSP_OPEN_RESET);
MCBSP_config(hMcbsp,&adc_spiConfigR);
MCBSP_start(hMcbsp,MCBSP_RCV_START | MCBSP_XMIT_START |
MCBSP_SRGR_START| MCBSP_SRGR_FRAMESYNC,
MCBSP_SRGR_DEFAULT_DELAY);
/*Configuring Function Register */
while (!MCBSP_xrdy(hMcbsp));
MCBSP_write(hMcbsp,0x500000);
while (!MCBSP_xrdy(hMcbsp));
MCBSP_write(hMcbsp,0x6020);
for (i = 0; i < 50; i++)
{
while (!MCBSP_xrdy(hMcbsp));
/*Read command to ADC*/
MCBSP_write(hMcbsp,0xF00000);
while (!MCBSP_rrdy(hMcbsp));
CH_A_DATA [i] = MCBSP_read(hMcbsp);
while (!MCBSP_rrdy(hMcbsp));
CH_B_DATA[i] = MCBSP_read(hMcbsp);
while (!MCBSP_rrdy(hMcbsp));
CH_C_DATA [i] = MCBSP_read(hMcbsp);
while (!MCBSP_rrdy(hMcbsp));
CH_D_DATA [i] = MCBSP_read(hMcbsp);
delayusec(50);
}