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