Firefly开源社区

标题: firefly-rk3288 SPI OLED 小屏驱动 [打印本页]

作者: madman    时间: 2016-2-18 11:54
标题: firefly-rk3288 SPI OLED 小屏驱动
本帖最后由 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, 下载次数: 568)

1.png

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

2.jpg

spi-rockchip-oled.c.zip

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

驱动


作者: zhansb    时间: 2016-2-18 14:53
好东西,mark
作者: 暴走的阿Sai    时间: 2016-2-19 09:18
赞一个
作者: Vera    时间: 2016-3-23 09:24
@zhansb 与 @ madman : 请问你们这个驱动 哪个Driver 路径?  Makefile 与 Kconfig 能告知吗?
作者: Vera    时间: 2016-3-23 09:25
我们想试试这个.
作者: madman    时间: 2016-3-23 10:15
Vera 发表于 2016-3-23 09:24
@zhansb 与 @ madman : 请问你们这个驱动 哪个Driver 路径?  Makefile 与 Kconfig 能告知吗?

一般是将附件的驱动放在kernel/drivers/spi/ ,然后自己添加好对应的Makefile和Kconfig就可以了
作者: Vera    时间: 2016-3-23 10:20
@zhansb 与 @ madman : 请问你们这个驱动放在 哪个Driver 路径下?  Makefile 与 Kconfig 能分享下吗?
作者: Vera    时间: 2016-3-23 10:24
@ madman ,  好的;  我们先试试,有问题在请教. 感谢!
作者: Vera    时间: 2016-3-23 17:06
@ 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

作者: qingfeng623    时间: 2016-4-1 17:18
请教楼主,为什么适配后,cmd和reset角始终是低电平,拉高也不生效。
作者: madman    时间: 2016-4-5 09:16
qingfeng623 发表于 2016-4-1 17:18
请教楼主,为什么适配后,cmd和reset角始终是低电平,拉高也不生效。

reset是小屏要用到的控制脚,驱动里用io控制,你说的cmd是片选csn?拉高不生效应该是你没控制到io
作者: qingfeng623    时间: 2016-4-5 15:27
madman 发表于 2016-4-5 09:16
reset是小屏要用到的控制脚,驱动里用io控制,你说的cmd是片选csn?拉高不生效应该是你没控制到io

gpio_direction_output在gpio_init时调用之后,不用gpio_set_value去设置gpio角的电平吗?
作者: yokir    时间: 2016-4-21 15:46
正在做 ,谢谢楼主分享。:lol
作者: sun_shine    时间: 2016-5-3 08:37
灯泡+1
作者: gyj82117    时间: 2016-6-27 18:33
支持一个
作者: xiaofei    时间: 2016-7-26 11:06
谢谢
作者: wangpeng1108    时间: 2016-9-9 11:14
赞一个!!
作者: alaode    时间: 2016-9-10 09:47
如何有积分那

作者: alaode    时间: 2016-9-11 06:30
沙发
拉哩哩啦啦
作者: alaode    时间: 2016-9-14 13:32
来个灯泡

作者: dairy_cow    时间: 2016-9-26 21:14
mark+1
作者: zzyzjdy    时间: 2016-9-28 14:08
look look look
作者: Galen    时间: 2016-10-2 21:37

作者: 东风21    时间: 2016-10-25 12:35
谢谢LZ,谢谢LZ,最近一直在搞mcp2515的spi驱动,一直没通,看看这个熟悉一下spi的工作方式
作者: chengkni    时间: 2016-10-25 15:56
现在下来学习学习
作者: 东曦曦    时间: 2016-10-25 16:14
大神可以做一个Ubuntu14.04系统到适配官网7.8寸液晶屏的驱动么  {:4_214:}
作者: madman    时间: 2016-10-26 10:14
东曦曦 发表于 2016-10-25 16:14
大神可以做一个Ubuntu14.04系统到适配官网7.8寸液晶屏的驱动么

添加方法kernel跟android差不多的,对比参照下官网的方法就好了,我手上没7.8屏
作者: zzyzjdy    时间: 2016-12-11 16:01
qqqqqwwweerrttyuuj
作者: zzyzjdy    时间: 2016-12-11 16:02
qqqqqqweerr
作者: ulyuing    时间: 2017-2-28 18:55
厉害了楼主
作者: 22222    时间: 2017-4-6 23:14
东风21 发表于 2016-10-25 12:35
谢谢LZ,谢谢LZ,最近一直在搞mcp2515的spi驱动,一直没通,看看这个熟悉一下spi的工作方式

