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.

TM4C123GE6PZI Ports J, K

Hello!

I use TM4C123GE6PZI, date code 47 ANPYW.

The problem is that I can't configure ports J and K. Other ports (A to H) are works fine.

Here is my code:

extern void HardFault_Handler()
{
}

void delay()
{
		uint32_t j;
		for (j=0;j<100;j++);
}

void initPort(GPIOA_Type * portAddress)
{
		// unlock GPIOCR registers to write (commit)
		portAddress->LOCK = 0x4C4F434B;
		portAddress->CR = 0xFF;
		portAddress->DIR = 0xFF;
		portAddress->ODR = 0x0;
		portAddress->PUR = 0x0;
		portAddress->PDR = 0x0;
		portAddress->AFSEL = 0;
		portAddress->AMSEL = 0;
		portAddress->ADCCTL = 0;
		portAddress->DMACTL = 0;
		portAddress->PCTL = 0;
		portAddress->DR8R = 0xFF;
		portAddress->DEN = 0xFF;
}


int main()
{	
		SYSCTL->GPIOHBCTL |= 0xFF;
		SYSCTL->RCGCGPIO = 0xFF;
	
		initPort(GPIOA_AHB);
		initPort(GPIOB_AHB);
		#if !DEBUG
		initPort(GPIOC_AHB);
		#endif
		initPort(GPIOD_AHB);
		initPort(GPIOE_AHB);
		initPort(GPIOF_AHB);
		initPort(GPIOG_AHB);
		initPort(GPIOH_AHB);
		initPort(GPIOJ_AHB);
		initPort(GPIOK);
		
		while (1)
		{
				GPIOA_AHB->DATA = 0xAA;
				GPIOB_AHB->DATA = 0xAA;
				GPIOC_AHB->DATA = 0xAA;
				GPIOD_AHB->DATA = 0xAA;
				GPIOE_AHB->DATA = 0xAA;
				GPIOF_AHB->DATA = 0xAA;
				GPIOG_AHB->DATA = 0xAA;
				GPIOH_AHB->DATA = 0xAA;
				GPIOJ_AHB->DATA = 0xAA;
				GPIOK->DATA = 0xAA;
			
				delay();
			
				GPIOA_AHB->DATA = 0x55;
				GPIOB_AHB->DATA = 0x55;
				GPIOC_AHB->DATA = 0x55;
				GPIOD_AHB->DATA = 0x55;
				GPIOE_AHB->DATA = 0x55;
				GPIOF_AHB->DATA = 0x55;
				GPIOG_AHB->DATA = 0x55;
				GPIOH_AHB->DATA = 0x55;
				GPIOJ_AHB->DATA = 0x55;
				GPIOK->DATA = 0x55;
			
				delay();
			
				GPIOA_AHB->DATA = 0x00;
				GPIOB_AHB->DATA = 0x00;
				GPIOC_AHB->DATA = 0x00;
				GPIOD_AHB->DATA = 0x00;
				GPIOE_AHB->DATA = 0x00;
				GPIOF_AHB->DATA = 0x00;
				GPIOG_AHB->DATA = 0x00;
				GPIOH_AHB->DATA = 0x00;
				GPIOJ_AHB->DATA = 0x00;
				GPIOK->DATA = 0x00;
				
				delay();
				
				GPIOA_AHB->DATA = 0xFF;
				GPIOB_AHB->DATA = 0xFF;
				GPIOC_AHB->DATA = 0xFF;
				GPIOD_AHB->DATA = 0xFF;
				GPIOE_AHB->DATA = 0xFF;
				GPIOF_AHB->DATA = 0xFF;
				GPIOG_AHB->DATA = 0xFF;
				GPIOH_AHB->DATA = 0xFF;
				GPIOJ_AHB->DATA = 0xFF;
				GPIOK->DATA = 0xFF;
				
				delay();
		}
}

When I debug from Keil with ULINK2 I see, that any write to registers in function 'initPort' for GPIOJ_AHB or GPIOJ or GPIOK causes HardFault Exception. And the programm freezes if I don't use the function 'HardFault_Handler', that just do nothing and make return from exception's call.

