Part Number: MSP432E401Y
Other Parts Discussed in Thread: MSP-EXP432E401Y
Tool/software:
Hello Team,
As in below image, MSP432 and CPLD are connected. This is done with reference to the www.ti.com/.../TIDM-TM4CFLASHSRAM

In our custom board, we tried HB8 ADNOMUX quad CS mode with the available connections, EPI is working fine. Data and address are perfect. We have also made HB16 ADNOMUX in MSP-EXP432E401Y launchpad and CPLD's EVK, this is also working fine but in our custom board we have it connected as in above image.
I'm trying to read and write data from CPLD in HB16 ADMUX mode with ALE and Quad CS mode but since it is connected to latch, i could only see data in the address pins as well.(checked with Integrated logic analyzer in CPLD tool).
Please find the code below
MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);
MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOG);
MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOH);
MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOK);
MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOL);
MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOM);
MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOP);
MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOQ);
MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPION);
MAP_GPIOPinConfigure(GPIO_PH0_EPI0S0);
MAP_GPIOPinConfigure(GPIO_PH1_EPI0S1);
MAP_GPIOPinConfigure(GPIO_PH2_EPI0S2);
MAP_GPIOPinConfigure(GPIO_PH3_EPI0S3);
MAP_GPIOPinConfigure(GPIO_PC7_EPI0S4);
MAP_GPIOPinConfigure(GPIO_PC6_EPI0S5);
MAP_GPIOPinConfigure(GPIO_PC5_EPI0S6);
MAP_GPIOPinConfigure(GPIO_PC4_EPI0S7);
MAP_GPIOPinConfigure(GPIO_PA6_EPI0S8);
MAP_GPIOPinConfigure(GPIO_PA7_EPI0S9);
MAP_GPIOPinConfigure(GPIO_PG1_EPI0S10);
MAP_GPIOPinConfigure(GPIO_PG0_EPI0S11);
MAP_GPIOPinConfigure(GPIO_PM3_EPI0S12);
MAP_GPIOPinConfigure(GPIO_PM2_EPI0S13);
MAP_GPIOPinConfigure(GPIO_PM1_EPI0S14);
MAP_GPIOPinConfigure(GPIO_PM0_EPI0S15);
MAP_GPIOPinConfigure(GPIO_PL0_EPI0S16);
MAP_GPIOPinConfigure(GPIO_PL1_EPI0S17);
MAP_GPIOPinConfigure(GPIO_PL2_EPI0S18);
MAP_GPIOPinConfigure(GPIO_PL3_EPI0S19);//parallel flash
MAP_GPIOPinConfigure(GPIO_PQ0_EPI0S20);//parallel flash
MAP_GPIOPinConfigure(GPIO_PQ1_EPI0S21);//parallel flash
MAP_GPIOPinConfigure(GPIO_PQ2_EPI0S22);//parallel flash
MAP_GPIOPinConfigure(GPIO_PQ3_EPI0S23);//parallel flash
MAP_GPIOPinConfigure(GPIO_PK7_EPI0S24);
MAP_GPIOPinConfigure(GPIO_PK6_EPI0S25);
MAP_GPIOPinConfigure(GPIO_PL4_EPI0S26);//cs0 parallel flash
MAP_GPIOPinConfigure(GPIO_PB2_EPI0S27);//cs1 sram
MAP_GPIOPinConfigure(GPIO_PB3_EPI0S28);//rd
MAP_GPIOPinConfigure(GPIO_PN2_EPI0S29);//wr
MAP_GPIOPinConfigure(GPIO_PN3_EPI0S30);//ale
MAP_GPIOPinConfigure(GPIO_PK5_EPI0S31);//clock
MAP_GPIOPinConfigure(GPIO_PL5_EPI0S33);//cs3 cpld
MAP_GPIOPinTypeEPI(GPIO_PORTA_BASE, (GPIO_PIN_7 | GPIO_PIN_6));
MAP_GPIOPinTypeEPI(GPIO_PORTB_BASE, (GPIO_PIN_2 | GPIO_PIN_3));
MAP_GPIOPinTypeEPI(GPIO_PORTC_BASE, (GPIO_PIN_7 | GPIO_PIN_6 | GPIO_PIN_5 |
GPIO_PIN_4));
MAP_GPIOPinTypeEPI(GPIO_PORTG_BASE, (GPIO_PIN_1 | GPIO_PIN_0));
MAP_GPIOPinTypeEPI(GPIO_PORTH_BASE, (GPIO_PIN_3 | GPIO_PIN_2 | GPIO_PIN_1 |
GPIO_PIN_0));
MAP_GPIOPinTypeEPI(GPIO_PORTK_BASE, (GPIO_PIN_5 |GPIO_PIN_6 |GPIO_PIN_7));
MAP_GPIOPinTypeEPI(GPIO_PORTL_BASE, (GPIO_PIN_5| GPIO_PIN_4 | GPIO_PIN_3 | GPIO_PIN_2 | GPIO_PIN_1 |
GPIO_PIN_0));
MAP_GPIOPinTypeEPI(GPIO_PORTM_BASE, (GPIO_PIN_3 | GPIO_PIN_2 | GPIO_PIN_1 |
GPIO_PIN_0));
MAP_GPIOPinTypeEPI(GPIO_PORTP_BASE, (GPIO_PIN_3 | GPIO_PIN_2));
MAP_GPIOPinTypeEPI(GPIO_PORTQ_BASE, (GPIO_PIN_3 | GPIO_PIN_2 |GPIO_PIN_1 |GPIO_PIN_0));
MAP_GPIOPinTypeEPI(GPIO_PORTN_BASE, (GPIO_PIN_3 | GPIO_PIN_2));
/* Enable the clock to the EPI and wait for it to be ready*/
MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_EPI0);
while(!(MAP_SysCtlPeripheralReady(SYSCTL_PERIPH_EPI0)))
{
}
//10MHZ EPI clock
MAP_EPIDividerCSSet(EPI0_BASE,3,10);
MAP_EPIModeSet(EPI0_BASE, EPI_MODE_HB16);
EPIConfigHB16Set(EPI0_BASE,
EPI_HB16_MODE_ADMUX | // sets up data and address as separate, D[15:0].
EPI_HB16_WRWAIT_1 | //EPI_HB16_WRWAIT_1 write wait 4 EPI clocks
EPI_HB16_RDWAIT_1 | // read wait 4 EPI clocks
EPI_HB16_CSCFG_ALE_QUAD_CS|,// WHILE TESTING WITH cpld and uc connected via jumper, use EPI_HB16_CSCFG_QUAD_CS
EPI_HB16_ALE_HIGH
0);
EPIAddressMapSet(EPI0_BASE,
EPI_ADDR_PER_SIZE_64KB |
//EPI_ADDR_PER_BASE_C // set base to 0xC0000000
EPI_ADDR_QUAD_MODE //maps CS0n to 0x60000000, CS1n to 0x80000000, CS2n to 0xA0000000, and CS3n to 0xC0000000
);
static volatile uint16_t *CPLD16bitAddrPointer= (uint16_t *)0xC0000000;
CPLD16bitAddrPointer[MCU_REG_START_ADDRESS+1]= 0xDEAD;
CPLD16bitAddrPointer[MCU_REG_START_ADDRESS+3]= 0xAAAA;
I want to control the ALE pin manually, is this possible?
Is there any example project that works with Latch enable?