哥们,mcp2512的spi驱动搞出来了吗?能否分享一下你的源码?
作者: 东风21    时间: 2017-4-7 14:11
22222 发表于 2017-4-6 23:14
哥们,mcp2512的spi驱动搞出来了吗?能否分享一下你的源码?

没有源码,都是mcp的官方驱动,照着改就可以了
作者: 22222    时间: 2017-4-7 15:27
东风21 发表于 2017-4-7 14:11
没有源码,都是mcp的官方驱动,照着改就可以了

我无论怎该dts和驱动,都出不来spidev这个设备问题,probe函数里面的调试打印也没有出来。 而且我核对了好几遍了compatible里面的参数是一样的,就是无法匹配
作者: 22222    时间: 2017-4-8 11:28
东风21 发表于 2017-4-7 14:11
没有源码,都是mcp的官方驱动,照着改就可以了

能否让我看一下你在dts里面是如何配置mcp2515的吗?
作者: 东风21    时间: 2017-4-11 20:43
22222 发表于 2017-4-8 11:28
能否让我看一下你在dts里面是如何配置mcp2515的吗?

3.1的内核驱动有问题,我换成了4.4内核的驱动,这样是可以的
作者: 22222    时间: 2017-4-12 09:08
东风21 发表于 2017-4-11 20:43
3.1的内核驱动有问题,我换成了4.4内核的驱动,这样是可以的

我调了几天了,发现3.1的内核无法读写mcp2515的寄存器,只能将CS信号单独用GPIO控制才能读写成功。现在还得外部配一个gpio的驱动才能使用mcp2515
作者: 东风21    时间: 2017-4-12 14:03
22222 发表于 2017-4-12 09:08
我调了几天了,发现3.1的内核无法读写mcp2515的寄存器,只能将CS信号单独用GPIO控制才能读写成功。现在还 ...

我现在是这样,直接升级到4.4的内核,MCP2515的驱动都是正常的
作者: 东风21    时间: 2017-4-12 14:05
22222 发表于 2017-4-12 09:08
我调了几天了,发现3.1的内核无法读写mcp2515的寄存器,只能将CS信号单独用GPIO控制才能读写成功。现在还 ...

加个qq交流一下吧,1286093953
作者: lichujack    时间: 2017-4-20 09:41
Mark
作者: 吟风子燕    时间: 2017-5-6 15:01
十分感谢
作者: 吟风子燕    时间: 2017-5-6 15:22
没有发现对设备树的属性解析,只解析了那2个IO口,不知道属性怎么弄,麻烦楼主回答一下
作者: heromen1    时间: 2017-5-10 09:31
学习
作者: zygcs    时间: 2017-6-7 14:08




作者: sunbird606    时间: 2017-6-17 20:52
赞一个
作者: wuQAQ    时间: 2017-7-5 22:27
为什么重复下载会扣多灯泡
作者: a2373392    时间: 2017-10-6 10:52
研究SPI,正需要
作者: amberfly    时间: 2017-10-10 13:26
谢谢分享
作者: wuzongqiang193    时间: 2017-10-27 09:43
谢谢楼主分享,学习一下

作者: wuzongqiang193    时间: 2017-10-27 09:43
谢谢楼主分享,学习一下
作者: kinggate    时间: 2017-11-3 09:47
很不错,谢谢分享
作者: gn5969625    时间: 2017-12-18 14:16

赞一个
作者: shm    时间: 2017-12-18 16:22
顶一个~
作者: pumpkinZhu    时间: 2018-1-31 16:34

顶一个~
作者: Richard    时间: 2018-4-11 09:52
多谢楼主
作者: chnchmhgw    时间: 2018-5-21 19:57
谢谢
作者: chnchmhgw    时间: 2018-5-29 16:51
你好,参考你的代码,我在aio-3288j平台上,编译好了驱动代码,/dev目录下面也产生了设备,利用的是真实的spi2接口,oled显示屏无输出;
利用逻辑分析仪测试,也没有抓取到tx, clk,cs的波形,是什么原因,谢谢!
作者: chnchmhgw    时间: 2018-5-31 10:24
你好,楼主,参考你的代码,我使用AIO-3288J开发板(android系统),编译成功,/dev目录下成功创建设备点,/sys/class目录下文件也创建成功;

使用逻辑分析仪,检测tx,clk,cs都没有波形产生,查看内核信息,爆出如下错误,软中断有误;一起帮忙看下,啥原因,谢谢!

另外问下,dts中的spi-rst和spi-dc需要如何设置具体的gpio?我使用AIO-3288J真实的spi2进行开发,dts设置和spi2原理图设置如下:


