之前打算给树莓派加个屏幕,但是又没钱了。手上有个STM32F429的开发板,上面有块屏幕,就想直接用这个开发板来给树莓派当显示器用。
找了一下方法,其实是可行的。
首先翻阅了一下F429的资料手册,可以知道板子上的屏幕是ILI9341的驱动,并且也把屏幕的SPI接口引出了,下面是F429的IO对应屏幕的接口:
- F429的IO 对应屏幕接口
- PF7 [SCK]
- PF8 [MISO]
- PF9 [SDA]
- NRST [RET]
- PC2 [CS]
- PD13 [RS]
复制代码
然后,我在github上找到了树莓派的屏幕驱动,那么我们只需要把驱动下载安装即可。
github上提供了2种安装方法,一个是直接编译进内核,一个是模块化的安装。
我使用的是模块化的安装方法,也就是说,不用的时候,不加载驱动即可,这样的好处是不占用树莓派的SPI接口,想要连接其他设备的时候不需要换内核。
首先下载和安装内核驱动。
- <p><p>sudo wget https://raw.github.com/Hexxeh/rpi-update/master/rpi-update -O /usr/bin/rpi-update && sudo chmod +x /usr/bin/rpi-update</p></p><p><p>sudo REPO_URI=<a href="https://github.com/notro/rpi-firmware">https://github.com/notro/rpi-firmware</a> rpi-update
- </p></p>
复制代码
下载可能需要几分钟的时间,看网速而定。然后第二条命令会自动的安装内核驱动,我们只要耐心等待安装完成即可。整个安装的过程可能需要半个小时甚至更长的时间。
安装完成后,重启一下树莓派即可。然后我们继续操作。首先我们要把F429和树莓派连接。连接的接口如下:
- F429 IO 树莓派IO
- ## PF7 [SCK] -- SCLK
- ## PF8 [MISO] - MISO
- ## PF9 [SDA] -- MOSI
- ## NRST[RET] -- GPIO25
- ## PC2 [CS] --- CE0
- ## PD13[RS] --- GPIO22
复制代码
左边的是F429开发板的IO,右边是树莓派的IO,把对应的IO连接起来即可。最后还需要2根电源线把树莓派和F429连接起来,给F429供电。
连接好后记得把F429开发板上的JP3跳线帽拔掉,这样才能使用开发板上的屏幕,否则开发板的程序也在运行会造成信号冲突和干扰,屏幕无法正常驱动显示。
硬件全部连接好后,打开树莓派终端,执行下面的命令:
- sudo modprobe fbtft_device name=flexfb fps=50 gpios=reset:25,led:18,dc:22 rotate=2 speed=16000000
- sudo modprobe flexfb width=320 height=240 buswidth=8 init=-1,0x28,-2,20,-1,0xCF,0x00,0x83,0x30,-1,0xED,0x64,0x03,0x12,0x81,-1,0xE8,0x85,0x01,0x79,-1,0xCB,0x39,0x2c,0x00,0x34,0x02,-1,0xF7,0x20,-1,0xEA,0x00,0x00,-1,0xC0,0x26,-1,0xC1,0x11,-1,0xC5,0x35,0x3E,-1,0xC7,0xBE,-1,0xB1,0x00,0x1B,-1,0xB6,0x0a,0x82,0x27,0x00,-1,0xB7,0x07,-1,0x3A,0x55,-1,0x36,0xF8,-1,0x11,-2,120,-1,0x29,-2,20,-3
复制代码
如果没有异常的话,你就可以看到F429的屏幕变成了黑色,这就代表屏幕被成功的驱动了。
最后我们可以使用命令来让屏幕显示树莓派的桌面:
- su -l root -c "env FRAMEBUFFER=/dev/fb0 startx &"
复制代码
这里我是设置了显示root用户的桌面,当然你如果习惯使用pi的用户也可以自己修改~
|