在uboot中添加logo,lvds接口的lcd显示不正常,出现波动。网上说是lvds时钟频率的问题。

使用示波器测量之后,发现频率是60M,而lcd最大频率才46.8M。

因此就需要更改uboot中lvds的时钟,本文介绍lvds的时钟配置。

参考链接:

  https://community.nxp.com/docs/DOC-172312

  https://community.nxp.com/docs/DOC-93617

  https://community.nxp.com/thread/306801

  https://community.nxp.com/thread/355690

  https://community.nxp.com/thread/378887

  https://community.nxp.com/thread/305115

  https://community.nxp.com/thread/395103

原理分析

datasheet: IMX6SDLRM

imx6 使用了2个晶振:

  外部低频时钟: 32kHz or 32.768kHz

  外部高频时钟: 24MHz

LVDS的时钟就是图中LDB_DI0_IPU和LDB_DI0_IPU

18.5.1.3 PLL reference clock

There are several PLLs in this chip.
PLL1 - ARM PLL (typical functional frequency 800 MHz)
PLL2 - System PLL (functional frequency 528 MHz)
PLL3 - USB1 PLL (functional frequency 480 MHz)
PLL4 - Audio PLL
PLL5 - Video PLL
PLL6 - ENET PLL
PLL7 - USB2 PLL (functional frequency 480 MHz)
PLL8 - MLB PLL

18.5.1.3.1 ARM PLL

This PLL synthesizes a low jitter clock from a 24 MHz reference clock. The clock output
frequency for this PLL ranges from 650 MHz to 1.3 GHz. The output frequency is
selected by a 7-bit register field CCM_ANALOG_PLL_ARM[DIV_SELECT].
PLL output frequency = Fref * DIV_SEL/2

CCM_ANALOG_PLL_ARM寄存器

根据寄存器计算:pll0输出范围

  24M * 54 / 2 = 648M

  24M * 108 / 2 = 1296M

18.5.1.3.3 System PLL

This PLL synthesizes a low jitter clock from the 24 MHz reference clock. The PLL has
one output clock, plus 3 PFD outputs. The System PLL supports spread spectrum
modulation for use in applications to minimize radiated emissions. The spread spectrum
PLL output clock is frequency modulated so that the energy is spread over a wider
bandwidth, thereby reducing peak radiated emissions. Due to this feature support, the
associated lock time of this PLL is longer than other PLLs in the SoC that do not support
spread spectrum modulation.
......
Although this PLL does have a DIV_SELECT register field, it is intended that this PLL
will only be run at the default frequency of 528 MHz.

Analog System PLL Control Register

  24M * 20 = 480M

  24M * 22 = 528M

18.5.1.4 Phase Fractional Dividers (PFD)

There are several PFD outputs from the System PLL and USB1 PLL.
Each PFD output generates a fractional multiplication of the associated PLL’s VCO
frequency. Where the output frequency is equal to Fvco*18/N, N can range from 12-35.
The PFDs allow for clock frequency changes without forcing the relock of the root PLL.
This feature is useful in support of dynamic voltage and frequency scaling (DVFS). See
CCM Analog Memory Map/Register Definition.

频率最小值:

  480M * 18 / 35 = 246M

  246M / 7 = 35M

代码更改

board/freescale/mx6q_sabresd/mx6q_sabresd.c

