Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
Devices
液晶屏驱动 U8g2 移植
发布于 2018-09-23 19:58:27 浏览:12987
订阅该版
* 本帖最后由 wuhanstudio 于 2019-4-21 22:24 编辑 * ![u8g2_logo.png](/uploads/201809/23/200120o8vgk434dkovt2gc.png) U8g2 是一个我非常喜欢的单侧液晶屏驱动,所以试了一下能不能在 rt-thread 上运行。 U8g2 支持非常多的单色液晶屏驱动 [https://github.com/olikraus/u8g2/wiki](https://github.com/olikraus/u8g2/wiki) ![FastAdmin]() Todo List: ( 完成了的部分我会随时在这里更新 ) [ ● ] 硬件 I2C / Hardware I2C [ ● ] 硬件 SPI / Hardware SPI [ ● ] 软件 I2C / Software I2C [ ● ] 软件 SPI / Software SPI (感谢 #11 [jzz](https://www.rt-thread.org/qa/space-uid-11122.html) 帮助) [ ● ] 8080 & 6800 [ ● ] 不同单色屏配置模板 ![FastAdmin](https://www.rt-thread.org/qa/static/image/hrline/line3.png) 试了一下在 STM32F103RCT6 上成功运行 [https://github.com/wuhanstudio/rt-u8g2](https://github.com/wuhanstudio/rt-u8g2) 用的是 GPIO 模拟 I2C 总线,液晶屏旁边是 I2C 总线的 YL-40 模块,用来测试 I2C 总线是否正常工作。 ![IMG_20180923_192537.jpg](/uploads/201809/23/195615ct0fwpltz07wrf2r.jpg) ![IMG_20181218_224628.jpg](/uploads/201812/18/225820sdz8mf13nkc82cdq.jpg) ![st7920.jpg](/uploads/201812/28/150330lovw9hg5qongeovx.jpg) 因为我手头没有那么多开发板和液晶屏,所以没办法全部测试。 但我有时间会多测试一些的,欢迎大家一起帮忙测试不同的板子和液晶屏 :loveliness: ![FastAdmin]() 项目主页: [https://github.com/wuhanstudio/rt-u8g2](https://github.com/wuhanstudio/rt-u8g2) 相关项目: [https://github.com/wuhanstudio/u8g2-arm-linux/](https://github.com/wuhanstudio/u8g2-arm-linux/) (在 Arm-Linux 上的移植)
查看更多
41
个回答
默认排序
按发布时间排序
bernard
2018-09-24
这家伙很懒,什么也没写!
欢迎加入到RT-Thread package中,这样大家可以通过env & menuconfig直接使用
armink
2018-09-24
这家伙很懒,什么也没写!
厉害,这个库还是挺实用的,期待作成软件包哈
wuhanstudio
2018-09-24
这家伙很懒,什么也没写!
>欢迎加入到RT-Thread package中,这样大家可以通过env & menuconfig直接使用 --- 因为手上只有 I2C 接口的液晶屏,之后我试下 GPIO 和 SPI 的 LCD,如果也能正常运行我提交一个 PR 把 ;)
wuhanstudio
2018-09-24
这家伙很懒,什么也没写!
>厉害,这个库还是挺实用的,期待作成软件包哈 --- 谢谢 :) 我先多测试一些屏,比较稳定后我会提交一个 PR
armink
2018-09-24
这家伙很懒,什么也没写!
GPIO 和 SPI RT-Thread 也有设备框架,都使用框架后,这个软件包的通用性就非常强了。
wuhanstudio
2018-09-24
这家伙很懒,什么也没写!
>GPIO 和 SPI RT-Thread 也有设备框架,都使用框架后,这个软件包的通用性就非常强了。 ... --- 确实,硬件 I2C / SPI 我会尽量使用 rt-thread 的 API,软件 I2C / SPI 看样子 rt-thread 有提供。 我刚添加了要之后完成的部分列表,寒假左右应当会慢慢完成。
yushigengyu
认证专家
2018-09-25
这家伙很懒,什么也没写!
这个库我在多个平台移植过 可移植性很强
风来吴山
2018-09-25
这家伙很懒,什么也没写!
给力啊,赞
flyboy
2018-10-13
Do my self();
支持一下
jzz
2018-11-30
这家伙很懒,什么也没写!
[i=s] 本帖最后由 jzz 于 2018-11-30 13:18 编辑 [/i] 我把u8g2的4线SPI模式ssd1306示例写好了,代码如下: ssd1306_example_4wire_sw_spi.c ``` //这里就不写include了,和包里已经有的那个i2cexample一样就行 void ssd1306_example_4wire_sw_spi(int argc,char *argv[]) { u8g2_t u8g2; u8g2_Setup_ssd1306_128x64_noname_f( &u8g2, U8G2_R0, u8x8_byte_4wire_sw_spi, u8x8_rt_sw_spi_gpio_and_delay); u8g2_InitDisplay(&u8g2); u8g2_SetPowerSave(&u8g2, 0); /* full buffer example, setup procedure ends in _f */ u8g2_ClearBuffer(&u8g2); u8g2_SetFont(&u8g2, u8g2_font_baby_tf); u8g2_DrawStr(&u8g2, 1, 18, "U8g2 on RT-Thread 中文"); u8g2_SendBuffer(&u8g2); u8g2_SetFont(&u8g2, u8g2_font_unifont_t_symbols); u8g2_DrawGlyph(&u8g2, 112, 56, 0x2603 ); u8g2_SendBuffer(&u8g2); rt_thread_delay(2000); u8g2_DrawBox(&u8g2,1,1,128,64); u8g2_SendBuffer(&u8g2); } MSH_CMD_EXPORT(ssd1306_example_4wire_sw_spi, sw 4wire spi ssd1306 sample); ``` 在u8g2_port.c中添加一个函数 ``` uint8_t u8x8_rt_sw_spi_gpio_and_delay(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr) { switch(msg) { case U8X8_MSG_GPIO_AND_DELAY_INIT: //Function which implements a delay, arg_int contains the amount of ms //set mode rt_pin_mode(pin_clk,PIN_MODE_OUTPUT);//d0 a5 15 d1 a7 17 res b0 18 dc b1 19 cs a4 14 rt_pin_mode(pin_mosi,PIN_MODE_OUTPUT); rt_pin_mode(pin_res,PIN_MODE_OUTPUT); rt_pin_mode(pin_dc,PIN_MODE_OUTPUT); rt_pin_mode(pin_cs,PIN_MODE_OUTPUT); //set value rt_pin_write(pin_clk,1); rt_pin_write(pin_mosi,1); rt_pin_write(pin_res,1); rt_pin_write(pin_dc,1); rt_pin_write(pin_cs,1); break; case U8X8_MSG_DELAY_MILLI: //Function which implements a delay, arg_int contains the amount of ms rt_thread_delay(arg_int); break; case U8X8_MSG_DELAY_10MICRO: //Function which delays 10us break; case U8X8_MSG_DELAY_100NANO: //Function which delays 100ns break; case U8X8_MSG_GPIO_SPI_CLOCK: //Function to define the logic level of the clockline if (arg_int) rt_pin_write(pin_clk,1); else rt_pin_write(pin_clk,0); break; case U8X8_MSG_GPIO_SPI_DATA: //Function to define the logic level of the data line to the display if (arg_int) rt_pin_write(pin_mosi,1); else rt_pin_write(pin_mosi,0); break; case U8X8_MSG_GPIO_CS: // Function to define the logic level of the CS line if(arg_int) rt_pin_write(pin_cs,1); else rt_pin_write(pin_cs,0); break; case U8X8_MSG_GPIO_DC: //Function to define the logic level of the Data/ Command line if(arg_int) rt_pin_write(pin_dc,1); else rt_pin_write(pin_dc,0); break; case U8X8_MSG_GPIO_RESET: //Function to define the logic level of the RESET line if (arg_int) rt_pin_write(pin_res,1); else rt_pin_write(pin_res,0); break; default: return 0; //A message was received which is not implemented, return 0 to indicate an error } return 1; } ``` pin_dc,pin_cs之类的是gpio的定义,根据自己的引脚选择,我这里是 ``` #define pin_clk 15 #define pin_mosi 17 #define pin_res 18 #define pin_dc 19 #define pin_cs 14 ``` 然后在对应的u8g2_port.h文件中添加声明,把新加的.c添加到sconscript脚本中去,编译就行,另外我有几个问题: [list=1] [*]引脚定义宏能不能加入到Kconfig中去,然后c代码从中导入? [*]经过逻辑分析仪分析,我这个程序的效率比不使用图形库的裸机测试程序慢十倍左右,这正常吗,还是说底层回调函数不用rtt的gpio设备框架能快很多? [*]这里的多人协作是基于bsp的,然而我用的stm32f10x和官方bsp中的不一样,多处参数需要修改,这种情况下,做点小贡献怕是有点难?不知道怎么操作 [*]这个软件包在楼主的仓库里面,如果其他人为这个软件包添砖加瓦是不是应该提交到楼主的仓库? [*]我这里用的c8t6flash有点紧张,有没有什么减小体积的方法,总感觉链接了一堆别的什么东西 [/list]
撰写答案
登录
注册新账号
关注者
0
被浏览
13k
关于作者
wuhanstudio
这家伙很懒,什么也没写!
提问
12
回答
243
被采纳
6
关注TA
发私信
相关问题
1
问个问题,ili9320驱动里面rt_hw_lcd_draw_blit_line 这个函数是干什么用的
2
LCD双缓冲有什么好的办法实现
3
LCD NT35510 驱动代码
4
io设备驱动的疑惑与建议
5
求助:在模板上添加LCD模块出现L6406E错误
6
hwtimer硬件定时器驱动和使用经验
7
硬件定时器超时时间计算问题
8
请教spi驱动lcd显示屏问题
9
rtt-master(3.1.1)bsp—armfly中drv_lcd.c中是不是错了啊?
10
不使用 RT-Thread 的驱动框架结构可以吗?
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
【RT-Thread】记录一次对主仓的bsp进行修复并提交pr的总结
2
【请投票】嵌入式大赛Top10排名等你来选!
3
【24嵌入式设计大赛】HPM5300-EVK 网络测速仪
4
RT-Thread Nano 上线ST CubeMX
5
Nordic移植笔记: RT_Thread v5.1.0(基于Nordic nRF52840的ble_app_hids_mouse工程)
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
ART-Pi
FinSH
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
ESP8266
I2C_IIC
WIZnet_W5500
ota在线升级
UART
flash
packages_软件包
cubemx
PWM
freemodbus
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
rt_mq_消息队列_msg_queue
keil_MDK
C++_cpp
ulog
at_device
SFUD
本月问答贡献
出出啊
1515
个答案
342
次被采纳
小小李sunny
1438
个答案
289
次被采纳
张世争
786
个答案
168
次被采纳
crystal266
546
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
出出啊
1
篇文章
6
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
2
次点赞
crystal266
2
篇文章
1
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部