千家信息网

树莓派4 rt-thread如何实现SPI屏人机交互界面

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍了树莓派4 rt-thread如何实现SPI屏人机交互界面,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。树莓派4 rt
千家信息网最后更新 2026年11月01日树莓派4 rt-thread如何实现SPI屏人机交互界面

这篇文章主要介绍了树莓派4 rt-thread如何实现SPI屏人机交互界面,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

树莓派4 rt-thread实现SPI屏人机交互界面

1.前言

树莓派4的rt-thread一直在不断的更新,充分挖掘可以树莓派底层硬件的特性,同时借助各种外设,使得树莓派4成为一个更加适合学习嵌入式开发,验证各种外设功能,学习操作系统的好用的平台。

在树莓派4上进行各种外设的开发,需要一定的嵌入式调试经验与驱动调试方法,因为树莓派虽然资料很多,但是关键核心的芯片资料却非常的少,都是进行应用层面的开发工作。为了更加深刻的学习嵌入式,了解方法是不够的,而是要弄清楚原理才行。本文主要是介绍树莓派4图像,触摸相关的使用方式,从而实现GUI的移植和界面交互。

2.树莓派4显示接口介绍

树莓派4默认是不带任何屏接口的显示的,可以接上HDMI接口。


另外,树莓派4上带有MIPI的显示器DSI排线接口,可以通过排线进行连接。


这两种显示接口的驱动实现,都已经在树莓派的videocore中实现了,具体的实现细节需要查看相关的GPU的使用。作为学习嵌入式图像这一块,已经无法从树莓派上进行任何的底层相关的开发了。想调用图像的读写操作,可以通过CPU与GPU的通信管道作为数据的传输通道,具体可以查看mbox的驱动实现细节:

https://github.com/RT-Thread/rt-thread/blob/master/bsp/raspberry-pi/raspi4-32/driver/mbox.c

将图像放到一段内存空间,然后发消息给GPU,让其去该地址取数据,最后就可以在屏幕上看到显示的画面了。

这一种只有显示,如果要实现触摸,还需进行另外的接口实现。一种是DSI可以将触摸的坐标传递给GPU,通过mbox取获取坐标数据,另外一种接HDMI屏的常见做法就是将触摸另外接到USB上,通过USB获取坐标点。这是常见的实现手段。

除此之外,微雪则出了MHS-3.5inch RPi Display的3.5寸的SPI屏。

http://www.lcdwiki.com/MHS-3.5inch_RPi_Display

下图是基本的展示:



该屏是利用SPI总线所驱动,最大spi速率支持125Mhz。支持电阻屏触摸。而且价格也很便宜。是本文研究的重点。

3.树莓派4 SPI接口

要想将该屏驱动起来,首先必须了解的是SPI协议,以及bcm2711芯片的spi控制器的使用。所有深度的研读了rpi_DATA_2711_1p0.pdf文档。

https://gitee.com/bigmagic/raspi_sd_fw/tree/master/doc/raspi4

重点是说,树莓派4的SPI是支持两种模式的,一种是标准的SPI总线。


这个很基本,也就是CE片选决定是那个设备,主机通过传输SCLK时钟信号,然后传输MOSI,从机响应数据,MISO。这是标准的SPI协议,可以好好复习一下。

另外一种则是LOSSI模式。


也就是低速串行总线。片选外设后,主机可以通过SCL发送时钟,然后通过SDA发送数据,从机接受到数据后,也会通过SDA数据线传输到主机。只有一条线传输数据。

区分的方法就是在发送数据位时比如发送8位数据位,则会在前面增加一位表示读写。这种适合于低速外设总线的使用。这一种模式目前暂时没有使用到,后面使用的时候再进行分析。

4.树莓派4 上的SPI屏的实现

具体细节我就不过多的展开,反正调试就占用了两天时间,下面主要讲一讲调试的心得和步骤。

标准的SPI屏接上后,触摸和LCD都是用的同样的SPI线。

