SSD1322基于Linux的3-wire SPI驱动及应用

ssd1322有四种驱动方式:

  • 8-bit 6800/8080-series parallel interface
  • 3/4-wire Serial Peripheral Interface

 我选择的是用3线SPI模式对屏幕进行驱动。

驱动代码如下:

#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/device.h>
#include <linux/init.h>
#include <linux/gpio.h>
#include <linux/spi/spi.h>
#include <linux/delay.h>

#include "fbtft.h"

#define DRVNAME     "fb_ssd1322"
#define WIDTH       256
#define HEIGHT      64

static int init_display(struct fbtft_par *par)
{
	par->fbtftops.reset(par);
       mdelay(100);

	write_reg(par, 0xFD, 0x12);
	write_reg(par, 0xAE);
	write_reg(par, 0xB3, 0x91);
	write_reg(par, 0xCA, 0x3F);
	write_reg(par, 0xA2, 0x00);
	write_reg(par, 0xA1, 0x00);
	write_reg(par, 0xA0, 0x14, 0x11);
    write_reg(par, 0xB5, 0x00);
    write_reg(par, 0xAB, 0x01);
    write_reg(par, 0xB4, 0xA0, 0xF8);
	write_reg(par, 0xC1, 0xEF);
	write_reg(par, 0xC7, 0xFF);
	write_reg(par, 0xB8, 0x0C, 0x18, 0x24, 0x30, 0x3C, 0x48, 0x54, 0x60, 0x6C, 0x78, 0x84, 0x90, 0x9C, 0xA8, 0xB4);
	write_reg(par, 0x00);
	write_reg(par, 0xB1, 0xE2);
	write_reg(par, 0xD1, 0xA2, 0x20);
	write_reg(par, 0xBB, 0x1F);
	write_reg(par, 0xB6, 0x08);
	write_reg(par, 0xBE, 0x07);
	write_reg(par, 0xA6);
	write_reg(par, 0xA9);
    mdelay(100);
	write_reg(par, 0xAF);

	return 0;
}

static void set_addr_win(struct fbtft_par *par, int xs, int ys, int xe, int ye)
{
	write_reg(par, 0x15, 0x00, 0x7F);
	write_reg(par, 0x75, 0x00, 0x7F);
	write_reg(par, 0x5c);
}

static int blank(struct fbtft_par *par, bool on)
{
	fbtft_par_dbg(DEBUG_BLANK, par, "%s(blank=%s)\n", __func__, on ? "true" : "false");
	if (on)
		write_reg(par, 0xAE);
	else
		write_reg(par, 0xAF);
	return 0;
}

static struct fbtft_display display = {
	.regwidth = 8,
	.width = WIDTH,
	.height = HEIGHT,
	.fbtftops = {
		.init_display = init_display,
		.set_addr_win  = set_addr_win,
		.blank = blank,
	},
};

FBTFT_REGISTER_DRIVER(DRVNAME, "solomon,ssd1322", &display);

MODULE_ALIAS("spi:" DRVNAME);
MODULE_ALIAS("platform:" DRVNAME);
MODULE_ALIAS("spi:ssd1322");
MODULE_ALIAS("platform:ssd1322");

MODUL
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

happydesigner

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值