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.
Hi,
I am using a TM4C129NCPDT on a custom board. I have the EPI connected to an FPGA with data size 16 and address size 4.
Initial tests show that the read, write and clock signals are as expected but the address lines do not change state.
There don't seem to be many examples involving EPI - please would someone check my initialisation code, and that I have undestood how to use the EPI.
Thanks, Richard
//--------------------------------------------------------- void initEPI(void) { SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOK); // SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC); // SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); // SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOG); // SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOM); // SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOL); // SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); // SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOP); // 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_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_PK5_EPI0S31); GPIOPinTypeEPI(GPIO_PORTK_BASE, GPIO_PIN_5); //CLK EPIModeSet(EPI0_BASE, EPI_MODE_GENERAL); //general mode EPIDividerSet(EPI0_BASE, 10); //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_4 | //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. } //initEPI()
//and to use the EPI....... //--------------------------------------------------------- uint16_t * EPIfpga = (uint16_t *)0xC0000000; uint16_t sr; //to read an fpga register... sr = EPIfpga[2]; //to write an fpga register... EPIfpga[2] = 0x2A27;