通过CS引脚进行选择,正好对应上树莓派SPI0的两个片选。我刚开始调试的是LCD,由于LCD的主控是ILI9486,看来一下芯片手册,准备按照以往的调试经验,先读出出厂ID试试。怎么都不读到数据,尝试了好久,结果仔细看上图,发现SO引脚上标注的是Touch panel SPI data output。原来是不能输出数据的呀。于是转换方向,先调试触摸,因为触摸标准一些。

刚开始的时候,触摸读不到数据,因为SPI驱动写的不好,而且测试也不严格,对SPI的协议理解不深刻,后来干脆采用逻辑分析仪跟踪数据。才发现速率太高了,原来这个触摸支持的spi的频率是很低的,只有几百K。我终于看到数据读出来变化了。

由于是电阻屏,所以读到的是12位的数据,读到2个字节,然后计算偏移得到12位的数据,总体变化范围是0到2048之间。按照这个规律,不断的在屏的上下左右角度测试坐标,终于测试得到了以下结论。

XPT2046:Width:320 High:480
no pressed:(0x800,0xfff)
---ETH----USB-----------------------
| (0x800,0x800) (0xfff,0x800) |
| |
| (0x800,0xFFF) (0xfff,0xfff) |
------------------------------------

不进行触摸得到的数据(0x800,0xfff),各个角度的值可以看上面的信息。

计算坐标,由于电阻屏,每个点的坐标均匀分布,有着二次方程的线性关系。很容易就通过取到的数据算出坐标点了。调试这个花费了一天时间。终于可以开始调试LCD了。

由于两个片选不一样,而且只能写不能读,这样调试起来需要非常的精确。首先LCD复位,也就是22号引脚先高电平再低电平再高电平。此时完成复位动作。

接着,注意命令和数据是一个GPIO的高低电平进行控制的。这个细节要注意。接着就是开始传输配置的参数了,参数主要参考类似的lcd的实现。参数传递完成,屏的面板显示又白色变成黑色,这个是证明参数写进去的关键。为了这个细节的实现,调试了许久。然后写数据到lcd中。

刚开始的时候,刷屏的速度肉眼可见,每个坐标点在变化,这肯定不能接受,然后算了一下SPI的频率还不到1MHZ。这肯定不行,于是配置树莓派SPI,将时钟提升到125Mhz。速度虽然有了提升,但是还是不够,差不多1s才能刷新全屏。最后直接跳过rt-thread的spi框架,直接操作底层进行SPI写数据。发现真的快了许多。

用数据来说话,用Image2LCD来生成一张图像,进行刷屏测试。


最后的结果如下所示:


由于操作系统的tick为10ms,所以测试得到差不多40到50ms,所以帧率在20~25帧左右。这是目前实测的数据。虽然速率不是特别高,但是还是可以接受的。

感谢你能够认真阅读完这篇文章,希望小编分享的"树莓派4 rt-thread如何实现SPI屏人机交互界面"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

数据 树莓 接口 传输 驱动 图像 坐标 外设 细节 学习 支持 测试 界面 参数 嵌入式 总线 标准 电平 篇文章 开发 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技有限公司 中智农互联网科技 西安纸贵互联网科技有限公司 湖南永感互联网科技有限公司 上游互联网科技 科技互联网创业计划书 美国互联网前沿科技 顺网科技2021年互联网排名 华中科技有哪些互联网大佬 安控科技rtu产品工业互联网 深圳市运趣互联网科技有限公司 西藏七维空间互联网科技有限公司 厦门比较好的科技互联网公司 搜狐科技互联网 互联网媒体平台算高科技产业 亳州好赞互联网科技有限公司 中科明德北京互联网科技 神州科技互联网有限公司 江苏互联网智能科技产品出厂价 容联科技互联网电商 保险科技 互联网保险 山东特亿宝互联网科技有限公司 互联网巨头投资的硬核科技 互联网校园科技培训 阿大互联网科技有限公司 中国互联网十大科技股排名 互联网保险科技创业 半导体行业属于互联网高科技类吗 互联网对科技影响 知域互联网科技有限公司官网
0