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.

OMAPL138 on 456 MHz

Other Parts Discussed in Thread: OMAPL138, OMAP-L138

Hi Guys,

I would like to let the OMAPL138 (using the ARM only) run at 456 MHz as opposed to the 'default' 300 MHz. I have the appropriate gel-files to do this and I can get it to run at the desired speed. However, when running at 456 MHz my UART (interrupt) does not work anymore. Does anybody know whether I have to change anything else?

 

Thanks in advance!

Best,
Jeroen

 

  • Hi Jeroen,

    Are you saying the UART is working only the interrupt is not generated? Or the UART it’s self is not working?

    In the case of UART is not working please check is there any change in SYSCLK2 frequency when you bump up the frequency from 300 MHz to 456 MHz, because the UART baud rate is depends upon SYSCLK2 frequency.

    When you change the CPU clock frequency from 300 MHz to 456 MHz, you need to change the CPU core voltage from 1.2 to 1.3V, hope you have done this.

    Please use our PLL calculator tool to see is there any change in other SYSCLKn, when you change the CPU operating frequency

    http://processors.wiki.ti.com/index.php/File:SYS_CLK_CALC_OMAP-L138_C674X_AM18X_v1p0.zip

    Regards

    Antony

    ----------------------------------------------------------------------------------------------------------------

    Please click the "Verify Answer" button on this post if it answers your question.

  • Hi Jeroen,

    What software are you using ?

    For OMAPL138 LCDK board, the u-boot is booting at 456MHz frequency only so it is possible to work UART2 at 456MHz.

    If it is starterware code,
    We may need to modify the "SOC_SYSCLK_1_FREQ" for 456MHz frequency in "soc_OMAPL138.h" file since UART module clock is derived from SYSCLK2.

    #define SOC_SYSCLK_1_FREQ (456000000)

    #define SOC_SYSCLK_2_FREQ (SOC_SYSCLK_1_FREQ/2)

    #define SOC_UART_2_MODULE_FREQ (SOC_SYSCLK_2_FREQ)

    /* Configuring the UART parameters*/
    UARTConfigSetExpClk(SOC_UART_2_REGS, SOC_UART_2_MODULE_FREQ,
    BAUD_115200, config,
    UART_OVER_SAMP_RATE_16);

    In LCDK board, we have a option for 456MHz frequency setting in gel file.

    In CCS after loaded the code through emulator and after initialized the gel file.

    scripts -> Frequency Settings -> Core_456MHz_mDDR_150MHz

    C:\ti\ccsv5\ccs_base\emulation\boards\lcdkomapl138\gel\OMAP-L138_LCDK.gel

    I've done this and able to get the interrupts but got some junk prints that we need check, it could be the problem of divisor config etc.,
  • Hi guys,

    Thanks for your quick response (and sorry for my late response, very busy here), that's highly appreciated.

    For your info: I am using both UART1 and UART2, interrupt based. I am working with Starterware and see SOC_SYSCLK_1_FREQ in soc_OMAPL138.h indeed being defined hardcoded as 300000000. I can modify these values following your instructions but I presume I then must recompile all libraries that are per default included? If this is the case, how do I do this?

    Note that I still find it awkward that it is hardcoded at 300000000 MHz though OMAP datasheets indicate the OMAP is running at 375/456 MHz as opposed to 300 MHz... 

     

    Best regards,

    Jeroen

     

  • Anybody there still..?

     

    Best,
    Jeroen

  • Hi Jeroen,

    You can import the following CCS projects and rebuild everything.

    C:\ti\OMAPL138_StarterWare_1_10_04_01\build\armv5\cgt_ccs\omapl138\system_config

    C:\ti\OMAPL138_StarterWare_1_10_04_01\build\armv5\cgt_ccs\omapl138\drivers

    C:\ti\OMAPL138_StarterWare_1_10_04_01\build\armv5\cgt_ccs\omapl138\lcdkOMAPL138\platform

    C:\ti\OMAPL138_StarterWare_1_10_04_01\build\armv5\cgt_ccs\omapl138\lcdkOMAPL138\uart

    Also, you can check the CCS properties of UART project for what are all the libraries used.

    I hope the above mentioned projects are sufficient to rebuild.

    Please try it and let me know.
  • Hi Titus,

    That seems to help. I am able to run the UART example with the higher clock speed using the 456 MHz gel file. I presume this then will work for UART1 as well right?

    Then my last question is: how can I configure the OMAP to run at 456 MHz when putting my application in SPI1 Flash. I know I need to generate a different bootloader using AISgen but which settings (probably PLL) do I have to use/select?

    Thanks,
    Jeroen
  • Hi Jeroen,
    Yes, it would work UART1 as well.

    You have to configure the OMAP to 456MHz when we do AIS conversion (AISgen tool) of the .out
    Yes, we have to configure the divider and multiplier for PLLC0 to operate OMAP at 456 MHz.
    You can also refer to the gel file for divider and multiplier.

    device_PLL0(0,18,0,0,1,18,5);//PLLM = 18, POSTDIV=0 {24MHz * (18+1) / (1+0) = 456}
  • Hi Titus,

    Ok great, I'll dive into that today, but before that, I see the UART example is NOT working with the higher clock speed when I run the UART(s) at 3 Mbit/s. This is a requirement for my application. Is there anything more I should set?

    Best,
    Jeroen
  • FYI, not working means: I receive data, but crappy data.
  • UART is working good below 3Mbit/s at 456MHz ?
  • Yeah at least for 115.2 and 460.8 kBit/s the data is ok. I tested for 3Mbit/s and 1.5 Mbit/s and both give crappy data; not a single incorrect character but just complete Chinese ;)
  • Able to work with UART at 3Mbit/s when we use 300MHz (default) ?

    Could you refer to the following TI E2E post.

    e2e.ti.com/.../59426
  • Yes it is. Application is finished and running at 3Mbit/s UART speed but I just want to increase clock speed to 456 MHz now. Your link does not add any relevant info.
  • Jeroen,

    You need to set the proper divisor value in the 8-bit register fields (DLH and DLL), called divisor latches in the UART register space to achieve the desired baud rate , more over UART1/2 input clock is sourced by PLL0 SYSCLK2 or PLL1 SYSCLK2 . You’ve option to select these in the CFGCHIP3 [ASYNC3_CLKSRC], first check which clock source you’re using PLL0 SYSCLK2 or PLL1 SYSCLK2.

      

    Once you know the source (PLL0 or PLL1) and input clock frequency (SYSCLK2) and desired baud rate (3 Mbit/s) you can find the divisor value using the below formula.

    You can find the examples for 150 MHz UART input clock for different baud rate with the corresponding divisor value in page no 1487 / OMAP-L138 Technical reference manual

    You can use the PLL calculator to calculate these values too…

    http://processors.wiki.ti.com/index.php/File:SYS_CLK_CALC_OMAP-L138_C674X_AM18X_v1p0.zip

    Please let us know if you need any help further

    Regards

    Antony

    ----------------------------------------------------------------------------------------------------------------

    Please click the "Verify Answer" button on this post if it answers your question.