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.

GPIO 114 & 115 configuration

Other Parts Discussed in Thread: TPS65950, OMAP3525

Hi,

I am using OMAP3525 CBB in my hardware, i am trying to configure pads AG18(CSI2_DX1/GPIO_114), and AH18(CS12_DY1/GPIO_115) as gpio's. While doing so, i cant able to toggle those pins. Kindly clarify whether we need to do any additional register configuration as we did for Gpio 120 to 129. I have enabled all the power's in TPS65950 power companion chip.

here is my configuration

*(volatile unsigned int *)0x48002138 = 0x011C011C;

 *(volatile unsigned int *)0x49054034 &= ~(0x12 | 0x13); 

while(1)  {

*(volatile unsigned int *)0x4905403C |= (0x12 | 0x13); 

_asm("nop");

_asm("nop");

*(volatile unsigned int *)0x4905403C &= ~(0x12 | 0x13); 

_asm("nop");

_asm("nop");

 }

Kindly reply

V.Yuvaraj

 

 

 

  • Hi V. Yuvaraj,

    Nothing special should be needed with respect to GPIO114 and GPIO115. Looking at your code the structure seems correct - Haven't checked, that you are accessing the right GPIO block and registers though, but you have one mistake:

    Instead or using (0x12 |  0x13) you should use ((1<<18) | (1<<19)) to access GPIO 18 and 19 (= GPIO96+18=114 and GPIO96+19=115) in GPIO block 4. You are currently modifying GPIO 0, 1 and 4 in the given block...[:)]

     Good luck
       Søren 

  • Hi Soren,

    Thanks for you reply, I have changed the code, even on this condition it is not toggling. i have changed the code as given below.

    *(volatile unsigned int *)0x48002138 = 0x011C011C;

     *(volatile unsigned int *)0x49054034  &=  ~(  (1 << 18) | (1<< 19)  );

    while(1)  {

    *(volatile unsigned int *)0x4905403C  |= (  (1 << 18) | (1<< 19)  ); 

    _asm("nop");

    _asm("nop");

    *(volatile unsigned int *)0x4905403C &= ~ ( (1 << 18) | (1<< 19)  );

    _asm("nop");

    _asm("nop");

     }

    But i found a difference in my hardware is, that instead of giving VPLL2 supply from TPS65950 chip, VIO supply (both are 1.8V) is given. Will this cause any prob in toggling the gpio's?
    I have enabled CSI2_96 FCLK and ICLK aso in OMAP side.

    Thanks and Regards

    V. Yuvaraj

  • Digged a little more in this and - Aha - Found the problem - And it's unfortunately not good news. [:(]

    The pins can correctly be used in GPIO-mode, but only as inputs. I guess this because of their main function - CSI2 (not-supported in OMAP35x - Though) which is a high-speed-serial-bus-standard for MIPI-cameras, where the pins only need to be input. And adding more logic than necessary to a 800Mbps differential signal pair isn't that easy => It's left out...

    You can find this information in the OMAP3 Datasheet (http://focus.ti.com/lit/ds/symlink/omap3530.pdf) by searching for AH18 (which is the ball-name of GPIO115. In here you can see (In table 2-1, the 5th column), that the pin unfortunately only can be used as Input. I'm afraid you need to find some other pins for output. For input they should however be OK...

    Best regards - Good luck
      Søren

  • One of my friends came up with a brilliant idea for "solving" this issue in case you only need to drive a "relatively-high-impedance" load. In this case you can actually use the Pull-up/Pull-down resistors for driving the pin instead of the missing output driver. [:D]

    I gave it a try and it's working. Just configure the pin for input and enable the wanted pull-resistor, and the pin will follow high/low (assuming the resistor is strong enough to drive your load - Maximum 100uA according to the Datasheet).

    Good luck - I hope this helps you forward
      Søren


  • Hi Soren,

    Thanks for your help, I need to use that lines to drive very few uA current. Hope this solution helps me a lot.

    Regards,

    V.Yuvaraj

  • You are welcome and a few uA shouldn't be any problem...

    Remember: Cheating is OK as long it working and nobody is hurt [:)]
      Søren