Hi Team,
Customer want use SPI_transfer to read infinitive length data. I want set lager transfer amount to read SPI RX data. SPI max data size is 16-bit sized. If customer data size is 4 to 16bit, can dmaControlTableEntry->ui32Control be set 16 bit size?
/* Calculate the number of bytes for the transfer */ numberOfBytes = ((uint16_t) object->currentXferAmt) << (object->frameSize); /* Setup RX side */ /* Set pointer to Rx control table entry */ dmaControlTableEntry = (hwAttrs->baseAddr == SSI0_BASE ? &dmaSpi0RxControlTableEntry : &dmaSpi1RxControlTableEntry); if (object->currentTransaction->rxBuf) { dmaControlTableEntry->ui32Control = dmaRxConfig[object->frameSize]; /* * Add an offset for the amount of data transfered. The offset is * calculated by: object->amtDataXferred * (object->frameSize + 1). * This accounts for 8 or 16-bit sized transfers. */ dmaControlTableEntry->pvDstEndAddr = (void *)((uint32_t) object->currentTransaction->rxBuf + ((uint32_t) object->amtDataXferred * (object->frameSize + 1)) + numberOfBytes - 1); } else { dmaControlTableEntry->ui32Control = dmaNullConfig[object->frameSize]; dmaControlTableEntry->pvDstEndAddr = (void *) &(object->scratchBuf); } dmaControlTableEntry->pvSrcEndAddr = (void *)(hwAttrs->baseAddr + SSI_O_DR); dmaControlTableEntry->ui32Control |= UDMACC26XX_SET_TRANSFER_SIZE((uint16_t) object->currentXferAmt);