Home

cubie.cc CubieBoard中文论坛

 找回密码
 立即注册
搜索
热搜: unable
查看: 120|回复: 1

CB6 移植 CubieScreen 笔记

[复制链接]

34

主题

4

好友

1万

积分

超级版主

Rank: 8Rank: 8

贡献
2468
金钱
5632
威望
2468
买家信用
卖家信用
积分
13557
发表于 2017-4-15 16:15:06 |显示全部楼层
本帖最后由 ahha007 于 2017-4-16 14:32 编辑



调试 CubieScreen一共两个步骤
一. 写对参数.基本就是


二. 在LCD 驱动中添加必要的初始化数据.

1.屏的数据接口是SPI.
在CB2的驱动代码中,因为A20的SPI驱动不支持发送9bit 的数据.所以驱动使用GPIO 来模拟SPI来发送.
CB2的修改请参考这里 :https://github.com/cubieboard/li ... 798c0bb342323d971db

移植到CB6的话,大部分上面的改动能直接使用,不用修改,如构建的9bit spi 发送函数 void spi_9bit_wire 和发送的初始化数据
  1. void spi_9bit_wire(__u32 tx)
  2. {
  3.         __u8 i;

  4.         spi_csx_set(0);

  5.         for(i=0;i<9;i++)
  6.         {
  7.                 LCD_delay_us(1);
  8.                 spi_sck_set(0);
  9.                 LCD_delay_us(1);
  10.                 if(tx & (1 << 8))
  11.                         spi_sdi_set(1);
  12.                 else
  13.                         spi_sdi_set(0);
  14.                 LCD_delay_us(1);
  15.                 spi_sck_set(1);
  16.                 LCD_delay_us(1);
  17.                 tx <<= 1;
  18.         }
  19.         spi_sck_set(0);
  20.         LCD_delay_us(1);
  21.         spi_csx_set(1);
  22.         LCD_delay_us(1);
  23. }
复制代码
  1.       //Hardware pin reset
  2.         lcd_rst_set(0);
  3.         LCD_delay_ms(1);
  4.         lcd_rst_set(1);
  5.         LCD_delay_ms(1);


  6.         //software reset
  7.         printk("%s, begin send init data for CubieScreen \n",__func__);
  8.         spi_9bit_wire(0x001);
  9.         LCD_delay_ms(120);

  10.         //VGH/VGL Setting
  11.         spi_9bit_wire(0x0C1);
  12.         spi_9bit_wire(0x1A8);
  13.         spi_9bit_wire(0x1B1);
  14.         spi_9bit_wire(0x145);
  15.         spi_9bit_wire(0x104);

  16.         //VCOMDC
  17.         spi_9bit_wire(0x0C5);
  18.         spi_9bit_wire(0x180);
  19.         spi_9bit_wire(0x168);



  20. ....
复制代码
关键就是怎么将void spi_9bit_wire 函数实现了.其实也就很简单,就是GPIO的获取,申请,设置.在driver/video/owl/displays/lcdc/lcdchw.c  代码贴出来排版很难看直接给附件 ,改动如下:



同时,我在dts 里面定义了用到的几个GPIO,驱动会读出dts 的参数,从而做GPIO操作:
  1.         lcd0: lcd0@b02a0000 {
  2.                 status = "okay";
  3.                 pinctrl-names = "default";
  4.                 pinctrl-0 = <&rgb_state_default>;
  5.                 lcd_power_gpios = <&gpio 130 0>;
  6.                 lcd_reset_gpios = <&gpio 131 0>;
  7.                 <font color="Red">lcd_spi_csx = <&gpio 73 0>;
  8.                 lcd_spi_sck = <&gpio 72 0>;
  9.                 lcd_spi_sdi = <&gpio 71 0>;</font>
  10.                 port_type = "rgb";
  11.                 data_width = <0>;
复制代码
分别是GPIOC7 ,GPIOC8,GPIOC9.
计算方式是:M = 32*N +L      , GPIOA 组,N=0,GPIOB 组,N=1,GPIOC 组,N=2.
所以 GPIOC7  =71 = 32x2 +7  





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

回复

使用道具 举报

34

主题

4

好友

1万

积分

超级版主

Rank: 8Rank: 8

贡献
2468
金钱
5632
威望
2468
买家信用
卖家信用
积分
13557
发表于 7 天前 |显示全部楼层
占楼 ,触摸调试
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

Archiver|手机版|邮件群发|www.cubie.cc---深刻的嵌入式技术和应用讨论中文社区 ( 粤ICP备13051116号-1  

GMT+8, 2017-4-24 11:32 , Processed in 0.027538 second(s), 5 queries , Apc On.

Powered by Discuz! X2.5 Licensed

© 2001-2012 Comsenz Inc. | Style by Coxxs

回顶部