潘多拉 rt thread lcd
学习目标:
掌握正点原子潘多拉板载LCD的用法,熟悉IIC和SPI的用法及其区别
学习内容:
1.LCD屏幕 潘多拉开发板板载LCD屏幕大小1.3寸,分辨率240*240,色彩深度16bit,使用ST7789V2液晶控制器,小巧细腻很喜欢。
潘多拉开发板板载的lcd硬件原理图如上所示,因为显示问题,所以只是写操作 ,不用读取。因而用到的引脚为:
屏幕美照
2.学会使用st7789驱动,芯片手册臭又长,网上有好多可以借鉴的例子。
这里定义了控制引脚的高低电平控制
#define LCD_PWR(n) (n?\HAL_GPIO_WritePin(LCD_PWR_GPIO_Port,LCD_PWR_Pin,GPIO_PIN_SET):\HAL_GPIO_WritePin(LCD_PWR_GPIO_Port,LCD_PWR_Pin,GPIO_PIN_RESET))
#define LCD_WR_RS(n) (n?\HAL_GPIO_WritePin(LCD_WR_RS_GPIO_Port,LCD_WR_RS_Pin,GPIO_PIN_SET):\HAL_GPIO_WritePin(LCD_WR_RS_GPIO_Port,LCD_WR_RS_Pin,GPIO_PIN_RESET))
#define LCD_RST(n) (n?\HAL_GPIO_WritePin(LCD_RST_GPIO_Port,LCD_RST_Pin,GPIO_PIN_SET):\HAL_GPIO_WritePin(LCD_RST_GPIO_Port,LCD_RST_Pin,GPIO_PIN_RESET)
当然根据手册关键字,要有如下的宏定义:
//LCD屏幕分辨率定义
#define LCD_Width 240
#define LCD_Height 240
//颜色定义
#define WHITE 0xFFFF //白色
#define YELLOW 0xFFE0 //黄色
#define BRRED 0XFC07 //棕红色
#define PINK 0XF81F //粉色
#define RED 0xF800 //红色
#define BROWN 0XBC40 //棕色
#define GRAY 0X8430 //灰色
#define GBLUE 0X07FF //兰色
#define GREEN 0x07E0 //绿色
#define BLUE 0x001F //蓝色
#define BLACK 0x0000 //黑色
3.在程序编写时采用的RT-thread stdiuo 平台,在配置中使能spi硬件后,在config.h中 打开define SPI MODE ENABLE的注释,在board.c中添加宏定义#define BSP_USING_SPI3,这样在RT-thread为你配置好的很多预定义函数才会生效。最后不要忘了在board.c中添加关于用到的spi硬件引脚初始化(用cube生成void HAL_SPI_MspInit()后复制到board.c即可)
好,让我们复习一下spi吧!!!!!!!!!!!!!!!!!
SPI(串行外围接口,串行外设接口)是一种高速,全双工,同步通信总线,常用于短距离通讯,主要用于EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理SPI一般使用4根线通信,
MOSI –主机输出/从机输入数据线(SPI总线主输出/从输入)。
MISO –主机输入/从机输出数据线(SPI总线主输入/从输出)。
SCLK –串行时钟线(Serial Clock),主设备输出时钟信号至从设备。
CS –从设备选择线(芯片选择)。也叫SS,CSB,CSN,EN等,主设备输出片选信号至从设备SPI以主从方式工作,通常有一个主设备和一个或多个从设备。通信由主设备发起,主设备通过CS选择要通信的从设备,然后通过SCLK给从设备提供时钟信号,数据通过MOSI输出给从设备,同时通过MISO接收从设备发送的数据
在rt-thread中常用的spi相关API:
rt_err_t rt_spi_bus_attach_device(struct rt_spi_device *device, const char *name, const char *bus_name, void *user_data)
设备注册API,
设备 | SPI设备句柄 |
名称 | SPI设备名称 |
bus_name | SPI总线名称 |
用户数据 | 用户数据指针 |
例子:rt_hw_spi_device_attach("spi3", "spi30", GPIOD, GPIO_PIN_7);对应函数
rt_hw_spi_device_attach(const char *bus_name, const char *device_name, GPIO_TypeDef *cs_gpiox, uint16_t cs_gpio_pin)
{前面代码省略
rt_spi_bus_attach_device(spi_device, device_name, bus_name, (void *)cs_pin);
}
配置spi设备:
rt_err_t rt_spi_configure(struct rt_spi_device *device, struct rt_spi_configuration *cfg)
struct rt_spi_configuration
{
rt_uint8_t mode;
rt_uint8_t data_width;
rt_uint16_t reserved;
rt_uint32_t max_hz;
};
发现spi设备,并确认注册:
static int rt_hw_lcd_config(void)
{
spi_dev_lcd = (struct rt_spi_device *)rt_device_find("spi30");
/* config spi */
{
struct rt_spi_configuration cfg;
cfg.data_width = 8;
cfg.mode = RT_SPI_MASTER | RT_SPI_MODE_0 | RT_SPI_MSB;
cfg.max_hz = 42 * 1000 * 1000; /* 42M,SPI max 42MHz,lcd 4-wire spi */
rt_spi_configure(spi_dev_lcd, &cfg);
}
return RT_EOK;
}
潘多拉 rt thread lcd相关推荐
- 一个工程师对潘多拉开发板的使用体验
这块开发板刚上市的时候就买了,见图片. 先看看它上面的资源: 硬件看起来挺牛的是吧! 下面看看其提供的教程,即软件资源. 裸机例程代码 : RT thread代码例程: 大家可以看到,这块板子上绝大多 ...
- 潘多拉开发板——emwin5.44裸机移植记录(ST7789驱动)
一.emwim5.44的获取 1.打开STM32CubeMX,通过主界面help-Update Setting查看 点击后在弹出的界面可以看到路径,以我的电脑为例,可以找到以下的文件夹 正点原子的潘多 ...
- Yeelink平台使用——远程控制 RT Thread + LwIP+ STM32
1.前言 [2014年4月重写该博文] 经过若干时间的努力终于搞定了STM32+LwIP和yeelink平台的数据互通,在学习的过程中大部分时间花在以太网协议栈学习上,但是在RT Th ...
- 基于RT-Thread IoT STM32潘多拉开发板的Badapple显示。
万物皆可Badapple,坏苹果这个黑白影绘PV由于只有黑白两色,而且画面富有动感,很受各路电子大神的喜爱.它在STM32上的显示早就烂大街了,我做的也就是一点简单的整合还有移植. 目录 所用软硬件 ...
- xpt 2046的触摸屏 rt thread设备驱动框架
1 基于rtt 开发触摸屏驱动 准备使用rtt 框架 , 驱动xpt 2046的触摸屏, 翻阅大量资料发现, 大部分文章强调的是时序图, 而且很多代码要么直接操作寄存器, 要么是io 口模拟, 只能用 ...
- 如何使用潘多拉连接千寻开发板开发高精度应用
所需设备: 潘多拉开发板 (淘宝链接) 注意:购买时请注意屏幕背面上方的版本号,我购买的是V2.61版本,其他版本的串口布局不一样,在代码编写时需要注意,我会在代码一节详细标书. 千寻魔方110M开发 ...
- 微软获 OpenAI 独家 GPT-3 模型授权,是潘多拉还是聚宝盆?
作者 | 八宝粥 出品 | 程序人生(ID:coder_life) 9 月 20 日,微软宣布与 OpenAI 达成合作协议,得到了目前最火的 GPT-3 语言模型的独家授权,微软 CTO Kevin ...
- 斐讯k1潘多拉专版固件_斐讯K1刷专版潘多拉固件以及教程(使用感受)
本帖最后由 Super131 于 2016-3-5 10:09 编辑 QQ图片20160225010211.png (24.22 KB, 下载次数: 2) 2016-2-25 01:02 上传 K1的 ...
- 潘多拉_最新Pandora潘多拉美国官网海淘攻略
潘多拉相信没有女生是不喜欢的,Pandora的串珠和首饰一直是少女心的存在,BlingBling闪亮亮充满着幻想的气息.Pandora总是有一种蜜汁魔力,每次看见打折的款式总是忍不住要剁手!买回来和之 ...
最新文章
- 一个LabVIEW控件,生成模拟波形效果
- 《数学之美》第11章 如何确定网页和查询的相关性
- 第十五届全国大学生智能汽车竞赛-室外光电ROS组预赛方案
- oracle rownum分页 出现重复数据
- python学习音频-Python学习笔记--音频处理
- linux如何取文件列名,Linux_根据表名和索引获取需要的列名的存储过程,复制代码 代码如下: create proc p - phpStudy...
- 《炉石传说》架构设计赏析(4):Asset管理
- -XX:+UseParallelGC与 -XX:+UseParNewGC相关介绍
- 李开复 —— 给中国学生的第四封信:大学四年应是这样度过
- Java虚拟机学习总结(4)—— JVM 性能调优常用参数详解
- R语言页游渠道分析(转)
- 计算机驱动程序的安装过程,电脑常用的驱动程序的安装与管理
- 【VOIP】 yate源码编译和部署
- 计算机软件实习每日学习打卡(1)20201130
- 1.MySQL增删改查(初阶)
- 案例解读 | 重视管理会计,让永辉超市从生鲜市场破局
- 容联云 实现验证码发送
- PP体育APP产品体验报告
- 建设网站对服务器配置的要求标准?
- 打开MyMPC的双字幕显示模式
热门文章
- 深度强化学习(DRL)专栏(一)
- 微信小程序优化多次跳转后卡顿问题
- AP:发票匹配采购PO
- python linux apt,Linux Mint 19上的Python3.7“No module named apt_pkg”错误
- 第11回	我猜小曹不会用Broadcast
- 两大权威机构点赞百度AI,“技术为王”时代的中国旗帜
- ai自动配音_AI全自动剪辑视频软件4.3版,新增双语字幕条人工配音功能!
- 关于Facebook Web端第三方登录
- 浅入浅出Oracle Spatial GeoRaster 10g影像数据管理(2)
- 从纪念碑谷的收益看小而美的游戏的盈利困境