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.

TMS320F28027: GPIO16 17always be high

Part Number: TMS320F28027


hello,here is my initialization program,gpio4 can be set to low ,but GPIO16,17 always be high,i don't known why?

EALLOW;
GpioCtrlRegs.GPAQSEL1.all = 0x0000; // GPIO0-GPIO15 Synch to SYSCLKOUT
GpioCtrlRegs.GPAMUX1.all = 0x0000; // GPIO functionality GPIO16-GPIO31


GpioCtrlRegs.GPAMUX2.all = 0x0000; // GPIO functionality GPIO16-GPIO31
GpioCtrlRegs.GPADIR.all = 0xFFFF; // GPIO0-GPIO31 are GP OUTputs
GpioCtrlRegs.GPAQSEL2.all = 0x0000; // GPIO16-GPIO31 Synch to SYSCLKOUT
GpioDataRegs.GPADAT.all = 0xFFFFFFFF; //GPIO0-GPIO31 initial value are 0

GpioCtrlRegs.GPBMUX1.all = 0x0000; // GPIO functionality GPIO32-GPIO34
GpioCtrlRegs.GPBDIR.all = 0xFFFF; // GPIO32-GPIO34 are OUTputs
GpioCtrlRegs.GPBQSEL1.all = 0x0000; // GPIO32-GPIO34 Synch to SYSCLKOUT
GpioDataRegs.GPBDAT.all = 0xFFFFFFFF; //GPIO0-GPIO31 initial value are 0

GpioCtrlRegs.GPAPUD.all = 0xFFFF; // Pullup's disabled GPIO0-GPIO31
GpioCtrlRegs.GPBPUD.all = 0xFFFF; // Pullup's disabled GPIO32-GPIO34

GpioDataRegs.GPACLEAR.bit.GPIO4 = 1;
GpioDataRegs.GPACLEAR.bit.GPIO16 = 1;
GpioDataRegs.GPACLEAR.bit.GPIO17 = 1;

EDIS;

  • Hi Seven,

    Try following configuration :

    Eallow;
    
    //Setting-up GPIO16 as Output
    GpioCtrlRegs.GPAMUX2.bit.GPIO16 = 0;  // GPIO16 = GPIO16
    GpioCtrlRegs.GPADIR.bit.GPIO16 = 1;   // GPIO16 = output
    
    //Setting-up GPIO17 as Output
    GpioCtrlRegs.GPAMUX2.bit.GPIO17 = 0;  // GPIO17 = GPIO17
    GpioCtrlRegs.GPADIR.bit.GPIO17= 1;   // GPIO17 = output
    
    Edis;
    
    GpioDataRegs.GPACLEAR.bit.GPIO16 = 1;
    GpioDataRegs.GPACLEAR.bit.GPIO17 = 1;

    Regards,

    Gautam

  • Seven,

    Take care to match your write data with the register sizes.

    For example, GPADIR is 32-bits, but you are writing a 16-bit value to it. It would also be advisable to explicitly (Uint32) cast 32-bit values to prevent the compiler from truncating your MSW.

    -Tommy