User Tools

Site Tools


library:rk3568:lcddrv

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
library:rk3568:lcddrv [2022/11/01 10:08]
lhaosen [2.2 dts配置]
library:rk3568:lcddrv [2022/11/02 23:55] (current)
lhaosen [2. Linux驱动设计(A)]
Line 7: Line 7:
 === 模块参数 === === 模块参数 ===
  
-分辨率:128x168  \\+分辨率:128x160  \\
 驱动芯片:ST7735S \\ 驱动芯片:ST7735S \\
 接口类型:SPI \\ 接口类型:SPI \\
Line 34: Line 34:
 ==== - 控制接口 ==== ==== - 控制接口 ====
  
-^  No  ^ 信号   ^ pin@Core-3568J ^ pin@rk3568 ^ +^  No  ^ 信号     ^ pin@Core-3568J  ^ pin@rk3568    ^ GPIO      
-^  1  /RESET | 169             | GPIO0_A6          +^  1   | /RESET  | 169             | GPIO0_A6                
-^  2  /CS    | 185             | SPI0_CS0_M0       +^  2   | /CS     | 185             | SPI0_CS0_M0   | GPIO0_C6  
-^  3  SCK    | 175             | SPI0_CLK_M0       +^  3   | SCK     | 175             | SPI0_CLK_M0   | GPIO0_B5  
-^  4  SDA    | 159             | SPI0_MOSI_M0      +^  4   | SDA     | 159             | SPI0_MOSI_M0  | GPIO0_B6  
-^  5  CD     | 173             | GPIO0_C1          +^  5   | CD      | 173             | GPIO0_C1                
-^  6  BL     | 171             | GPIO0_C3          |+^  6   | BL      | 171             | GPIO0_C3                |
  
-===== - Linux驱动设计 =====+===== - Linux驱动设计(A) ===== 
 +采用gpio-leds + spidev方式连接LCD模块,模块端口信号采用两种驱动: 
 +  * io:  /Reset,BL,CD信号,使用gpio-leds驱动 
 +  * spi: /CS,SCK,SDA使用spidev驱动
  
-==== - 内核配置 ====+==== - 控制IO ==== 
 +=== - dts === 
 +<code> 
 + lcd_reset: reset { 
 + label = "lcd:reset"; 
 + linux,default-trigger = "none";  
 + default-state = "on"; 
 + gpios = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>; 
 + }; 
 + 
 + lcd_backlight: backlight { 
 + label = "lcd:backlight"; 
 + linux,default-trigger = "none";  
 + default-state = "on"; 
 + gpios = <&gpio0 RK_PC3 GPIO_ACTIVE_HIGH>; 
 + }; 
 + 
 + lcd_data: data { 
 + label = "lcd:data"; 
 + linux,default-trigger = "none";  
 + default-state = "on"; 
 + gpios = <&gpio0 RK_PC1 GPIO_ACTIVE_HIGH>; 
 + }; 
 +</code> 
 +添加以上3个pin的gpio-leds节点,驱动成功后的访问入口为: 
 +  /sys/class/leds/lcd:reset 
 +  /sys/class/leds/lcd:backlight 
 +  /sys/class/leds/lcd:data 
 +   
 +可以用命令测试这几个pin的状态: 
 +  # backlight = 1 
 +  echo 1 > /sys/class/leds/lcd:backlight 
 +  # backlight = 0 
 +  echo 1 > /sys/class/leds/lcd:backlight 
 +==== - spidev配置 ==== 
 +修改DTS及添加驱动到内核 
 + 
 +=== - 内核配置spidev ===
  
   Device Drivers ‐‐‐>    Device Drivers ‐‐‐> 
Line 51: Line 91:
        [*] User mode SPI device driver support        [*] User mode SPI device driver support
  
-==== - dts配置 ====+=== - dts配置 ===
  
-=== - rk3568-firefly-mplayer.dtsi ===+  * rk3568-firefly-mplayer.dtsi
  
-== 使能spi0 == +添加节点spi0  
-  &spi0 {+<code> 
 +&spi0 {
     status = "okay";     status = "okay";
-   
     max-freq = <50000000>;     max-freq = <50000000>;
-    spi_test@10 {+    pinctrl-0 = <&spi0m0_cs0 &spi0m0_cs0 &spi0m0_pins>; 
 +    pinctrl-1 = <&spi0m0_cs0 &spi0m0_cs0 &spi0m0_pins_hs>;  
 +    spidev@{
         compatible = "rockchip,spidev";         compatible = "rockchip,spidev";
-        reg = <0>;+        reg = <0>; // CS0
         spi-max-frequency = <5000000>;         spi-max-frequency = <5000000>;
     };     };
-  };+}; 
 +</code> 
 +  * pinctrl-0/1 重写覆盖了原定义,cs脚使用 spi0m0_cs1 代替 spi0m0_cs0 
 +  * 停用冲突的管脚: uart8,pwm7等
  
  
-== disable uart8 == +   
-uart8于spi0管脚冲突,使uart8无效 +==== - Demo script ===
-  &uart8 { +
-    status "disabled"; +
-  };+
library/rk3568/lcddrv.1667268499.txt.gz · Last modified: 2022/11/01 10:08 by lhaosen