OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2807|回复: 7

ILI9341驱动都是通用的么?还是不同LCD厂家的驱动不同

[复制链接]

34

主题

173

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1088
金钱
1088
注册时间
2017-3-10
在线时间
172 小时
发表于 2020-8-4 17:00:25 | 显示全部楼层 |阅读模式
10金钱
我用的下面的驱动,以及写数据与写命令函数,但显示没有反应是驱动有问题么?
  1. /****************************************************************************
  2. * 名    称:void write_command(uint8_t cmd)
  3. * 功    能:发送命令函数
  4. * 入口参数:命令
  5. * 出口参数:无
  6. * 说    明:需把命令与数据选择端(D_C)置低
  7. ****************************************************************************/
  8. void write_command(uint8_t cmd)
  9. {
  10.         LCD_DC_Reset();  //发送命令
  11.         SPI_W_R_byte(cmd);
  12. }

  13. /****************************************************************************
  14. * 名    称:void write_data(uint8_t dat)
  15. * 功    能:发送数据函数
  16. * 入口参数:数据
  17. * 出口参数:无
  18. * 说    明:需把命令与数据选择端(D_C)置高
  19. ****************************************************************************/
  20. void write_data(uint8_t dat)
  21. {
  22.         LCD_DC_Set(); //发送数据
  23.         SPI_W_R_byte(dat);
  24. }

  25. /****************************************************************************
  26. * 名    称:void lcd_initial()
  27. * 功    能:官方的初始化函数
  28. * 入口参数:无
  29. * 出口参数:无
  30. * 说    明:需掌握设置横屏和竖屏模式(MV控制位)、扫描方向(MX,MY控制位)。
  31. ****************************************************************************/
  32. void lcd_initial()
  33. {

  34.                 LCD_RES_Reset();
  35.                 AccurateDelay(100,TIM_MSEC_DELAY);        
  36.                 LCD_RES_Set();
  37.                 AccurateDelay(100,TIM_MSEC_DELAY);        

  38.                 LCD_CS_Reset() ;

  39.                 write_command(0xCB);  
  40.                 write_data(0x39);
  41.                 write_data(0x2C);
  42.                 write_data(0x00);
  43.                 write_data(0x34);
  44.                 write_data(0x02);

  45.                 write_command(0xCF);  
  46.                 write_data(0x00);
  47.                 write_data(0XC1);
  48.                 write_data(0X30);

  49.                 write_command(0xE8);  
  50.                 write_data(0x85);
  51.                 write_data(0x00);
  52.                 write_data(0x78);

  53.                 write_command(0xEA);  
  54.                 write_data(0x00);
  55.                 write_data(0x00);

  56.                 write_command(0xED);  
  57.                 write_data(0x64);
  58.                 write_data(0x03);
  59.                 write_data(0X12);
  60.                 write_data(0X81);

  61.                 write_command(0xF7);  
  62.                 write_data(0x20);

  63.                 write_command(0xC0);    //Power control
  64.                 write_data(0x23);   //VRH[5:0]

  65.                 write_command(0xC1);    //Power control
  66.                 write_data(0x10);   //SAP[2:0];BT[3:0]

  67.                 write_command(0xC5);    //VCM control
  68.                 write_data(0x3e); //对比度调节
  69.                 write_data(0x28);

  70.                 write_command(0xC7);    //VCM control2
  71.                 write_data(0x86);  //--

  72.                 write_command(0x36);    // Memory Access Control
  73.                 //此参数为横屏竖屏扫描方式切换关键参数,竖屏时贴标签处为右上角,横屏时贴标签处为左上角
  74.                 //0x08 0x48 0x88 0xc8竖屏        0x08:x从右向左 y从上到下                0x48:x从左向右 y从上到下                0x88:x从右向左 y从下到上                0xc8:x从左到右 y从下到上
  75.                 //0x28 0x68 0xa8 0xe8横屏        0x28:x从左向右 y从上到下                0x68:x从左向右 y从下到上                0xa8:x从右向左 y从上到下         0xe8:x从右向左 y从下到上
  76.                 write_data(0x28); //设置默认扫描方式,位于芯片手册《液晶屏控制器ILI9341》8.2.29处
  77.                
  78.                 write_command(0x3A);   
  79.                 write_data(0x55);         //像素格式设置为16位的RGB格式

  80.                 write_command(0xB1);   
  81.                 write_data(0x00);  
  82.                 write_data(0x18);

  83.                 write_command(0xB6);    // Display Function Control
  84.                 write_data(0x08);
  85.                 write_data(0x82);
  86.                 write_data(0x27);  

  87.                 write_command(0xF2);    // 3Gamma Function Disable
  88.                 write_data(0x00);

  89.                 write_command(0x26);    //Gamma curve selected
  90.                 write_data(0x01);

  91.                 write_command(0xE0);    //Set Gamma
  92.                 write_data(0x0F);
  93.                 write_data(0x31);
  94.                 write_data(0x2B);
  95.                 write_data(0x0C);
  96.                 write_data(0x0E);
  97.                 write_data(0x08);
  98.                 write_data(0x4E);
  99.                 write_data(0xF1);
  100.                 write_data(0x37);
  101.                 write_data(0x07);
  102.                 write_data(0x10);
  103.                 write_data(0x03);
  104.                 write_data(0x0E);
  105.                 write_data(0x09);
  106.                 write_data(0x00);

  107.                 write_command(0XE1);    //Set Gamma
  108.                 write_data(0x00);
  109.                 write_data(0x0E);
  110.                 write_data(0x14);
  111.                 write_data(0x03);
  112.                 write_data(0x11);
  113.                 write_data(0x07);
  114.                 write_data(0x31);
  115.                 write_data(0xC1);
  116.                 write_data(0x48);
  117.                 write_data(0x08);
  118.                 write_data(0x0F);
  119.                 write_data(0x0C);
  120.                 write_data(0x31);
  121.                 write_data(0x36);
  122.                 write_data(0x0F);

  123.                 write_command(0x11);    //Exit Sleep   
  124.                 AccurateDelay(100,TIM_MSEC_DELAY);        

  125.                 write_command(0x29);    //Display on 打开后显存里面的内容会对应的显示出来
  126.                 write_command(0x2c);

  127.                 LCD_CS_Reset() ;
  128. }
