madman 发表于 2016-2-18 11:54:25

firefly-rk3288 SPI OLED 小屏驱动

本帖最后由 madman 于 2016-2-18 12:01 编辑

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


zhansb 发表于 2016-2-18 14:53:42

好东西,mark

暴走的阿Sai 发表于 2016-2-19 09:18:31

赞一个

Vera 发表于 2016-3-23 09:24:31

@zhansb 与 @ madman : 请问你们这个驱动 哪个Driver 路径?Makefile 与 Kconfig 能告知吗?

Vera 发表于 2016-3-23 09:25:28

我们想试试这个.

madman 发表于 2016-3-23 10:15:00

Vera 发表于 2016-3-23 09:24
@zhansb 与 @ madman : 请问你们这个驱动 哪个Driver 路径?Makefile 与 Kconfig 能告知吗?

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

Vera 发表于 2016-3-23 10:20:02

@zhansb 与 @ madman : 请问你们这个驱动放在 哪个Driver 路径下?Makefile 与 Kconfig 能分享下吗?

Vera 发表于 2016-3-23 10:24:14

@ madman ,好的;我们先试试,有问题在请教. 感谢!

Vera 发表于 2016-3-23 17:06:34

@ 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
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
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
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:40

请教楼主,为什么适配后,cmd和reset角始终是低电平,拉高也不生效。
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: firefly-rk3288 SPI OLED 小屏驱动