void lcd_enable(void)
{......
#elif defined CONFIG_MX6DL /* CONFIG_MX6Q *//** IPU1 HSP clock tree:* osc_clk(24M)->pll3_usb_otg_main_clk(480M)->* pll3_pfd_540M(540M)->ipu1_clk(270M)*//* pll3_usb_otg_main_clk *//* divider */writel(0x3, ANATOP_BASE_ADDR + 0x18);/* pll3_pfd_540M *//* divider */writel(0x3F << 8, ANATOP_BASE_ADDR + 0xF8);writel(0x10 << 8, ANATOP_BASE_ADDR + 0xF4);/* enable */writel(0x1 << 15, ANATOP_BASE_ADDR + 0xF8);/* ipu1_clk */reg = readl(CCM_BASE_ADDR + CLKCTL_CSCDR3);/* source */reg |= (0x3 << 9);/* divider */reg &= ~(0x7 << 11);reg |= (0x1 << 11);writel(reg, CCM_BASE_ADDR + CLKCTL_CSCDR3);/** ipu1_pixel_clk_x clock tree:* osc_clk(24M)->pll2_528_bus_main_clk(528M)->* pll2_pfd_352M(452.57M)->ldb_dix_clk(64.65M)->* ipu1_di_clk_x(64.65M)->ipu1_pixel_clk_x(64.65M)*//* pll2_528_bus_main_clk *//* divider *///Tony
//1. ----------  将pll2由528M更改为480M    ------------------reg = readl(ANATOP_BASE_ADDR + 0x34);  reg &= ~(1 << 0);                      // 24M * 20 = 480Mwritel(reg, ANATOP_BASE_ADDR + 0x34);//writel(0x1, ANATOP_BASE_ADDR + 0x34); // 24M * 22 = 528M/* pll2_pfd_352M *//* disable */writel(0x1 << 7, ANATOP_BASE_ADDR + 0x104);/* divider */
//2. ---------更改分频参数为35.  480 * 18 / 35 = 246M ----------writel(0x3F, ANATOP_BASE_ADDR + 0x108);writel(0x23, ANATOP_BASE_ADDR + 0x104);//原来设置 528M * 18 / 21 = 452.57M
//  writel(0x3F, ANATOP_BASE_ADDR + 0x108);
//  writel(0x15, ANATOP_BASE_ADDR + 0x104);/* ldb_dix_clk *//* source */
//3. --------- 选择时钟源, pll2_pfd0 -----------//ldb_di1_clk_sel Selector for ldb_di1 clock multiplexer//NOTE: Multiplexor should be updated when both input and output clocks are gated.//000 pll5 clock//001 derive clock from PLL2 PFD0//010 derive clock from PLL2 PFD2//011 derive clock from mmdc_ch1 clock//100 derive clock from pll3_sw_clk//101-111 Reservereg = readl(CCM_BASE_ADDR + CLKCTL_CS2CDR);reg |= (0x9 << 9);writel(reg, CCM_BASE_ADDR + CLKCTL_CS2CDR);/* divider */reg = readl(CCM_BASE_ADDR + CLKCTL_CSCMR2);reg |= (0x3 << 10);writel(reg, CCM_BASE_ADDR + CLKCTL_CSCMR2);/* pll2_pfd_352M *//* enable after ldb_dix_clk source is set */writel(0x1 << 7, ANATOP_BASE_ADDR + 0x108);//ipu1 di1 root clock multiplexer : derive clock from ldb_di1_clk//ipu1 di0 root clock multiplexer : derive clock from ldb_di0_clkreg = readl(CCM_BASE_ADDR + CLKCTL_CHSCCDR);reg &= ~0xE07;reg |= 0x803;//ipu1 di1 root clock multiplexer : derive clock from ldb_di1_clk//ipu1 di0 root clock multiplexer : derive clock from ldb_di0_clkwritel(reg, CCM_BASE_ADDR + CLKCTL_CHSCCDR);
#endif  /* CONFIG_MX6DL */......

Author

Tony Liu

2016-8-23, Shenzhen

imx6 uboot lvds clock相关推荐

  1. imx6 uboot splash image

    跟踪uboot代码,了解imx6 splash image的生成过程. 涉及文件: ./cpu/arm_cortexa8/start.S ./board/freescale/mx6q_sabresd/ ...

  2. 紫枫术河 imx6 uboot的mtd分区总结(rootfs为ubi文件系统) imx6 uboot的mtd分区总结(rootfs为ubi文件系统)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_29729577/article/details/51130209 此文章基于U-Boot 20 ...

  3. imx6调试Lvds屏幕技术笔记

    打开相对应的设备树文件 mxcfb1: fb@0 {compatible = "fsl,mxc_sdc_fb";disp_dev = "ldb";//显示设备i ...

  4. imx6 u-boot 启动 Can't find PMIC:PFUZE100

    最近在将imx官方源码imx-4.1-krogoth里面的u-boot移植到一个淘宝开发板的过程中,遇到了u-boot启动时提示错误:Can't find PMIC:PFUZE100 原因如下: 淘宝 ...

  5. uboot readme

    前面是 Uboot 的发展,下载地址,如何获得帮助,以及版本说明 Directory Hierarchy: 目录层次 ==================== - board          Boa ...

  6. ITE联阳半导体 HDMI2.0b/MHL2.2转LVDS芯片 支持3D

    IT68052:HDMI 2.0b/MHL2.2转LVDS芯片 1. Features   Dual port HDMI2.0b Receiver   Support 2 HDMI1.4/HDMI2. ...

  7. SSC 扩频时钟技术(0)

    何谓SSC??? 展频spread spectrum(SSC),所有会产生频率信号的电子组件都是潜在的电磁干扰( EMI )源,这些信号将会影响如收音机.电视或者移动电话等电子产品的正常运作.SSC让 ...

  8. imx6 LCD 参数配置(lvds为例)

    目前imx6的BSP开发中,lvds的参数配置一般在两个地方:  1. uboot的CMDLINE的参数设置,形如:  video=mxcfb0:dev=ldb,bpp=32  2. uboot板级代 ...

  9. 迅为IMX6开发板QT系统LVDS和HDMI双屏异显和同显

    本文档介绍如何在 iMX6 开发板下,QtE 系统中,实现 LVDS 和 HDMI 的双屏异显和同显. 首先开发板分别连接 9.7 寸屏和 HDMI 显示器,然后使用 MfgTool 工具烧写 QT ...

最新文章

  1. Windows Server 2008 R2 DNS 服务器迁移方法
  2. 复合索引的列顺序判断
  3. 我用 Python 帮朋友做了张图,结果
  4. logstash接收多台服务器日志_Logstash实践: 分布式系统的日志监控
  5. 前端学习(3274):js中this的使用三
  6. 基于密度的异常值检测方法整理
  7. 搭建GitLab+Jenkins持续集成环境图文教程
  8. 选择排序、插入排序、冒泡排序、希尔排序算法的总结 - 复杂度、实现和稳定性
  9. 系统新模块增加需要哪些步骤_防锈高效型干式地暖模块解决了装修施工配合的哪些难点?...
  10. hbase1.1.1 连接集群_HBase-1.0.1学习笔记(一)集群搭建
  11. AXD+H-JTAG环境搭建总结
  12. 安卓开发监听外部蓝牙设备断开_这软件能让你的蓝牙耳机,用上 AirPods 的功能...
  13. win11虚拟机如何安装 Windows11虚拟机安装步骤教程
  14. 测试原理_耐压测试仪绝缘电阻测试仪基本原理与选用
  15. 下载faceScrub人脸数据库 (多线程版本)
  16. win10无法执行vbs脚本
  17. 电务段子系统网络管理服务器,CSM-TD铁路电务管理信息系统
  18. 麦克马斯特计算机工程专业,麦克马斯特大学电气与计算机工程申请要求
  19. L. Spicy Restaurant
  20. 手绘地图深度解析:类型、风格、功能、价值、制作流程、智慧导览

热门文章

  1. TFS数据库变成可疑状态的处理
  2. 不要活在别人的生活里(摘自开复网)
  3. Singleton模式学习
  4. vss6 forgot admin password
  5. nohup 输出日志到文件_超详细的EFK安装部署教程--filebeat日志数据采集
  6. hdu4403暴力搜索
  7. hdu3594 强连通 tarjan
  8. 如何修改markdown中图片的大小
  9. 【C 语言】内存四区原理 ( 常量区示例 | 不同函数返回的相同字符串的指针地址相同 )
  10. 【Java 虚拟机原理】Class 字节码二进制文件分析 三 ( 访问和修饰标志 | 类索引 | 父类索引 | 接口计数器 | 接口表 | 字段计数器 | 字段表 )