So, ports J/K states as inputs.

May be I'm doing something wrong?

  • Hello Vitaliy

    The issue lies in the clock enable to the peripherals

    SYSCTL->RCGCGPIO = 0xFF;

    Ports J and K are corresponding to bits 8 and 9. So the actual function should be

    SYSCTL->RCGCGPIO = 0x3FF;
  • Oh, thank you very much! What a stupid mistake I made. Now all works.

    But there was another hardware problem. Maybe this question is not in your competence.

    I measured Vol on all GPIOs with IOL=8mA. And only on two pins PJ0 and PJ1 the voltage exceeds limits.

    Here is measurement results:

    Test 'Vol':    *** Failed ***
     LowLimit: 0.000 V,  HighLimit: 0.400 V,  Compliance: 1.000 V
     Chan   Pin     Name            Status          Forced          Measured
      75	35	PA7        	Passed  	8.000 mA 	260.738 mV
      73	34	PA6        	Passed  	8.000 mA 	260.738 mV
      90	31	PA5        	Passed  	8.000 mA 	265.715 mV
      77	30	PA4        	Passed  	8.000 mA 	260.738 mV
      92	29	PA3        	Passed  	8.000 mA 	265.715 mV
      91	28	PA2        	Passed  	8.000 mA 	265.715 mV
      94	27	PA1        	Passed  	8.000 mA 	265.715 mV
      76	26	PA0        	Passed  	8.000 mA 	260.738 mV
      22	91	PB5        	Passed  	8.000 mA 	270.692 mV
      20	92	PB4        	Passed  	8.000 mA 	270.692 mV
      52	73	PB3        	Passed  	8.000 mA 	265.715 mV
      38	72	PB2        	Passed  	8.000 mA 	265.715 mV
      56	71	PB1        	Passed  	8.000 mA 	265.715 mV
      37	70	PB0        	Passed  	8.000 mA 	265.715 mV
      30	83	PC2/TDI    	Passed  	8.000 mA 	270.692 mV
      12	82	PC3/TDO    	Passed  	8.000 mA 	265.715 mV
      28	85	PC0/TCK    	Passed  	8.000 mA 	270.692 mV
      26	84	PC1/TMS    	Passed  	8.000 mA 	270.692 mV
     100	22	PC7        	Passed  	8.000 mA 	260.738 mV
      98	23	PC6        	Passed  	8.000 mA 	260.738 mV
     102	24	PC5        	Passed  	8.000 mA 	260.738 mV
     116	25	PC4        	Passed  	8.000 mA 	265.715 mV
      21	100	PD7        	Passed  	8.000 mA 	265.715 mV
      23	99	PD6        	Passed  	8.000 mA 	270.692 mV
       4	98	PD5        	Passed  	8.000 mA 	265.715 mV
       6	97	PD4        	Passed  	8.000 mA 	265.715 mV
     108	4	PD3        	Passed  	8.000 mA 	265.715 mV
     107	3	PD2        	Passed  	8.000 mA 	265.715 mV
     110	2	PD1        	Passed  	8.000 mA 	265.715 mV
     125	1	PD0        	Passed  	8.000 mA 	260.738 mV
      25	90	PE7        	Passed  	8.000 mA 	270.692 mV
       5	89	PE6        	Passed  	8.000 mA 	270.692 mV
      24	96	PE5        	Passed  	8.000 mA 	270.692 mV
      19	95	PE4        	Passed  	8.000 mA 	270.692 mV
     105	12	PE3        	Passed  	8.000 mA 	265.715 mV
     124	13	PE2        	Passed  	8.000 mA 	265.715 mV
      99	14	PE1        	Passed  	8.000 mA 	260.738 mV
     104	15	PE0        	Passed  	8.000 mA 	260.738 mV
      45	58	PF7        	Passed  	8.000 mA 	260.738 mV
      93	36	PF6        	Passed  	8.000 mA 	265.715 mV
      89	37	PF5        	Passed  	8.000 mA 	265.715 mV
      84	39	PF4        	Passed  	8.000 mA 	265.715 mV
      88	43	PF3        	Passed  	8.000 mA 	265.715 mV
      67	42	PF2        	Passed  	8.000 mA 	260.738 mV
      69	41	PF1        	Passed  	8.000 mA 	260.738 mV
      72	40	PF0        	Passed  	8.000 mA 	260.738 mV
       7	88	PG7        	Passed  	8.000 mA 	270.692 mV
      10	87	PG6        	Passed  	8.000 mA 	275.668 mV
      53	75	PG5        	Passed  	8.000 mA 	265.715 mV
      55	74	PG4        	Passed  	8.000 mA 	270.692 mV
      59	59	PG3        	Passed  	8.000 mA 	265.715 mV
      60	60	PG2        	Passed  	8.000 mA 	270.692 mV
      61	61	PG1        	Passed  	8.000 mA 	265.715 mV
      58	62	PG0        	Passed  	8.000 mA 	265.715 mV
      13	76	PH7        	Passed  	8.000 mA 	265.715 mV
      31	77	PH6        	Passed  	8.000 mA 	265.715 mV
      27	78	PH5        	Passed  	8.000 mA 	265.715 mV
      29	79	PH4        	Passed  	8.000 mA 	265.715 mV
     117	19	PH3        	Passed  	8.000 mA 	260.738 mV
     103	18	PH2        	Passed  	8.000 mA 	260.738 mV
     115	17	PH1        	Passed  	8.000 mA 	265.715 mV
     101	16	PH0        	Passed  	8.000 mA 	260.738 mV
     109	11	PJ2        	Passed  	8.000 mA 	265.715 mV
      54	69	PJ1        	Failed  	8.000 mA 	410.037 mV
      40	68	PJ0        	Failed  	8.000 mA 	405.061 mV
      87	46	PK3        	Passed  	8.000 mA 	265.715 mV
      85	47	PK2        	Passed  	8.000 mA 	265.715 mV
      83	48	PK1        	Passed  	8.000 mA 	265.715 mV
      86	49	PK0        	Passed  	8.000 mA 	265.715 mV

    The same results are for all chips in the part.

    And the Voh is also a little bit lower than for other pins:

    Test 'Voh':    $ Passed $
     LowLimit: 2.400 V,  HighLimit: 3.150 V,  Compliance: 3.300 V
     Chan   Pin     Name            Status          Forced          Measured
      75	35	PA7        	Passed  	-8.000 mA 	2.830 V
      73	34	PA6        	Passed  	-8.000 mA 	2.830 V
      90	31	PA5        	Passed  	-8.000 mA 	2.825 V
      77	30	PA4        	Passed  	-8.000 mA 	2.830 V
      92	29	PA3        	Passed  	-8.000 mA 	2.825 V
      91	28	PA2        	Passed  	-8.000 mA 	2.825 V
      94	27	PA1        	Passed  	-8.000 mA 	2.825 V
      76	26	PA0        	Passed  	-8.000 mA 	2.830 V
      22	91	PB5        	Passed  	-8.000 mA 	2.775 V
      20	92	PB4        	Passed  	-8.000 mA 	2.780 V
      52	73	PB3        	Passed  	-8.000 mA 	2.795 V
      38	72	PB2        	Passed  	-8.000 mA 	2.805 V
      56	71	PB1        	Passed  	-8.000 mA 	2.800 V
      37	70	PB0        	Passed  	-8.000 mA 	2.805 V
      30	83	PC2/TDI    	Passed  	-8.000 mA 	2.775 V
      12	82	PC3/TDO    	Passed  	-8.000 mA 	2.785 V
      28	85	PC0/TCK    	Passed  	-8.000 mA 	2.770 V
      26	84	PC1/TMS    	Passed  	-8.000 mA 	2.770 V
     100	22	PC7        	Passed  	-8.000 mA 	2.830 V
      98	23	PC6        	Passed  	-8.000 mA 	2.830 V
     102	24	PC5        	Passed  	-8.000 mA 	2.830 V
     116	25	PC4        	Passed  	-8.000 mA 	2.825 V
      21	100	PD7        	Passed  	-8.000 mA 	2.795 V
      23	99	PD6        	Passed  	-8.000 mA 	2.790 V
       4	98	PD5        	Passed  	-8.000 mA 	2.795 V
       6	97	PD4        	Passed  	-8.000 mA 	2.790 V
     108	4	PD3        	Passed  	-8.000 mA 	2.800 V
     107	3	PD2        	Passed  	-8.000 mA 	2.800 V
     110	2	PD1        	Passed  	-8.000 mA 	2.795 V
     125	1	PD0        	Passed  	-8.000 mA 	2.795 V
      25	90	PE7        	Passed  	-8.000 mA 	2.770 V
       5	89	PE6        	Passed  	-8.000 mA 	2.770 V
      24	96	PE5        	Passed  	-8.000 mA 	2.790 V
      19	95	PE4        	Passed  	-8.000 mA 	2.790 V
     105	12	PE3        	Passed  	-8.000 mA 	2.820 V
     124	13	PE2        	Passed  	-8.000 mA 	2.820 V
      99	14	PE1        	Passed  	-8.000 mA 	2.825 V
     104	15	PE0        	Passed  	-8.000 mA 	2.825 V
      45	58	PF7        	Passed  	-8.000 mA 	2.815 V
      93	36	PF6        	Passed  	-8.000 mA 	2.825 V
      89	37	PF5        	Passed  	-8.000 mA 	2.825 V
      84	39	PF4        	Passed  	-8.000 mA 	2.825 V
      88	43	PF3        	Passed  	-8.000 mA 	2.825 V
      67	42	PF2        	Passed  	-8.000 mA 	2.830 V
      69	41	PF1        	Passed  	-8.000 mA 	2.825 V
      72	40	PF0        	Passed  	-8.000 mA 	2.825 V
       7	88	PG7        	Passed  	-8.000 mA 	2.755 V
      10	87	PG6        	Passed  	-8.000 mA 	2.750 V
      53	75	PG5        	Passed  	-8.000 mA 	2.790 V
      55	74	PG4        	Passed  	-8.000 mA 	2.790 V
      59	59	PG3        	Passed  	-8.000 mA 	2.810 V
      60	60	PG2        	Passed  	-8.000 mA 	2.810 V
      61	61	PG1        	Passed  	-8.000 mA 	2.810 V
      58	62	PG0        	Passed  	-8.000 mA 	2.810 V
      13	76	PH7        	Passed  	-8.000 mA 	2.795 V
      31	77	PH6        	Passed  	-8.000 mA 	2.790 V
      27	78	PH5        	Passed  	-8.000 mA 	2.790 V
      29	79	PH4        	Passed  	-8.000 mA 	2.790 V
     117	19	PH3        	Passed  	-8.000 mA 	2.825 V
     103	18	PH2        	Passed  	-8.000 mA 	2.825 V
     115	17	PH1        	Passed  	-8.000 mA 	2.820 V
     101	16	PH0        	Passed  	-8.000 mA 	2.825 V
     109	11	PJ2        	Passed  	-8.000 mA 	2.825 V
      54	69	PJ1        	Passed  	-8.000 mA 	2.626 V
      40	68	PJ0        	Passed  	-8.000 mA 	2.631 V
      87	46	PK3        	Passed  	-8.000 mA 	2.825 V
      85	47	PK2        	Passed  	-8.000 mA 	2.825 V
      83	48	PK1        	Passed  	-8.000 mA 	2.825 V
      86	49	PK0        	Passed  	-8.000 mA 	2.825 V

    I measure Vol and Voh with Vdd=Vdda=3.15V, Vddc=1.08V

  • Hello Vitaliy

    VDDC being 1.08V is not correct. Under nominal operation the VDDC must be 1.2V
  • Hello Vitaliy,

    What was the issue? Can you please elaborate?