I am trying to set up an edma transfer to the spi module when I get a trigger on a gpio pin (GPIO6[7]) but I do not seem to be getting an event happening.
my set up code is as follows
// Pin set up
pin_mux = (HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(14)) & ~(SYSCFG_PINMUX14_PINMUX14_3_0));
/* Setting the pins corresponding to GP6[7] in PINMUX14 register.*/
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(14)) = (PINMUX14_GPIO6_7_ENABLE | pin_mux);
/* Sets the pin 104 (GP6[12]) as input.*/
GPIODirModeSet(SOC_GPIO_0_REGS, DRDY_ADS1299, GPIO_DIR_INPUT);
/* Set up the interrupt type for the input signal */
GPIOIntTypeSet(SOC_GPIO_0_REGS, DRDY_ADS1299, GPIO_INT_TYPE_FALLEDGE);
// Spi set up
/* Reset the SPI controller by toggling the reset bit in the global configuration register 0 */
SPIReset(SOC_SPI_1_REGS);
SPIOutOfReset(SOC_SPI_1_REGS);
/* configure the global configuration register 1 to put the SPI in master mode */
SPIModeConfigure(SOC_SPI_1_REGS, SPI_MASTER_MODE);
/* configure SPI pin control register 0 the the type of spi interface that is going to be used */
SPIPinControl(SOC_SPI_1_REGS, 0, 0, &spi_type);
/* Configure the SPI DAT1 register to use Data format register 0, SPI_CS2 and assert the CSHOLD */
SPIDat1Config(SOC_SPI_1_REGS, (SPI_CSHOLD | SPI_DATA_FORMAT0), SCS2);
/* Configure the SPI default chip select register to assert SPI_CS2 when SPI is not active */
SPIDefaultCSSet(SOC_SPI_1_REGS, SCS2);
/* Configure the SPI data format0 register pre-scale value */
SPIClkConfigure(SOC_SPI_1_REGS, SPI_1_SYS_CLOCK_FREQ, SPI_CLOCK_FREQ, SPI_DATA_FORMAT0);
/* Configure the SPI data format0 register polarity and phase of SPI clock */
SPIConfigClkFormat(SOC_SPI_1_REGS, (SPI_CLK_POL_LOW | SPI_CLK_INPHASE), SPI_DATA_FORMAT0);
/* Configure the SPI data format0 register to transmit MSB bit First during data transfer */
SPIShiftMsbFirst(SOC_SPI_1_REGS, SPI_DATA_FORMAT0);
/* Configure the SPI data format0 register to use 8 bit Character lengths */
SPICharLengthSet(SOC_SPI_1_REGS, CHAR_LENGTH, SPI_DATA_FORMAT0);
/* Configure the interrupt level registers to map interrupts to interrupt line INT1 */
SPIIntLevelSet(SOC_SPI_1_REGS, SPI_RECV_INTLVL | SPI_TRANSMIT_INTLVL);
/* Enable SPI communication by setting the enable bit in the global configuration register 1 */
SPIEnable(SOC_SPI_1_REGS);
SPIIntEnable(SOC_SPI_1_REGS, SPI_DMA_REQUEST_ENA_INT);
// Dma set up
/* initialise the EDMA */
EDMA3Init(SOC_EDMA30CC_0_REGS, 0);
/* Request EDMA channel. */
EDMA3RequestChannel(SOC_EDMA30CC_0_REGS, EDMA3_CHANNEL_TYPE_DMA,
EDMA3_CHA_GPIO_BNKINT6, EDMA3_CHA_GPIO_BNKINT6, 0);
emg_tx_dma_params.aCnt = emg_tx_dma_params_link.aCnt = 13;
emg_tx_dma_params.bCnt = emg_tx_dma_params_link.bCnt = 1;
emg_tx_dma_params.bCntReload = emg_tx_dma_params_link.bCntReload = 0;
emg_tx_dma_params.cCnt = emg_tx_dma_params_link.cCnt = 1;
emg_tx_dma_params.destAddr = emg_tx_dma_params_link.destAddr = (unsigned int)HWREG(SOC_SPI_1_REGS + SPI_SPIDAT1);
emg_tx_dma_params.destBIdx = emg_tx_dma_params_link.destBIdx = 0;
emg_tx_dma_params.destCIdx = emg_tx_dma_params_link.destCIdx = 0;
emg_tx_dma_params.linkAddr = emg_tx_dma_params_link.linkAddr = 0x4220; // link to PaRAM set 17
emg_tx_dma_params.opt = emg_tx_dma_params_link.opt |= ((EDMA3_CHA_GPIO_BNKINT6 << EDMA3CC_OPT_TCC_SHIFT) & EDMA3CC_OPT_TCC);
emg_tx_dma_params.srcAddr = emg_tx_dma_params_link.srcAddr = (unsigned int)&Default_buf;
emg_tx_dma_params.srcBIdx = emg_tx_dma_params_link.srcBIdx = 0;
emg_tx_dma_params.srcCIdx = emg_tx_dma_params_link.srcCIdx = 0;
/* assign the default PaRam block to the assigned DMA channel */
EDMA3SetPaRAM(SOC_EDMA30CC_0_REGS, EDMA3_CHA_GPIO_BNKINT6, &emg_tx_dma_params);
EDMA3ClrMissEvt(SOC_EDMA30CC_0_REGS, EDMA3_CHA_GPIO_BNKINT6);
EDMA3ClearErrorBits(SOC_EDMA30CC_0_REGS, EDMA3_CHA_GPIO_BNKINT6, 0);
EDMA3EnableDmaEvt(SOC_EDMA30CC_0_REGS,
EDMA3_CHA_GPIO_BNKINT6);The Spi tx and rx and gpio interrupts have been working previously but moving to edma I no longer get data out the spi when that pin falls low, if I pause the debugger and look at the event register, event 16 is always a 0.
have I done something wrong in my set up?
Graham