1.44inch LCD HAT
| ||||||||||||||||||||||||
| ||||||||||||||||||||||||
说明
产品概述
提供树莓派程序驱动、FBTFT移植教程
产品参数
- 工作电压: 3.3V
- 通信接口: SPI
- 屏幕类型: TFT
- 控制芯片: ST7735S
- 分辨率: 128*128 (Pixel)
- 显示尺寸: 25.5*26.5(mm)
- 像素大小: 0.20(W)*0.20(H)(MM)
- 产品尺寸 65*30.2(mm)
功能引脚
功能引脚 | 树莓派接口(BCM) | 描述 |
KEY1 | P21 | 按键1GPIO |
KEY2 | P20 | 按键2GPIO |
KEY3 | P16 | 按键3GPIO |
摇杆UP | P6 | 摇杆上 |
摇杆Down | P19 | 摇杆下 |
摇杆Left | P5 | 摇杆左 |
摇杆Right | P26 | 摇杆右 |
摇杆Press | P13 | 摇杆按下 |
SCLK | P11/SCLK | SPI时钟线 |
MOSI | P10/MOSI | SPI数据线 |
DC | P25 | 数据/命令选择 |
CS | P8/CE0 | 片选 |
RST | P27 | 复位 |
BL | P24 | 背光 |
LCD 及其控制器
ST7735S是一款132*162像素的LCD控制器,而本产品为128*128像素的LCD,因此在显示上做了一些处理:水平方向从第二个像素点开始显示,这样就可以保证显示的时候LCD中RAM对应的位置与实际位置是一致的。
该LCD支持12位,16位以及18位每像素的输入颜色格式,即RGB444,RGB565,RGB666三种颜色格式,本例程使用RGB565的颜色格式,这也是常用的RGB格式
LCD使用四线SPI通信接口,这样可以大大的节省GPIO口,同时通信是速度也会比较快
通信协议
注:与传统的SPI协议不同的地方是:由于是只需要显示,故而将从机发往主机的数据线进行了隐藏,该表格详见Datasheet Page 66。
RESX为复位,模块上电时拉低,通常情况下置1;
CSX为从机片选, 仅当CS为低电平时,芯片才会被使能。
D/CX为芯片的数据/命令控制引脚,当DC = 0时写命令,当DC = 1时写数据。
SDA为传输的数据,即RGB数据。
SCL为SPI通信时钟。
对于SPI通信而言,数据是有传输时序的,即时钟相位(CPHA)与时钟极性(CPOL)的组合:
CPHA的高低决定串行同步时钟是在第一时钟跳变沿还是第二个时钟跳变沿数据被采集,当CPHA = 0,在第一个跳变沿进行数据采集;
CPOL的高低决定串行同步时钟的空闲状态电平,CPOL = 0,为低电平。
从图中可以看出,当SCLK第一个下降沿时开始传输数据,一个时钟周期传输8bit数据,使用SPI0,按位传输,高位在前,低位在后。
树莓派
提供C语言与python例程
树莓派使用教程
开启SPI接口
- 打开树莓派终端,输入以下指令进入配置界面
sudo raspi-config 选择Interfacing Options -> SPI -> Yes 开启SPI接口
sudo reboot
请确保SPI没有被其他的设备占用,你可以在/boot/config.txt中间检查
安装库
如果使用bookworm系统,只能使用lgpio库,bcm2835跟wiringPi无法安装与使用,python库可以不安装,直接运行程序即可
BCM2835
#打开树莓派终端,并运行以下指令 wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.71.tar.gz tar zxvf bcm2835-1.71.tar.gz cd bcm2835-1.71/ sudo ./configure && sudo make && sudo make check && sudo make install # 更多的可以参考官网:http://www.airspayce.com/mikem/bcm2835/
wiringPi
#打开树莓派终端,并运行以下指令 cd sudo apt-get install wiringpi #对于树莓派2019年5月之后的系统(早于之前的可不用执行),可能需要进行升级: wget https://project-downloads.drogon.net/wiringpi-latest.deb sudo dpkg -i wiringpi-latest.deb gpio -v # 运行gpio -v会出现2.52版本,如果没有出现说明安装出错 #Bullseye分支系统使用如下命令: git clone https://github.com/WiringPi/WiringPi cd WiringPi ./build gpio -v # 运行gpio -v会出现2.70版本,如果没有出现说明安装出错
lgpio
wget https://github.com/joan2937/lg/archive/master.zip unzip master.zip cd lg-master sudo make install # 更多的可以参考官网:https://github.com/gpiozero/lg
python
sudo apt-get update sudo apt-get install ttf-wqy-zenhei sudo apt-get install python3-pip sudo pip3 install spidev
下载例程
在树莓派终端运行:
sudo apt-get install p7zip-full -y wget http://www.waveshare.net/w/upload/f/fa/1.44inch-LCD-HAT-Code.7z 7z x 1.44inch-LCD-HAT-Code.7z sudo chmod 777 -R 1.44inch-LCD-HAT-Code cd 1.44inch-LCD-HAT-Code/RaspberryPi/
运行测试程序
- C语言
cd c make clean make sudo ./main
- 对于树莓派4B及raspbian_lite-2019-06-20系统之后需要设置如下,按键才能正常输入
sudo nano /boot/config.txt #添加如下: gpio=6,19,5,26,13,21,20,16=pu
- python
cd python sudo python main.py sudo python key_demo.py
FBCP移植
Framebuffer 是用一个视频输出设备从包含完整的帧数据的一个内存缓冲区中来驱动一个视频显示设备。简单的来说,就是使用一个内存区来存储显示内容,改变内存的数据就可以改变显示的内容。
在 github 上有一个开源工程:fbcp-ili9341,该工程相比其他类fbcp工程,利用了局部刷新和DMA实现高达60fps的速度
环境配置
树莓派的vc4-kms-v3d会导致fbcp失效,所以我们需要在安装在fbcp之前关闭vc4-kms-v3d
sudo nano /boot/config.txt
sudo reboot
编译与运行
sudo apt-get install cmake -y cd ~ wget https://www.waveshare.net/w/upload/1/18/Waveshare_fbcp.zip unzip Waveshare_fbcp.zip cd Waveshare_fbcp mkdir build cd build #以1.44inch_LCD_HAT为例 cmake -DSPI_BUS_CLOCK_DIVISOR=20 -DWAVESHARE_1INCH44_LCD_HAT=ON -DBACKLIGHT_CONTROL=ON -DSTATISTICS=0 .. #以1.3inch_LCD_HAT为例 cmake -DSPI_BUS_CLOCK_DIVISOR=20 -DWAVESHARE_1INCH3_LCD_HAT=ON -DBACKLIGHT_CONTROL=ON -DSTATISTICS=0 .. make -j sudo ./fbcp
设置开机自启动
sudo cp ~/Waveshare_fbcp/build/fbcp /usr/local/bin/fbcp sudo nano /etc/rc.local
在 exit 0 前面添加 fbcp&。注意一定要添加"&" 后台运行,否则可能会出现系统不能启动的情况。
设置用户界面显示尺寸
在/boot/config.txt 文件中设置用户界面显示尺寸。
sudo nano /boot/config.txt
添加
hdmi_force_hotplug=1 hdmi_cvt=300 300 60 1 0 0 0 hdmi_group=2 hdmi_mode=87 display_rotate=0
这里是设置系统界面分辨率,最后显示的效果是按照比例缩放显示在1.3inch LCD上。这里设置分辨率应稍大于LCD的分辨率,过高会导致字体显示模糊。
重启设备即可
sudo reboot
模拟鼠标
模块上面板子一个摇杆和三个按键,我们可以用来控制树莓派的鼠标
- 安装库并下载并运行例程
#python2 sudo apt-get install python-xlib sudo pip install PyMouse wget http://www.waveshare.net/w/upload/d/d3/Mouse.7z 7z x Mouse.7z sudo python mouse.py #python3 sudo apt-get install python3-xlib sudo pip3 install PyMouse sudo pip3 install unix sudo pip3 install PyUserInput wget http://www.waveshare.net/w/upload/d/d3/Mouse.7z 7z x Mouse.7z sudo python3 mouse.py
|
- 对于树莓派4B及raspbian_lite-2019-06-20系统之后需要设置如下,按键才能正常输入
sudo nano /boot/config.txt #添加如下: gpio=6,19,5,26,13,21,20,16=pu
使用摇杆上下左右,就可以看到鼠标在动了。
- 配置成开机自启
注意不要加到/etc/rc.local中,因为rc.local在系统还没有进入桌面之前会执行,而PyMouse模块在命令行界面运行的话会报错没有鼠标这个事件,所以我们需要执行如下:
cd .config/ mkdir autostart cd autostart/ sudo nano local.desktop
加入如下(添加对应的即可,不用全部添加进去):
#python2 [Desktop Entry] Type=Application Exec=python /home/pi/mouse.py #python3 [Desktop Entry] Type=Application Exec=python3 /home/pi/mouse.py
然后重新启动树莓派,即可使用按键控制鼠标了。
sudo reboot
其他
有兴趣弄游戏机的小伙伴们可以参考下面这两个链接,这里不再详细讲解。
https://www.sudomod.com/forum/viewtopic.php?f=11&t=5371&start=10
https://pi0cket.com/guides/tiny-software-for-tinypi/#more-99
资料
文档
程序
软件
数据手册
FAQ
gpio=6,19,5,26,13,21,20,16=pu
开启了fbtft,重启之后会占用掉spidev0.0,此时如果需要运行示例程序,需要把/etc/modules中的开启fb对应的语句屏蔽掉。