Firefly开源社区

12345... 13
发表新贴
打印 上一主题 下一主题

firefly-rk3288 SPI OLED 小屏驱动

1234

积分

1

威望

3

贡献

中级创客

Rank: 4

积分
1234
QQ

firefly-rk3288 SPI OLED 小屏驱动

发表于 2016-2-18 11:54:25      浏览:281081 | 回复:127        打印      只看该作者   [复制链接] 楼主
本帖最后由 madman 于 2016-2-18 12:01 编辑

       刚好手头上有个OLED的小屏,就写了个小驱动尝试了下,学习下spi的接口。还是蛮好玩的这种小屏,有以前玩单片机的感觉;P。是在3288 android4.4 pad版的基础上写的,因为这个oled小屏是3线spi模式的(这里的3线只是没有接rx线是了),驱动还是按照通用的4线写的,也就是这里只验证了发数据。比较要注意下的是数据的大端小端格式的问题,还是拿示波器把数据一个个抓出来才发现的。不过也留了收数据的接口,应该也差不多的。刚好有可以接发设备的朋友的可以试试。      
     下面是dts的配置和驱动的代码:
  1. &spi0 {
  2.            status = "okay";
  3.         max-freq = <48000000>;
  4.          spidev@00 {
  5.                 compatible = "spi,oled";
  6.                 reg = <0x00>;
  7.                 spi-max-frequency = <48000000>;
  8.                 spi-cpha = <1>;
  9.                 spi-cpol = <1>;
  10.                 poll_mode = <0>;
  11.                 type = <0>;
  12.                 //enable_dma = <1>;
  13.                 spi-rst = <&gpio5 GPIO_C0 GPIO_ACTIVE_LOW>;
  14.                 spi-dc = <&gpio7 GPIO_B1 GPIO_ACTIVE_LOW>;
  15.           };
复制代码
CPOL:表示时钟信号的初始电平的状态,0为低电平,1为高电平。
CPHA:表示在哪个时钟沿采样,0为第一个时钟沿采样,1为第二个时钟沿采样
spi-max-frequency:此处设置spi使用的最高频率。
spidev@00:由于本例子使用的是SPI0,且使用CS0,故此处设为00,如果使用CS1,则设为01。
具体wiki上有
面是oled的效果{:3_51:},虽然有点小~:


1.png (279.35 KB, 下载次数: 2380)

1.png

2.jpg (797.34 KB, 下载次数: 2264)

2.jpg

spi-rockchip-oled.c.zip

6.06 KB, 下载次数: 698, 下载积分: 灯泡 -1 , 经验 -1

驱动

回复

使用道具 举报

2918

积分

56

威望

46

贡献

高级创客

Rank: 6Rank: 6

积分
2918

优秀版主论坛元老

发表于 2016-2-18 14:53:42        只看该作者  沙发
好东西,mark
回复

使用道具 举报

发表于 2016-2-19 09:18:31        只看该作者  板凳
赞一个
暴走的创客!
回复

使用道具 举报

18

积分

0

威望

0

贡献

技术小白

积分
18
发表于 2016-3-23 09:24:31        只看该作者  地板
@zhansb 与 @ madman : 请问你们这个驱动 哪个Driver 路径?  Makefile 与 Kconfig 能告知吗?
回复

使用道具 举报

18

积分

0

威望

0

贡献

技术小白

积分
18
发表于 2016-3-23 09:25:28        只看该作者  5#
我们想试试这个.
回复

使用道具 举报

1234

积分

1

威望

3

贡献

中级创客

Rank: 4

积分
1234
QQ
发表于 2016-3-23 10:15:00        只看该作者  6#
Vera 发表于 2016-3-23 09:24
@zhansb 与 @ madman : 请问你们这个驱动 哪个Driver 路径?  Makefile 与 Kconfig 能告知吗?

一般是将附件的驱动放在kernel/drivers/spi/ ,然后自己添加好对应的Makefile和Kconfig就可以了
回复

使用道具 举报

18

积分

0

威望

0

贡献

技术小白

积分
18
发表于 2016-3-23 10:20:02        只看该作者  7#
@zhansb 与 @ madman : 请问你们这个驱动放在 哪个Driver 路径下?  Makefile 与 Kconfig 能分享下吗?
回复

使用道具 举报

18

积分

0

威望

0

贡献

技术小白

积分
18
发表于 2016-3-23 10:24:14        只看该作者  8#
@ madman ,  好的;  我们先试试,有问题在请教. 感谢!
回复

使用道具 举报

18

积分

0

威望

0

贡献

技术小白

积分
18
发表于 2016-3-23 17:06:34        只看该作者  9#
@ madman  & @zhansb:  这个我这边老有这个错误.   请帮忙看看,谢谢!

CC      drivers/spi/spi-rockchip-oled.o
drivers/spi/spi-rockchip-oled.c: In function 'myspidev_write':
drivers/spi/spi-rockchip-oled.c:280:10: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
drivers/spi/spi-rockchip-oled.c:288:10: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
drivers/spi/spi-rockchip-oled.c: In function 'OLED_Init':
drivers/spi/spi-rockchip-oled.c:400:2: warning: 'return' with a value, in function returning void [enabled by default]
drivers/spi/spi-rockchip-oled.c: In function 'gpio_init':
drivers/spi/spi-rockchip-oled.c:522:2: warning: passing argument 4 of 'of_get_named_gpio_flags' from incompatible pointer type [enabled by default]
include/linux/of_gpio.h:50:12: note: expected 'enum of_gpio_flags *' but argument is of type 'int *'
drivers/spi/spi-rockchip-oled.c:534:2: warning: passing argument 4 of 'of_get_named_gpio_flags' from incompatible pointer type [enabled by default]
include/linux/of_gpio.h:50:12: note: expected 'enum of_gpio_flags *' but argument is of type 'int *'
  GEN     drivers/video/rockchip/screen/lcd.h
  LD      drivers/spi/built-in.o
  LD      drivers/built-in.o
回复

使用道具 举报

553

积分

1

威望

3

贡献

技术大神

Rank: 3Rank: 3

积分
553
发表于 2016-4-1 17:18:40        只看该作者  10#
请教楼主,为什么适配后,cmd和reset角始终是低电平,拉高也不生效。
回复

使用道具 举报

返回列表
12345... 13
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表