This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

RM46 Transfer block larger than 16bits over SPI without gaps in SCLK

Other Parts Discussed in Thread: RM46L852

Hi,

I am trying to interface a MAX5705 DAC with the RM46L852's SPI3 interface ( I am using it as a regular SPI not MibSPI using CS[0]). To send data to the DAC I need to transfer a block of 24bits. When I try to do this entire transfer using 8bit blocks, 3 blocks total, I get a pause between each byte of data where the chip select will go back high. I got rid of the chip select transition by setting CS_HOLD to true in the configuration, but the pause is still there. I attached an annotated picture for reference. Is there a way to get rid of this pause and simply continually clock data out?

uint16 tempData[3] = { 0x80, 0x9F, 0x30 };

spiDAT1_t config();
config.CS_HOLD = TRUE;
config.WDEL    = FALSE;
config.DFSEL   = SPI_FMT_0;
config.CSNR    = 0xFE;

spiTransmitData(spiREG3, &config, 3, tempData);

Thanks,

Nathan

  • Nathan,

    No you can't get rid of the delay between transfers, you can only hold the chip select active between them.

    It's not normally necessary to have a continuous SPI clock, unless you are trying to use the SPI as an I2S port or something similar where the SCLK is related to a sample rate in the external device. If this is what you are trying to do then with this device your best bet is to use the HET and it's SHFT instruction.