Hello,
Can you check the following code please ?
The EPI module alone works, but with uDMA it doesn't work
#pragma DATA_ALIGN(psDMAControlTable, 1024)
tDMAControlTable psDMAControlTable[64];
#define EPI_DATA_SIZE 1024
#define SYSTEM_CLOCK_120M 120000000
#define EPI_PORT 0xA0000000
uint32_t send_data[EPI_DATA_SIZE] =
{
0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA,
0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA,
0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA,
0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA,
0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA,
0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA,
0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA,
0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA,
0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA,
0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA,
0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA,
0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA,
0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA,
0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA,
0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA,
0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA,
0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA,
0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA,
0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA,
0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA,
0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA,
0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA,
0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA,
0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA,
0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA,
0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA,
0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA,
0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA,
0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA,
0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA,
0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA,
0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55 };
uint32_t ui32SysClock, g_ui32EPIErrors;
volatile uint16_t *g_pusEPIFPGA; // Pointer for EPI memory window.
void initEPI(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); //
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); //
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC); //
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOG); //
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOH); //
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOK); //
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOL); //
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOM); //
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOP); //
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOQ); //
SysCtlPeripheralEnable(SYSCTL_PERIPH_EPI0);
while(!SysCtlPeripheralReady(SYSCTL_PERIPH_EPI0)) //wait for it to be ready
{
}
MAP_GPIOPinConfigure(GPIO_PK0_EPI0S0);
GPIOPinTypeEPI(GPIO_PORTK_BASE, GPIO_PIN_0); //D0
MAP_GPIOPinConfigure(GPIO_PK1_EPI0S1);
GPIOPinTypeEPI(GPIO_PORTK_BASE, GPIO_PIN_1); //D1
MAP_GPIOPinConfigure(GPIO_PK2_EPI0S2);
GPIOPinTypeEPI(GPIO_PORTK_BASE, GPIO_PIN_2); //D2
MAP_GPIOPinConfigure(GPIO_PK3_EPI0S3);
GPIOPinTypeEPI(GPIO_PORTK_BASE, GPIO_PIN_3); //D3
MAP_GPIOPinConfigure(GPIO_PC7_EPI0S4);
GPIOPinTypeEPI(GPIO_PORTC_BASE, GPIO_PIN_7); //D4
MAP_GPIOPinConfigure(GPIO_PC6_EPI0S5);
GPIOPinTypeEPI(GPIO_PORTC_BASE, GPIO_PIN_6); //D5
MAP_GPIOPinConfigure(GPIO_PC5_EPI0S6);
GPIOPinTypeEPI(GPIO_PORTC_BASE, GPIO_PIN_5); //D6
MAP_GPIOPinConfigure(GPIO_PC4_EPI0S7);
GPIOPinTypeEPI(GPIO_PORTC_BASE, GPIO_PIN_4); //D7
MAP_GPIOPinConfigure(GPIO_PA6_EPI0S8);
GPIOPinTypeEPI(GPIO_PORTA_BASE, GPIO_PIN_6); //D8
MAP_GPIOPinConfigure(GPIO_PA7_EPI0S9);
GPIOPinTypeEPI(GPIO_PORTA_BASE, GPIO_PIN_7); //D9
MAP_GPIOPinConfigure(GPIO_PG1_EPI0S10);
GPIOPinTypeEPI(GPIO_PORTG_BASE, GPIO_PIN_1); //D10
MAP_GPIOPinConfigure(GPIO_PG0_EPI0S11);
GPIOPinTypeEPI(GPIO_PORTG_BASE, GPIO_PIN_0); //D11
MAP_GPIOPinConfigure(GPIO_PM3_EPI0S12);
GPIOPinTypeEPI(GPIO_PORTM_BASE, GPIO_PIN_3); //D12
MAP_GPIOPinConfigure(GPIO_PM2_EPI0S13);
GPIOPinTypeEPI(GPIO_PORTM_BASE, GPIO_PIN_2); //D13
MAP_GPIOPinConfigure(GPIO_PM1_EPI0S14);
GPIOPinTypeEPI(GPIO_PORTM_BASE, GPIO_PIN_1); //D14
MAP_GPIOPinConfigure(GPIO_PM0_EPI0S15);
GPIOPinTypeEPI(GPIO_PORTM_BASE, GPIO_PIN_0); //D15
MAP_GPIOPinConfigure(GPIO_PL0_EPI0S16);
GPIOPinTypeEPI(GPIO_PORTL_BASE, GPIO_PIN_0); //A0
MAP_GPIOPinConfigure(GPIO_PL1_EPI0S17);
GPIOPinTypeEPI(GPIO_PORTL_BASE, GPIO_PIN_1); //A1
MAP_GPIOPinConfigure(GPIO_PL2_EPI0S18);
GPIOPinTypeEPI(GPIO_PORTL_BASE, GPIO_PIN_2); //A2
MAP_GPIOPinConfigure(GPIO_PL3_EPI0S19);
GPIOPinTypeEPI(GPIO_PORTL_BASE, GPIO_PIN_3); //A3
MAP_GPIOPinConfigure(GPIO_PQ0_EPI0S20);
GPIOPinTypeEPI(GPIO_PORTQ_BASE, GPIO_PIN_0); //A4
MAP_GPIOPinConfigure(GPIO_PQ1_EPI0S21);
GPIOPinTypeEPI(GPIO_PORTQ_BASE, GPIO_PIN_1); //A5
MAP_GPIOPinConfigure(GPIO_PQ2_EPI0S22);
GPIOPinTypeEPI(GPIO_PORTQ_BASE, GPIO_PIN_2); //A6
MAP_GPIOPinConfigure(GPIO_PQ3_EPI0S23);
GPIOPinTypeEPI(GPIO_PORTQ_BASE, GPIO_PIN_3); //A7
MAP_GPIOPinConfigure(GPIO_PK7_EPI0S24);
GPIOPinTypeEPI(GPIO_PORTK_BASE, GPIO_PIN_7); //A8
MAP_GPIOPinConfigure(GPIO_PK6_EPI0S25);
GPIOPinTypeEPI(GPIO_PORTK_BASE, GPIO_PIN_6); //A9
MAP_GPIOPinConfigure(GPIO_PL4_EPI0S26);
GPIOPinTypeEPI(GPIO_PORTL_BASE, GPIO_PIN_4); //A10
MAP_GPIOPinConfigure(GPIO_PB2_EPI0S27);
GPIOPinTypeEPI(GPIO_PORTB_BASE, GPIO_PIN_2); //A11
MAP_GPIOPinConfigure(GPIO_PB3_EPI0S28);
GPIOPinTypeEPI(GPIO_PORTB_BASE, GPIO_PIN_3); //WR
MAP_GPIOPinConfigure(GPIO_PP2_EPI0S29);
GPIOPinTypeEPI(GPIO_PORTP_BASE, GPIO_PIN_2); //RD
MAP_GPIOPinConfigure(GPIO_PP3_EPI0S30);
GPIOPinTypeEPI(GPIO_PORTP_BASE, GPIO_PIN_3); //FRAME
MAP_GPIOPinConfigure(GPIO_PK5_EPI0S31);
GPIOPinTypeEPI(GPIO_PORTK_BASE, GPIO_PIN_5); //CLK
EPIModeSet(EPI0_BASE, EPI_MODE_GENERAL); //general mode
EPIDividerSet(EPI0_BASE,3); //1=60MHz, 10=10MHz, 119=1MHz
EPIConfigGPModeSet(EPI0_BASE,
EPI_GPMODE_CLKPIN | //interface clock is output on a pin
// EPI_GPMODE_CLKGATE | //clock is stopped when there is no transaction
// EPI_GPMODE_FRAME50 | //frame 50:50 - not using frame signal
// EPI_GPMODE_WRITE2CYCLE | //two cycle write - single cycle write
EPI_GPMODE_ASIZE_NONE | //address bus size of 4 bits
EPI_GPMODE_DSIZE_16, //data bus size of 16 bits
0, //frame 0
0); //parameter not used
EPIAddressMapSet(EPI0_BASE,
EPI_ADDR_PER_SIZE_256B | //only 16 needed
EPI_ADDR_PER_BASE_C); //EPI0 is mapped from 0xC0000000 to 0xC00000FF.
EPIFIFOConfig(EPI0_BASE, (EPI_FIFO_CONFIG_TX_1_2 | EPI_FIFO_CONFIG_WTFULLERR));
//EPIIntDisable(EPI0_BASE, EPI_INT_TXREQ | EPI_INT_ERR);
//EPIIntErrorClear(EPI0_BASE, EPI_INT_ERR_WTFULL | EPI_INT_ERR_RSTALL | EPI_INT_ERR_TIMEOUT);
//EPIIntEnable(EPI0_BASE, EPI_INT_DMA_TX_DONE | EPI_INT_ERR);
//IntEnable(INT_EPI0);
while(HWREG(EPI0_BASE + EPI_O_STAT) & EPI_STAT_INITSEQ)
{
}
} //initEPI()
void DMA_Init()
{
SysCtlPeripheralDisable(SYSCTL_PERIPH_UDMA);
SysCtlPeripheralReset(SYSCTL_PERIPH_UDMA);
SysCtlPeripheralEnable(SYSCTL_PERIPH_UDMA);
uDMAEnable();
while (!(SysCtlPeripheralReady(SYSCTL_PERIPH_UDMA)));
uDMAControlBaseSet(&psDMAControlTable[0]);
//uDMAChannelAssign(UDMA_CH20_EPI0RX);
uDMAChannelAssign(UDMA_CH21_EPI0TX);
//uDMAChannelAttributeDisable(UDMA_CH20_EPI0RX, UDMA_ATTR_ALL);
uDMAChannelAttributeDisable(UDMA_CH21_EPI0TX, UDMA_ATTR_ALL);
uDMAChannelSelectSecondary( UDMA_DEF_TMR1B_SEC_EPI0TX);
//uDMAChannelAttributeEnable(UDMA_CH20_EPI0RX, UDMA_ATTR_USEBURST | UDMA_ATTR_HIGH_PRIORITY);
uDMAChannelAttributeEnable(UDMA_CH21_EPI0TX, UDMA_ATTR_USEBURST); //single request is not supported
//uDMAChannelControlSet(UDMA_CH20_EPI0RX,
// UDMA_SIZE_16 | UDMA_SRC_INC_NONE | UDMA_DST_INC_16 | UDMA_ARB_4);
uDMAChannelControlSet(UDMA_CH21_EPI0TX | UDMA_PRI_SELECT,
UDMA_SIZE_8 | UDMA_SRC_INC_8 | UDMA_DST_INC_NONE | UDMA_ARB_64); // UDMA_ARB_2
// IntEnable(INT_UDMA);
// IntEnable(INT_UDMAERR);
}
void EPI_HPI_uDMA_write(uint8_t* src_p, uint32_t count)
{
g_pusEPIFPGA = (uint16_t*) 0xC0000000;
EPIDMATxCount(EPI0_BASE, count);
uDMAChannelTransferSet(UDMA_CH21_EPI0TX, UDMA_MODE_BASIC,(void*)src_p, (void*) g_pusEPIFPGA, count); //UDMA_MODE_AUTO, UDMA_MODE_BASIC
uDMAChannelEnable(UDMA_CH21_EPI0TX);
}
int main(void)
{
ui32SysClock = SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480), SYSTEM_CLOCK_120M);
// g_pusEPIFPGA = (uint16_t*) 0xC0000000;
//uint16_t data1[] ={0xAAAA,0x5555,0xAAAA,0x5555};
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPION);
while(!SysCtlPeripheralReady(SYSCTL_PERIPH_GPION))
{
}
GPIOPinTypeGPIOOutput(GPIO_PORTN_BASE, GPIO_PIN_0);
GPIOPinTypeGPIOOutput(GPIO_PORTN_BASE, GPIO_PIN_1);
//GPIOPinWrite(GPIO_PORTN_BASE, GPIO_PIN_0, 1);
//GPIOPinWrite(GPIO_PORTN_BASE, GPIO_PIN_1, 0b10);
uint16_t x;
initEPI();
DMA_Init();
EPI_HPI_uDMA_write((uint8_t*)send_data, sizeof(send_data)/sizeof(uint32_t));
while(1)
{
// asm("_nop_");
//ui32SysClock = 0;
if(uDMAChannelModeGet(UDMA_CH21_EPI0TX)==UDMA_MODE_STOP)
{
GPIOPinWrite(GPIO_PORTN_BASE, GPIO_PIN_1, 2);
GPIOPinWrite(GPIO_PORTN_BASE, GPIO_PIN_0, 0);
x =EPIWriteFIFOCountGet(EPI0_BASE);
EPI_HPI_uDMA_write((uint8_t*)send_data, sizeof(send_data)/sizeof(uint32_t));
}
else if (uDMAChannelModeGet(UDMA_CH21_EPI0TX) == UDMA_MODE_BASIC)
{
GPIOPinWrite(GPIO_PORTN_BASE, GPIO_PIN_1, 0);
x =EPIWriteFIFOCountGet(EPI0_BASE);
GPIOPinWrite(GPIO_PORTN_BASE, GPIO_PIN_0, 1);
}
}
}
/* Interrupt Handlers --------------------------------------------------------*/
void EPIIntHandler(void)
{
uint32_t intStatus;
intStatus = EPIIntErrorStatus(EPI0_BASE);
if(intStatus)
{
g_ui32EPIErrors++;
}
EPIIntErrorClear(EPI0_BASE, intStatus);
intStatus = EPIIntStatus(EPI0_BASE, false);
if(intStatus)
{
intStatus = 9;
}
intStatus = EPIIntStatus(EPI0_BASE, true);
if (intStatus & EPI_INT_ERR)
{
if (EPIIntErrorStatus(EPI0_BASE))
{
EPIIntErrorClear(EPI0_BASE, intStatus);
}
}
if (uDMAChannelModeGet(UDMA_SEC_CHANNEL_EPI0TX) == UDMA_MODE_STOP)
{
intStatus = 5;
}
uDMAIntClear(UDMA_CH21_EPI0TX);
}
void uDMAIntHandler(void)
{
uint32_t ui32Mode;
ui32Mode = MAP_uDMAChannelModeGet(UDMA_CHANNEL_SW);
if(ui32Mode == UDMA_MODE_STOP)
{
ui32Mode++;
// MAP_uDMAChannelTransferSet(UDMA_CHANNEL_SW, UDMA_MODE_AUTO, g_ui32SrcBuf, g_ui32DstBuf, MEM_BUFFER_SIZE);
// MAP_uDMAChannelEnable(UDMA_CHANNEL_SW);
// MAP_uDMAChannelRequest(UDMA_CHANNEL_SW);
}
else
{
ui32Mode++;
}
}
void uDMAErrorHandler(void)
{
uint32_t ulStatus;
ulStatus = uDMAErrorStatusGet();
if(ulStatus)
{
ulStatus = 0;
uDMAErrorStatusClear();
}
}
