Neza-D1开发板学习之SPI-LCD灯篇
- Neza-D1开发板芯片很强,但是没有引出RGB接口,板上引出了HDMI与LVDS接口,没引出RGB接口,所以手里的RGB接口的屏用不上了,扩展IO上有引出SPI1接口,看了一下尺寸,刚好可以放的下2.8”的SPI屏幕,正好手里有以前剩下的屏幕,就画了一块扩展板(可惜芯片是BGA封装,即使我能画出来,也没本事焊上啊!),驱动芯片是ili9341 4线SPI,又加了一个触摸芯片上去,如下图
- 设备树配置
lcd_ili9341@0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = “ilitek,ili9341”;
reg = <0>;
spi-max-frequency = <32000000>;
rotation = <0>;
spi-cpol;
spi-cpha;
rgb;
fps = <30>;
buswidth = <8>;
txbuflen = <32768>;
reset-gpios = <&pcf8574 6 GPIO_ACTIVE_LOW>;
dc-gpios = <&pcf8574 7 GPIO_ACTIVE_LOW>;
/backlight = <&backlight>;/
led-gpios = <&pcf8574 5 GPIO_ACTIVE_HIGH>;
status = “okay”;
}; - 在内核打开small lcd support选项
[*] Staging drivers —>
<*> Support for small TFT LCD display modules —>3
<*> FB driver for the ILI9341 LCD Controller - 系统启动log
[ 2.670067] fbtft_of_value: buswidth = 8
[ 2.674512] fbtft_of_value: backlight = 39
[ 2.679097] fbtft_of_value: fps = 30
[ 2.683098] fbtft_of_value: txbuflen = 32768
[ 2.691259] GPT:Primary header thinks Alt. header is not at the end of the disk.
[ 2.699560] GPT:625184 != 7774207
[ 2.703265] GPT:Alternate GPT header not at the end of the disk.
[ 2.709981] GPT:625184 != 7774207
[ 2.713688] GPT: Use GNU Parted to correct GPT errors.
[ 2.719480] mmcblk0: p1 p2 p3 p4
[ 2.987837] random: fast init done
[ 3.036258] graphics fb1: fb_ili9341 frame buffer, 240x320, 150 KiB video memory, 32 KiB buffer memory, fps=31, spi1.0 at 32 MHz - 这里有一点需要注意,我使用的GPIO是通过PCF8574扩展出来的,对IO读写操作时可能会导致休眠,因此不能在中断函数里使用
因此我们需要简单的修改一下驱动文件,用一个宏定义即可,如果不修改操作一次IO,就会出现一堆警告
#define gpio_set_value gpio_set_value_cansleep - 进系统里可以查看是否有对应设备
# ls /dev/fb*
/dev/fb0 /dev/fb1
测试屏幕
# cat /dev/urandom > /dev/fb1
cat: write error: No space left on device
清屏
# cat /dev/zero > /dev/fb1
cat: write error: No space left on device
显示图片
评论