近段时间做一个项目,要调试3.2寸320x820分辨率的LCD。在此做下记录:

屏规格书如上图

屏的主要接口如上图

1.查看屏的规格书,如图所示,需要8836和st7701s通讯,方式是3线SPI。
2.通讯接口SDA,SCK,CS。
3.RGB接口就比较简单了。

下面贴一些主要的函数:

  1. 初始化函数,对屏进行复位。在初始化函数里面读屏的ID,如果读到就证明通讯成功了撒。根据描述,读DA,DB,DC也是可以的嘛,读完ID后适当延时再去发命令和数据,不然显示会不正常的,调通之后读不读ID不影响后面发的命令和数据。

  2. 初始化成功后就发送命令和数据了,按照屏厂给的参数填数据发送就可以了。

    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);

  3. 我的程序里是用的这几个管脚
    P3_3 SPI_CS PIN117
    P1_0 SPI_DSIO PIN60
    P1_1 SPI_SCLK PIN61

    D/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屏调试记录相关推荐

  1. 2022-03-24 RK3566 MIPI屏 调试记录,panel-init-sequence 命令格式介绍

    一.Single-channel mipi屏的硬件连接如下: 二.根据屏厂给的初始化代码配置dts了,屏厂给的初始化代码分几种形式,这个文章里面RK PX30_android8.1的mipi屏调试_要 ...

  2. 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 ...

  3. 【墨水屏】1.54寸墨水屏调试记录

    某宝某店墨水屏挺便宜,买了几个尝试着使用以下. 同时买了微雪的ESP32墨水屏专用驱动板. 由于1.54寸的小屏节假日期间一直没有发货,所以先用了手头的7.5寸屏测试了一下EPS32驱动板,功能一切正 ...

  4. 全志平台MIPI屏调试记录

    由于项目需要,在全志平台点一块480x1920的MIPI屏,这里将调试过程作下小结. 1.熟悉屏厂规格书,重点在供电电源.上电时序上: 2.配置LVDS显示接口,全志平台,相关的参考配置如下: lcd ...

  5. android 蓝牙 驱动,转个蓝牙修改帖--Android BCM4330 蓝牙BT驱动调试记录

    本帖最后由 旋律2014 于 2014-3-27 09:15 编辑 一.关于BT driver的移植: 1. Enablebluetootch in BoadConfig.mk BOARD_HAVE_ ...

  6. Nvidia Xavier Nx平台GMSL接口imx390相机驱动调试记录

    1.前言 使用GMSL的串行器和解串器9295 9296 两路imx390相机 有两种采集方式, 一种是在前端拼接好作为一路采集: 另一种是独立采集,使用MIPI的虚拟通道. 下面为调试记录 2. 搭 ...

  7. MCU驱动和RGB驱动的液晶屏的区别

    概况来讲,RGB驱动需要的硬件条件高,比如用STM32F429的LTDC+DMA2D模块,外加SDRAM作为显存.而MCU接口,STM32F407系列的控制器就整合了这个模块,包含6800和8080两 ...

  8. 全志melis系统 - 8080接口CPU屏调试

    全志melis系统8080接口CPU屏调试 一.准备工作 二.点屏步骤 三.核验资料 1. 查看屏规格书确认其为8080接口的CPU屏 2.查看驱动IC型号 四.确认硬件 1.8080接口18位.16 ...

  9. WK2204 - spi转uart调试记录

    WK2204 - spi转uart调试记录 硬件 芯片简介 电路设计 驱动 添加设备树 添加驱动 调试 查看启动加载 检查串口通信 数据乱码或丢失 RS485只能收不能发 系统中断响应异常 思考 硬件 ...

最新文章

  1. 让机器“自愈化”引领新科技变革
  2. 安装MikTex Portable
  3. DVWA学习(二)SQL Injection(Blind)
  4. js 实现 table 行上移 (数据库)
  5. ubuntu16.04源码安装node
  6. Linux基础命令---tracepath
  7. ap sat_收藏丨2020年雅思、托福、GRE、SAT、ACT、AP考试时间汇总
  8. easydarwin 安装_easydarwin支持什么格式
  9. 网页缩放与窗口缩放_缩放—对您的隐私有多严重?
  10. 2022年JDK-8下载方法
  11. cuda环境安装--windows离线安装
  12. Python语言程序设计基础-题库
  13. 在Win10的Linux子系统下搭建ESP32的开发环境
  14. 制造业原材料价格上涨 安防设备涨还是不涨?
  15. 2014年中南大学上机复试
  16. 获取所有股票历史行情数据
  17. linux基础知识总结(上)
  18. linux查询文件大小
  19. CSS外边距与内边距
  20. 通讯录vcf生成工具

热门文章

  1. 王者荣耀服务器维护中有什么漏洞,王者荣耀:玩家发现新漏洞,趁天美没修复,快试试...
  2. 叶展:我在泽熙学到的七堂课
  3. [机缘参悟-13]:菩提心,一切“利他”之心
  4. Labview的子VI
  5. 网站PV、UV的含义
  6. “大神”===“一万个小时的敲代码时间,100多万行的代码”
  7. 顶尖文案app_17个文案网站 5款短视频软件,自媒体人必备,直接拿走不谢
  8. python多窗口显示内容_如何在一个窗口中显示多个页面?
  9. 高质量解读《互联网企业安全高级指南》三部曲——实践篇
  10. 【Linux网络编程】域名转IP后的一些深层(计算机底层)的思考