内核信息打印错误:
[    1.095714] [<c0013ec4>] (unwind_backtrace+0x0/0xe0) from [<c001176c>] (show_stack+0x10/0x14)
[    1.095741] [<c001176c>] (show_stack+0x10/0x14) from [<c02785d8>] (Ldiv0+0x8/0x10)
[    1.095768] [<c02785d8>] (Ldiv0+0x8/0x10) from [<c034d568>] (pump_transfers+0x4c/0x67c)
[    1.095793] [<c034d568>] (pump_transfers+0x4c/0x67c) from [<c003e78c>] (tasklet_action+0x80/0xe0)
[    1.095813] [<c003e78c>] (tasklet_action+0x80/0xe0) from [<c003df24>] (__do_softirq+0x144/0x2b4)
[    1.095832] [<c003df24>] (__do_softirq+0x144/0x2b4) from [<c003e0c4>] (run_ksoftirqd+0x30/0x78)
[    1.095853] [<c003e0c4>] (run_ksoftirqd+0x30/0x78) from [<c005d4d8>] (smpboot_thread_fn+0x22c/0x234)
[    1.095878] [<c005d4d8>] (smpboot_thread_fn+0x22c/0x234) from [<c00561bc>] (kthread+0xa0/0xac)
[    1.095905] [<c00561bc>] (kthread+0xa0/0xac) from [<c000da98>] (ret_from_fork+0x14/0x3c)
作者: 用户名    时间: 2018-7-17 10:53
我要下啧啧啧啧啧啧啧啧啧
作者: 13426310867    时间: 2018-7-19 11:34
我是完全按照操作步骤做的啊,/dev/下找不到设备,在/proc/devices里有已注册的设备号为245,我是android系统的5.1的源码加入的。make nod 的话,在/dev下会出现设备,使用命令echo 0 > /dev/spi 会导致系统崩溃。也出现了probe函数没执行的情况。纠结中。。。
作者: 13426310867    时间: 2018-7-19 11:47
Vera 发表于 2016-3-23 17:06
@ madman  & @zhansb:  这个我这边老有这个错误.   请帮忙看看,谢谢!

CC      drivers/spi/spi-rockchip ...

你这个错误我也遇到了,修改了kernel/scripts/gcc-wrapper.py 文件。具体修改方法:https://blog.csdn.net/ppt060984/article/details/17371731
作者: 13426310867    时间: 2018-7-19 11:47
Vera 发表于 2016-3-23 17:06
@ madman  & @zhansb:  这个我这边老有这个错误.   请帮忙看看,谢谢!

CC      drivers/spi/spi-rockchip ...

你这个错误我也遇到了,修改了kernel/scripts/gcc-wrapper.py 文件。具体修改方法:https://blog.csdn.net/ppt060984/article/details/17371731
作者: 13426310867    时间: 2018-7-19 11:47
Vera 发表于 2016-3-23 17:06
@ madman  & @zhansb:  这个我这边老有这个错误.   请帮忙看看,谢谢!

CC      drivers/spi/spi-rockchip ...

你这个错误我也遇到了,修改了kernel/scripts/gcc-wrapper.py 文件。具体修改方法:https://blog.csdn.net/ppt060984/article/details/17371731
作者: 天道酬勤David    时间: 2018-7-30 10:38
不错不错,最近最近也在做,正收集资料调试一下看看。
作者: myafeier    时间: 2018-9-17 18:29
markddd
作者: loading    时间: 2018-9-19 10:54
是否也可以用这方法点墨水屏呢? {:4_103:}
作者: linuxfor    时间: 2018-10-15 15:16
赞,学习了
作者: wennnnnng    时间: 2018-10-16 17:49
l楼主你好,我无法下载附件驱动,方便邮箱发一份吗?363085885,万分感谢
作者: zcsong    时间: 2018-10-17 10:37
试一下
作者: sylanjun    时间: 2018-10-19 17:38

好东西,mark
作者: suntao945firefl    时间: 2018-10-21 19:52
东风21 发表于 2016-10-25 12:35
谢谢LZ,谢谢LZ,最近一直在搞mcp2515的spi驱动,一直没通,看看这个熟悉一下spi的工作方式

你好,我现在用的是3399 4.4的内核,发现一加载mcp251x.ko就会死机,追到probe里面,发现在spi_setup这个接口就挂了,没有任何打印。看你们的交流说4.4kernel驱动是好的,请问我改往上面方向去查?
&spi5{
        status = "okay";
        max-freq = <25000000>;
        //dmas = <&dmac_bus 8>, <&dmac_bus 9>;
        //dma-names = "tx", "rx";

        can0:can@0 {
                compatible = "microchip,mcp2515";
                reg = <0>;
                clocks = <&clk8m>;
                spi-max-frequency = <10000000>;
                //interrupt-parent = <&gpio2>;
                //interrupts = <26 IRQ_TYPE_EDGE_FALLING>;
                //vdd-supply = <&vcc3v3_s0>;
                //xceiver-supply = <&vcc3v3_s0>;
                //xceiver-supply = <&vcc5v0_host>;
                status = "okay";
        };
};

