INITIALISATION WORKING 8 bit transfers SpiParams spi Params

INITIALISATION – WORKING 8 -bit transfers Spi_Params spi. Params; Spi_Data. Param dataparam; GIO_Handle spi. Handle = NULL; GIO_App. Callback spi_dma_callback; #DEFINE SPI_FRAME_SIZE (1*1024) #pragma DATA_ALIGN(loop. Write, 128); Uint 8 loop. Write[SPI_FRAME_SIZE]; #pragma DATA_ALIGN(loop. Read, 128); Uint 8 loop. Read[SPI_FRAME_SIZE]; spi_init. Params() - called from *. tcf SPI 1 device driver { spi. Params = Spi_PARAMS; spi. Params. loopback. Enabled = FALSE; spi. Params. hwi. Number = 8; spi. Params. spi. HWCfg. Data. intr. Level = TRUE; spi. Params. op. Mode = Spi_Op. Mode_DMAINTERRUPT; spi. Params. spi. HWCfg. Data. pin. Op. Modes = Spi_Pin. Op. Mode_SPISCS_4 PIN; spi. Params. spi. HWCfg. Data. config. Datafmt[0]. wait. Enable = FALSE; spi. Params. spi. HWCfg. Data. enable. High. Z = TRUE; spi. Params. edma. Handle = NULL; spi. Params. output. Clk. Freq = 29184000; spi. Params. spi. HWCfg. Data. config. Datafmt[0]. char. Length = 8; spi. Params. spi. HWCfg. Data. config. Datafmt[0]. clk. High = FALSE; spi. Params. spi. HWCfg. Data. config. Datafmt[0]. lsb. First = FALSE; spi. Params. spi. HWCfg. Data. config. Datafmt[0]. odd. Parity = FALSE; spi. Params. spi. HWCfg. Data. config. Datafmt[0]. parity. Enable = FALSE; spi. Params. spi. HWCfg. Data. config. Datafmt[0]. phase. In = FALSE; spi. Params. spi. HWCfg. Data. config. Datafmt[0]. w. Delay = 0 x 00; /* Delays and power dependencies set also */ } ****** 8 -BIT TRANSFER

INITIALISATION – WORKING 8 -bit transfers spi. Thread. Init() { GIO_Attrs gio. Attrs = GIO_ATTRS; Spi_Chan. Params chan. Params; chan. Params. h. Edma = h. Edma[0]; configure. Spi(); spi. Handle = GIO_create("/Spi 1", IOM_INOUT, NULL, &chan. Params, &gio. Attrs); return; } prd. Data. Gen. Init() { memset(loop. Read , 0 x 00, sizeof(loop. Read)); memset(loop. Write , 0 x 00, sizeof(loop. Write)); /*loop. Write is filled with a pattern 0 - 512*/ memset(&dataparam, 0 x 00, sizeof(Spi_Data. Param)); dataparam. chip. Select = SPI 1_SCS 1; dataparam. buf. Len = sizeof(loop. Write); dataparam. flags = FALSE; dataparam. data. Format = Spi_Data. Format_0; dataparam. out. Buffer = (Uint 8*)loop. Write; dataparam. in. Buffer = (Uint 8*)loop. Read; /*Callback fun*/ spi_dma_callback. fxn = spi_dma_callback_fn; spi_dma_callback. arg = &loop. Read[0]; }

Run Time Transfer void fpga. Input. Isr(Ptr gp 0_10_Interrupt) { status = GIO_submit(spi. Handle, IOM_WRITE, &dataparam, &(dataparam. buf. Len), &spi_dma_callback); return; }

Modifications For 16 Bit Transfer #DEFINE SPI_FRAME_SIZE (1*512) #pragma DATA_ALIGN(loop. Write, 128); Uint 16 loop. Write[SPI_FRAME_SIZE]; #pragma DATA_ALIGN(loop. Read, 128); Uint 16 loop. Read[SPI_FRAME_SIZE]; spi. Params. spi. HWCfg. Data. config. Datafmt[0]. char. Length = 16; dataparam. buf. Len = sizeof(loop. Write)/2;

16 -Bit SPI Transfer Word 0 Word 1 Word 2 CLK SCS SIMO loop. Write Word 0 16 -bit array Word 1 Word 2 0 0 0 1 1 1 2 2 2 : : : 512 512 16 -bit array
- Slides: 5