linux下的oled驱动gpio模拟spi(基于AM335X)

本文介绍了在Linux 3.2.0版本下,使用GPIO模拟SPI驱动HGS256642 OLED显示屏的过程。OLED采用四线SPI通信,RS线用于命令/数据选择。文章详细讲解了时序、驱动编写方法,以及波特率限制。实测显示,GPIO模拟SPI的最高稳定波特率约400K,超过2M会导致控制不稳定,且OLED自身最大支持2M的SPI速率。
摘要由CSDN通过智能技术生成

【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:liufei191010@126.com】 

使用的OLED型号为:HGS256642

它的应用电路如下

属于四线SPI通信方式,但是它的MISO端口没有被接出来,所以spi的读取是不用实现的,但是又多出来一条线(RS),这个端口的作用是为OLED进行写命令或者写数据的控制。

时序如下所示:

spi控制时序如下:

由于基于的linux版本为3.2.0,并且这个驱动非常简单,所以使用独立的模块式的驱动编写方法,而没有使用linux提供的总线设备驱动框架的驱动编写方式,代码如下(其中包含了gpio的测试代码):

//oledspi.c
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/fs.h>
#include <linux/init.h>
#include <linux/delay.h>
#include <linux/irq.h>
#include <asm/uaccess.h>
#include <asm/irq.h>
#include <asm/io.h>
#include <linux/platform_device.h>
#include <linux/poll.h>
#include <linux/leds.h>
#include <linux/io.h>
#include <linux/cdev.h>
#include <linux/types.h>
#include <mach/gpio.h>
#include <plat/mux.h>
#include <linux/gpio.h>

#define  STATUS_SUCCESS	0
#define  STATUS_FAILURE -1

static struct class *oledspi_class;
static struct device	*oledspi_class_dev;
static int major;
static unsigned char TxBuf[24] = 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值