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.

Port A Pin 0 (PA0) voltage low is too high

Other Parts Discussed in Thread: EK-TM4C1294XL

Hello,

Dev board: EK-TM4C1294XL 

Tiva™ C Series TM4C1294 Connected
LaunchPad Evaluation Kit

I'm trying to configure Port A Pins 0 - 7 to be used as GPIO pins for an LCD Driver. However, I cannot seem to configure Port A Pin 0 correctly. When the port clock is turned off, the pin still reads 3.3V. When the port clock is turned on and the pin is set to low, the voltage is 1.89V (spec says 0.4V Max for Vlow). All the other pins read close to 0V, apart from PA0.

I have checked through the datasheet, and there's no special mention of PA0 being used for anything else. Here is an outline of the code I'm using (I'm using the driverlib API):

Why is PA0 not behaving like the other pins?

#define DBUS GPIO_PORTA_AHB_BASE
#define DB0 GPIO_PIN_0
#define DB1 GPIO_PIN_1
#define DB2 GPIO_PIN_2
#define DB3 GPIO_PIN_3
#define DB4 GPIO_PIN_4
#define DB5 GPIO_PIN_5
#define DB6 GPIO_PIN_6
#define DB7 GPIO_PIN_7
#define DBALL (DB0 | DB1 | DB2 | DB3 | DB4 | DB5 | DB6 | DB7)

#define CTLPORT GPIO_PORTB_AHB_BASE
#define RS GPIO_PIN_4
#define EN GPIO_PIN_5

void setupLCD(void)
{
	SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);		//enable Port A clock
	SysCtlDelay(100);
	SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);		//enable Port B clock
	SysCtlDelay(100);
	GPIOPinTypeGPIOOutput(DBUS, DBALL);		//enable databus as outputs
	SysCtlDelay(100);
	GPIOPinTypeGPIOOutput(CTLPORT, RS | EN);

	GPIOPinWrite(DBUS, DBALL, 0);

}


  • Hi,

    Please read/inspect/verify also the electrical diagram of your board - port A pins 0 and 1 are used as UART and linked on board with the debugging microcontroller, so these pins are not free to use.

    Petrei

  • Hi,

    Thanks, missed that in the schematic.

    However, are the pins actually not free to use?

    Why can't I change the JP4 and JP5 to be vertical, thereby connecting the ICDI to UART2 (or is it UART4? the schematic and description have a discrepancy*)?

    I am not using a booster pack.

    *Document I'm referring to is SPMU365A.

    Thanks

  • Hi,

    As you can see in the electrical diagram, those pins are not free to be used. It is recommended to use another free port. Think about when you make a PCB - can you satisfy at once all possible combinations of all possible users? Think not, so you must make a compromise - block several pins while the others are free. 

    Petrei

  • Hi,

    Your answer is confusing - Yes, you cannot satisfy all combinations at once. Therefore, isn't that the reason there are jumpers instead of solid connections?

    The electrical diagram shows that PA0/PA1 and PD4/PD5 can be routed two different ways, and it states

    "JP4 and JP5 CAN and ICDI UART Selection:

    Populate Jumpers from 1-2 and 3-4 for Default Mode
    This enables ROM UART boot loader. UART 0 to ICDI
    Populate from 1-3 and 2-4 for controller area network
    on the boosterpack. UART2 is then availabe to ICDI."

    As I said before, I am not using a booster pack. Therefore, PA0/1 will be routed (via X6-9/X6-11 which connect to nothing) to X11-74/X11-76. If I need to use the virtual COM functionality, can't I do with UART2 instead?

    What's the issue with doing that? 

  • Hi,

    Yes, with that connections you can use the UART2 instead.

    Petrei