刚接触f1c100s,画了一个f1c100s板子(附件为原理图),液晶屏接口接的LCD分辨率240*320,驱动为ST7789V,驱动接口是SPI+RGB,SPI负责初始化,SPI为3线制(没有命令/数据管脚),SPI接到SPI0的SPI_MOSI(PC3)、SPI_SCK(PC0)和CS(PE4),PE4是普通GPIO,RGB接口接的管脚与荔枝派NANO一样。通过论坛得知ST7789V可以用SPI驱动,查阅官方指导SPI TFT都是SPI四线驱动,而这个是3线,于是参考网站驱动ili9341教程把它配置为SPI TFT。
设备树修改的部分如下:
spi0: spi@1c05000 {
compatible = "allwinner,suniv-f1c100s-spi",
"allwinner,sun8i-h3-spi";
reg = <0x01c05000 0x1000>;
interrupts = <10>;
clocks = <&ccu CLK_BUS_SPI0>, <&ccu CLK_BUS_SPI0>;
clock-names = "ahb", "mod";
num-cs = <2>;
cs-gpios = <0>,<&pio 4 4 GPIO_ACTIVE_LOW>;
resets = <&ccu RST_BUS_SPI0>;
status = "disabled";
#address-cells = <1>;
#size-cells = <0>;
};
&spi0 {
pinctrl-names = "default";
pinctrl-0 = <&spi0_pins_a>;
status = "okay";
flash@0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "winbond,w25q128", "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <15000000>;
};
st7789v@1 {
compatible = "sitronix,st7789v";
reg = <1>;
reset-gpios = <&pio 4 10 GPIO_ACTIVE_LOW>;/*上电复位,此处选的是一个空闲管脚*/
dc-gpios = <&pio 0 0 GPIO_ACTIVE_LOW>;/*没有DC管脚,此处选的是一个空闲管脚*/
/*backlight = <&pwm_bl>;*/
spi-max-frequency = <15000000>;
spi-cpol;
spi-cpha;
spi-3wire;
/*bgr;*/
buswidth = <8>;
rotate = <270>;
fps = <10>;
};
};
很惭愧,目前我按照指导搭的环境编译linux一直报错:
设备树文件编译不过去,查资料应该是头文件路径的问题,要建一个软连接到include/dt-bindings下,回头试一下。
目前先把lcd点亮,这样信心也足一点,所以问一下,我能不能用我修改的这个设备树文件编译生成dtb,替换掉荔枝派NANO资料包里打包好的TF卡的烧录文件中的dtb文件,通过TF卡启动从而点亮LCD?就是不知道荔枝派的内核文件里有没有把SPI-TFT驱动添加进去?
没找到如何上传pdf文件方法,先传上原理图的截图吧
最近编辑记录 xbgzy (2019-10-12 14:45:14)
离线
建议在 u-boot 里面初始化 模拟/硬件 spi 初始化 SS7789V, 然后 SYNC RGB 就可以驱动液晶了。
晕哥,是不是在uboot里模拟spi接口方式初始化lcd,把它配置为mcu或rgb模式,然后把参数传给内核,内核直接用,就不需要再初始化lcd?
离线
配置成 RGB 不用传递给内核了, 按原来的流程走就可以, SYNC RGB 就是单向数据发送, PCLK, HSYNC/VSYNC, RGB666 都是 soc 给的。
嗯,明白,荔枝派的LCD应该也是单向数据发送吧
最近编辑记录 xbgzy (2019-10-12 16:08:49)
离线
对的, 这种接口就是单向的。
谢谢晕哥,我先解决编译错误的问题
离线
楼主搞定驱动st7789v问题没有,我也在弄,没法用设备树,不知道该怎么让驱动注册
目前没有,我觉得晕哥提供的方向是对的,可以在uboot里用spi初始化7789,用gpio模拟spi最直接
离线