Other Parts Discussed in Thread: SYSCONFIG
Tool/software:
Hello,
I’m working on a project using the TMS320F280049C MCU and I’ve encountered an unexpected behavior with one of the GPIO pins. In my application, I am controlling GPIO22, GPIO15, and GPIO14 using the GPADAT register with a 2D array and an index as follow:
GpioDataRegs.GPADAT.bit.GPIO22 = muxStates[currentMuxIndex][0];
GpioDataRegs.GPADAT.bit.GPIO15 = muxStates[currentMuxIndex][1];
GpioDataRegs.GPADAT.bit.GPIO14 = muxStates[currentMuxIndex][2];
With this code, either GPIO14 or GPIO15 (I can't recall exactly which one) behaves incorrectly. The pin goes HIGH as expected but remains HIGH for only ~20ns instead of the expected 10 µs. Interestingly, GPIO22 behaves correctly, and no such issue occurs with that pin.
When I change the GPIO assignment order like this, the issue seems to disappear:
GpioDataRegs.GPADAT.bit.GPIO15 = muxStates[currentMuxIndex][1];
GpioDataRegs.GPADAT.bit.GPIO22 = muxStates[currentMuxIndex][0];
GpioDataRegs.GPADAT.bit.GPIO14 = muxStates[currentMuxIndex][2];
I guess setting adjacent GPIO causes some digital signal conflict but this is a quite rough guess.
I configured all the GPIO pin from sysconfig with fallowing settings:
Any explanation would be highly appreciated.
Thanks,
Gökhan