复制代码


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2020-8-5 00:05:12 | 显示全部楼层
基本一样,但是也有差异,所以,这种一般找原厂要资料好点。
回复

使用道具 举报

34

主题

173

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1088
金钱
1088
注册时间
2017-3-10
在线时间
172 小时
 楼主| 发表于 2020-8-5 10:11:46 | 显示全部楼层
正点原子 发表于 2020-8-5 00:05
基本一样,但是也有差异,所以,这种一般找原厂要资料好点。

好的,原子哥还有一个问题,我spi刷新全屏要5,6秒时间,SPI配置为10M,是怎么回事呢。感觉配置分频256和8分频没区别速度。是ILI9341那个寄存器没配置好么,速度太慢了。就感觉改了SPI传输速度没影响吖。看了下帧速度是B1,B2,B3,我配置了B1,其他没管是这个有影响吗?
回复

使用道具 举报

7

主题

53

帖子

0

精华

高级会员

Rank: 4

积分
765
金钱
765
注册时间
2018-4-13
在线时间
231 小时
发表于 2020-8-5 10:16:10 | 显示全部楼层
stm32wwxf 发表于 2020-8-5 10:11
好的,原子哥还有一个问题,我spi刷新全屏要5,6秒时间,SPI配置为10M,是怎么回事呢。感觉配置分频256和8 ...

我用的hal库 spi dma刷屏 25ms一帧 SPI的速率可以快点 超了没事的
回复

使用道具 举报

34

主题

173

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1088
金钱
1088
注册时间
2017-3-10
在线时间
172 小时
 楼主| 发表于 2020-8-5 10:49:45 | 显示全部楼层
dyhfaily 发表于 2020-8-5 10:16
我用的hal库 spi dma刷屏 25ms一帧 SPI的速率可以快点 超了没事的

那我分频再大点,就是速度方面还需要配置ILI9341这个驱动那些寄存器不呢?之前256分频,和现在8分频感觉速度都一个样。
回复

使用道具 举报

7

主题

53

帖子

0

精华

高级会员

Rank: 4

积分
765
金钱
765
注册时间
2018-4-13
在线时间
231 小时
发表于 2020-8-6 11:44:17 | 显示全部楼层
stm32wwxf 发表于 2020-8-5 10:49
那我分频再大点,就是速度方面还需要配置ILI9341这个驱动那些寄存器不呢?之前256分频,和现在8分频感觉 ...

你用dma了没 用了才会快
回复

使用道具 举报

34

主题

173

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1088
金钱
1088
注册时间
2017-3-10
在线时间
172 小时
 楼主| 发表于 2020-8-6 13:49:41 | 显示全部楼层
dyhfaily 发表于 2020-8-6 11:44
你用dma了没 用了才会快

现在还没用,不过我发现个问题,就是接受标志FIFO,是满16位才会置空renx.所以之前刷屏很慢时间都是浪费在spi发送数据里面。但速度都是一帧左右,还是慢还是要上DMA
回复

使用道具 举报

34

主题

173

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1088
金钱
1088
注册时间
2017-3-10
在线时间
172 小时
 楼主| 发表于 2020-8-6 13:54:08 | 显示全部楼层
正点原子 发表于 2020-8-5 00:05
基本一样,但是也有差异,所以,这种一般找原厂要资料好点。

原子哥,就是我发现就是接受标志FIFO,是满16位才会置高renx.所以在spi发送数据里面,是8位相当于发送两次数据才会触发接收一次,有一次retry++到200,我看的L4的编程手册,不知道f1是不是,如果是的话一个是直接把FIFO标志位拉高,一个是SPI改为u16发送。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 09:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表