用TW8836驱动ST7701S TTL屏调试记录
近段时间做一个项目,要调试3.2寸320x820分辨率的LCD。在此做下记录:
屏规格书如上图
屏的主要接口如上图
1.查看屏的规格书,如图所示,需要8836和st7701s通讯,方式是3线SPI。
2.通讯接口SDA,SCK,CS。
3.RGB接口就比较简单了。
下面贴一些主要的函数:
初始化函数,对屏进行复位。在初始化函数里面读屏的ID,如果读到就证明通讯成功了撒。根据描述,读DA,DB,DC也是可以的嘛,读完ID后适当延时再去发命令和数据,不然显示会不正常的,调通之后读不读ID不影响后面发的命令和数据。
初始化成功后就发送命令和数据了,按照屏厂给的参数填数据发送就可以了。
spi_st7701s_WriteCommand( BYTE i);
spi_st7701s_WriteData( BYTE i);屏厂给的格式大概是这样滴:
W_C (0xFF);
W_D (0x77);
W_D (0x01);
W_D (0x00);
W_D (0x00);
W_D (0x13);我的程序里是用的这几个管脚
P3_3 SPI_CS PIN117
P1_0 SPI_DSIO PIN60
P1_1 SPI_SCLK PIN61D/C 第一位 D/C = 0,Commond
D/C = 1,Data
发送完一个字节后,CS必须拉高,如果不拉高接着就是读取数据。SPI时序 eg: send com:0x11 接逻辑分析后再补张逻辑分析仪捉到的图吧。
#define SPI_DSIO P1_0
#define SPI_SCLK P1_1
#define SPI_CS P3_3
#define RST_PANEL P3_7void ST7701S_Init(void)
{BYTE ID1,ID2,ID3;#if 1RST_PANEL = 1;delay1ms(100);#endifRST_PANEL = 0;delay1ms(200);RST_PANEL = 1;#if 0ID1 = Spi_St7701s_ReadByte(0xDA);ID2 = Spi_St7701s_ReadByte(0xDB);ID3 = Spi_St7701s_ReadByte(0xDC);Printf("\nLCD ID:0x%bx 0x%bx 0x%bx", ID1,ID2,ID3);#endif
}
static BYTE Spi_St7701s_ReadByte(BYTE id)
{BYTE i,tmp = 0;SPI_CS = 0;SPI_DSIO = 0;SPI_SCLK = 0;SPI_Dealy(1);SPI_SCLK = 1;SPI_Dealy(1);spi_st7701s_SendData(id);//先写寄存器地址0x04 SPI_SCLK = 0;SPI_DSIO = 1;//设为高阻态输入模式?SPI_Dealy(1);for(i = 0;i < 8;i++){SPI_SCLK = 1;tmp <<= 1; //移位if(SPI_DSIO) tmp |= 1; //读取一位数据SPI_SCLK = 0;}SPI_SCLK = 1;SPI_Dealy(1);SPI_SCLK = 0;SPI_DSIO = 1;SPI_CS = 1;return tmp; //返回数据
}
static void spi_st7701s_SendData(BYTE i)
{unsigned char n;for(n = 0; n < 8; n++) { if(i & 0x80) {SPI_DSIO = 1;} else {SPI_DSIO = 0;}i<<= 1;SPI_SCLK = 0;SPI_Dealy(1);SPI_SCLK = 1;SPI_Dealy(1);}
}
static void spi_st7701s_WriteCommand( BYTE i)
{SPI_CS = 0;SPI_DSIO = 0;SPI_SCLK = 0;SPI_Dealy(1);SPI_SCLK = 1;SPI_Dealy(1);spi_st7701s_SendData(i);SPI_CS = 1;
}
static void spi_st7701s_WriteData( BYTE i)
{SPI_CS = 0;SPI_DSIO = 1;SPI_SCLK = 0;SPI_Dealy(1);SPI_SCLK = 1;SPI_Dealy(1);spi_st7701s_SendData(i);SPI_CS = 1;}
关于程序还有一种发送命令和数据的做法
typedef struct _st7701s_reg {BYTE comm;BYTE val[20];BYTE len;
}st7701s_reg;static CONST st7701s_reg st7701s_organize[] = {/*comm val len*/{0x11,NULL,NULL},{0xFF,{0x77,0x01,0x00,0x00,0x10},5},...//屏厂给的参数
};static void Spi_WriteC_D(st7701s_reg *st7701s_reg_dat)
{#if 1BYTE i,j;for (i = 0; i < 36; ++i)//LEN_ARRAY(st7701s_organize, struct st7701s_reg){spi_st7701s_WriteCommand(st7701s_reg_dat[i].comm);if(st7701s_reg_dat[i].comm == 0x11){ delay1ms(120);}Printf(" \nWriteCommand: %bx,datalen:%bd\n", st7701s_reg_dat[i].comm,st7701s_reg_dat[i].len);for (j = 0; j < st7701s_reg_dat[i].len; ++j)//LEN_ARRAY(st7701s_organize[i].val, BYTE){if (st7701s_reg_dat[i].comm == st7701s_reg_dat[i].val[j]){if (st7701s_reg_dat[i].val[j] == 0xB9) {//LOG("Now Delay 10 ms!\n");delay1ms(10);}break;} //if(st7701s_reg_dat[i].val[j]!=NULL)spi_st7701s_WriteData(st7701s_reg_dat[i].val[j]);if(st7701s_reg_dat[i].comm == 0xD0)delay1ms(100);Printf(" WriteData: %bx", st7701s_organize[i].val[j]);}//Printf(" WriteData: %bx", st7701s_reg_dat[i].val);}#endif
}
#endif
这个是之前在网上找的例程,想贴个连接没找着,找着再说吧。我试过了,好像有点问题,虽然发送数据是一样的,但是屏显示的效果有点差异,可能是延时问题,有时间再看看这个问题。
用TW8836驱动ST7701S TTL屏调试记录相关推荐
- 2022-03-24 RK3566 MIPI屏 调试记录,panel-init-sequence 命令格式介绍
一.Single-channel mipi屏的硬件连接如下: 二.根据屏厂给的初始化代码配置dts了,屏厂给的初始化代码分几种形式,这个文章里面RK PX30_android8.1的mipi屏调试_要 ...
- android 480p分辨率,[RK3399][Android7.1] HDMI显示屏(副屏)调试记录小结
Platform: RK3399 OS: Android 7.1 Kernel: v4.4.83 驱动文件: dw-hdmi.c: HDMI驱动,包括内部I2C接口实现. drm_edid.c: ed ...
- 【墨水屏】1.54寸墨水屏调试记录
某宝某店墨水屏挺便宜,买了几个尝试着使用以下. 同时买了微雪的ESP32墨水屏专用驱动板. 由于1.54寸的小屏节假日期间一直没有发货,所以先用了手头的7.5寸屏测试了一下EPS32驱动板,功能一切正 ...
- 全志平台MIPI屏调试记录
由于项目需要,在全志平台点一块480x1920的MIPI屏,这里将调试过程作下小结. 1.熟悉屏厂规格书,重点在供电电源.上电时序上: 2.配置LVDS显示接口,全志平台,相关的参考配置如下: lcd ...
- android 蓝牙 驱动,转个蓝牙修改帖--Android BCM4330 蓝牙BT驱动调试记录
本帖最后由 旋律2014 于 2014-3-27 09:15 编辑 一.关于BT driver的移植: 1. Enablebluetootch in BoadConfig.mk BOARD_HAVE_ ...
- Nvidia Xavier Nx平台GMSL接口imx390相机驱动调试记录
1.前言 使用GMSL的串行器和解串器9295 9296 两路imx390相机 有两种采集方式, 一种是在前端拼接好作为一路采集: 另一种是独立采集,使用MIPI的虚拟通道. 下面为调试记录 2. 搭 ...
- MCU驱动和RGB驱动的液晶屏的区别
概况来讲,RGB驱动需要的硬件条件高,比如用STM32F429的LTDC+DMA2D模块,外加SDRAM作为显存.而MCU接口,STM32F407系列的控制器就整合了这个模块,包含6800和8080两 ...
- 全志melis系统 - 8080接口CPU屏调试
全志melis系统8080接口CPU屏调试 一.准备工作 二.点屏步骤 三.核验资料 1. 查看屏规格书确认其为8080接口的CPU屏 2.查看驱动IC型号 四.确认硬件 1.8080接口18位.16 ...
- WK2204 - spi转uart调试记录
WK2204 - spi转uart调试记录 硬件 芯片简介 电路设计 驱动 添加设备树 添加驱动 调试 查看启动加载 检查串口通信 数据乱码或丢失 RS485只能收不能发 系统中断响应异常 思考 硬件 ...
最新文章
- 让机器“自愈化”引领新科技变革
- 安装MikTex Portable
- DVWA学习(二)SQL Injection(Blind)
- js 实现 table 行上移 (数据库)
- ubuntu16.04源码安装node
- Linux基础命令---tracepath
- ap sat_收藏丨2020年雅思、托福、GRE、SAT、ACT、AP考试时间汇总
- easydarwin 安装_easydarwin支持什么格式
- 网页缩放与窗口缩放_缩放—对您的隐私有多严重?
- 2022年JDK-8下载方法
- cuda环境安装--windows离线安装
- Python语言程序设计基础-题库
- 在Win10的Linux子系统下搭建ESP32的开发环境
- 制造业原材料价格上涨 安防设备涨还是不涨?
- 2014年中南大学上机复试
- 获取所有股票历史行情数据
- linux基础知识总结(上)
- linux查询文件大小
- CSS外边距与内边距
- 通讯录vcf生成工具
热门文章
- 王者荣耀服务器维护中有什么漏洞,王者荣耀:玩家发现新漏洞,趁天美没修复,快试试...
- 叶展:我在泽熙学到的七堂课
- [机缘参悟-13]:菩提心,一切“利他”之心
- Labview的子VI
- 网站PV、UV的含义
- “大神”===“一万个小时的敲代码时间,100多万行的代码”
- 顶尖文案app_17个文案网站 5款短视频软件,自媒体人必备,直接拿走不谢
- python多窗口显示内容_如何在一个窗口中显示多个页面?
- 高质量解读《互联网企业安全高级指南》三部曲——实践篇
- 【Linux网络编程】域名转IP后的一些深层(计算机底层)的思考