作者: shaniadolphin    时间: 2018-10-26 18:36
这个驱动示范很好
作者: shaniadolphin    时间: 2018-10-28 10:04
能不能把这个屏注册成FB设备?树莓派上有参考,不过没有成功,买的240*240的彩屏没有驱动起来
作者: huangwanjie    时间: 2019-1-28 17:05
suntao945firefl 发表于 2018-10-21 19:52
你好,我现在用的是3399 4.4的内核,发现一加载mcp251x.ko就会死机,追到probe里面,发现在spi_setup这个 ...

兄弟,你的spi转can调通了吗,能否分享一下经验,可以的话加个qq1562595646,有疑问想请教你,拜托了!
作者: rkgaofei    时间: 2019-3-21 13:54
请问怎么才能下载?
作者: EvanPeng    时间: 2019-5-25 22:32
可以
作者: 中华    时间: 2019-6-21 08:41
我也想下来看看,可惜没权限,谁有资料发我一下
作者: 一条鱼的海    时间: 2019-7-16 11:24

作者: luyqrs    时间: 2019-7-16 15:35
牛叉
作者: 一条鱼的海    时间: 2019-7-18 11:38
Vera 发表于 2016-3-23 17:06
@ madman  & @zhansb:  这个我这边老有这个错误.   请帮忙看看,谢谢!

CC      drivers/spi/spi-rockchip ...

语法问题
作者: 闻风落木    时间: 2019-8-9 11:04
123
作者: zhoum    时间: 2019-9-11 13:48
感谢分享
作者: 好好先生@163    时间: 2019-9-28 10:52
还不能下载,mark
作者: hf123    时间: 2020-1-6 15:32
为什么我无权限下载代码呢?
作者: 15817242061    时间: 2020-3-17 22:03
谁能帮帮忙    dts  加MPC2515驱动
作者: 15817242061    时间: 2020-3-17 22:19
mark  能发个MCP2515的相关源码吗? QQ22282646
作者: 有实力又热情洋    时间: 2020-3-29 12:47
MARK
作者: xtx321    时间: 2020-4-9 17:30
感谢分享!
作者: 1341418722    时间: 2020-5-3 21:21
zanzan
作者: ycbs    时间: 2020-5-10 11:10

作者: 扎克波哥    时间: 2020-6-12 18:37
22222 发表于 2017-4-8 11:28
能否让我看一下你在dts里面是如何配置mcp2515的吗?

hi,大哥能发我看一下mcp2512的驱动和dts吗?qq 1030481609,谢谢!
作者: 扎克波哥    时间: 2020-6-12 18:39
huangwanjie 发表于 2019-1-28 17:05
兄弟,你的spi转can调通了吗,能否分享一下经验,可以的话加个qq1562595646,有疑问想请教你,拜托了!

老哥,spi转can的问题能告诉我一下吗?我qq 1030481609 ,谢谢了
作者: 扎克波哥    时间: 2020-6-12 18:43
mark,能看下mcp2515的驱动和dts配置吗? 我qq 1030481609,谢谢了
作者: 扎克波哥    时间: 2020-6-12 18:59
各位大神们,能分享一下spi转can的代码和dts吗?小弟qq 1030481609,谢谢各位了
作者: 扎克波哥    时间: 2020-6-13 07:39
15817242061 发表于 2020-3-17 22:19
mark  能发个MCP2515的相关源码吗? QQ22282646

hi,兄弟能加下我qq吗?咨询一下2515的问题
作者: 扎克波哥    时间: 2020-6-16 13:26
15817242061 发表于 2020-3-17 22:03
谁能帮帮忙    dts  加MPC2515驱动

你好,你的mcp2515 dts和驱动弄好了吗?可以咨询一下吗
作者: 阿姆林纳斯    时间: 2020-6-18 00:16
mark
作者: wx_momo_GB414    时间: 2020-6-30 14:24
感谢分享
作者: hazami2004    时间: 2020-7-20 14:11

十分感谢
作者: zhushengbing    时间: 2020-8-7 11:27
感谢分享,对我很有用
作者: ysjie2013    时间: 2020-8-12 10:56
感谢分享




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1