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:},虽然有点小~:
好东西,mark 赞一个 @zhansb 与 @ madman : 请问你们这个驱动 哪个Driver 路径?Makefile 与 Kconfig 能告知吗? 我们想试试这个. Vera 发表于 2016-3-23 09:24
@zhansb 与 @ madman : 请问你们这个驱动 哪个Driver 路径?Makefile 与 Kconfig 能告知吗?
一般是将附件的驱动放在kernel/drivers/spi/ ,然后自己添加好对应的Makefile和Kconfig就可以了 @zhansb 与 @ madman : 请问你们这个驱动放在 哪个Driver 路径下?Makefile 与 Kconfig 能分享下吗? @ madman ,好的;我们先试试,有问题在请教. 感谢! @ 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
请教楼主,为什么适配后,cmd和reset角始终是低电平,拉高也不生效。