查看: 1635|回复: 4

[评测分享] DFR0669显示屏试用

[复制链接]
  • TA的每日心情
    慵懒
    2024-3-10 16:58
  • 签到天数: 223 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2022-9-25 16:23:37 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 az158 于 2022-9-25 16:46 编辑

    前不久拿到了DFRobot家的DFR0669显示屏,今天做一个简单的试用。

    板子做工针不戳,黑板加沉金很有质感(排针是我焊的,屏幕本身提供了排针跟排线两种连接方式,可以按需选择)。
    IMG_20220925_163906.jpg
    IMG_20220925_163944.jpg

    拿到板卡先找资料,去了一趟DFRobot官网,发现他家资料是做的真不错,描述很清晰,而且资料也很全,不过,怎么全是针对Arduino的啊,对我太不友好了(手上一块Arduino都没有),不过提供的资料很全,就写一下在STM32下的驱动吧。

    掏出我的STM32WB55的小板卡一通乱写,突然发现能用模拟SPI跑,但是用硬件SPI不行。试着对硬件SPI降频,好了。
    然后优化了一下,效果如下,刷屏感很重。
    VID_20220925_153458~1.gif

    换个角度拍点图(能看到触摸屏跟屏幕配合不是很好,上面没遮住,下面多遮了,不过无伤大雅),可视角度还不错。
    IMG_20220925_153535.jpg
    IMG_20220925_153528.jpg

    看了看手册,这屏的驱动芯片是ILI9488,这玩意SPI模式下跑不快,一般这颗驱动芯片的屏都是走并口驱动。试了试SPI最多也就能跑到20MHz,这可比ST7789低多了。不过ST7789最大支持的分辨率320x240,这块屏是480x320,没法用。


    总体试用下来还是很满意的,资料很全,屏幕可视角度也不错,屏幕细腻度也挺好,最大的问题就是这分辨率用SPI驱,而且频率上不去,效果不太满意。但是想想,这个产品本身就是面对Arduino用户开发的,对于他们来说这块屏提供了更多的选择,能提供更好的效果,在开发的时候多用局部刷新,整体效果还是能做到不错的。

    最后附上屏幕的初始化程序:
    1. #define SCLK_H()  HAL_GPIO_WritePin(SCLK_GPIO_Port, SCLK_Pin, GPIO_PIN_SET);
    2. #define SCLK_L()  HAL_GPIO_WritePin(SCLK_GPIO_Port, SCLK_Pin, GPIO_PIN_RESET);

    3. #define MOSI_H()  HAL_GPIO_WritePin(MOSI_GPIO_Port, MOSI_Pin, GPIO_PIN_SET);
    4. #define MOSI_L()  HAL_GPIO_WritePin(MOSI_GPIO_Port, MOSI_Pin, GPIO_PIN_RESET);

    5. #define CS_H()  HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_SET);
    6. #define CS_L()  HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_RESET);

    7. #define RES_H()  HAL_GPIO_WritePin(RES_GPIO_Port, RES_Pin, GPIO_PIN_SET);
    8. #define RES_L()  HAL_GPIO_WritePin(RES_GPIO_Port, RES_Pin, GPIO_PIN_RESET);

    9. #define DC_H()  HAL_GPIO_WritePin(DC_GPIO_Port, DC_Pin, GPIO_PIN_SET);
    10. #define DC_L()  HAL_GPIO_WritePin(DC_GPIO_Port, DC_Pin, GPIO_PIN_RESET);


    11. uint8_t SPI1_ReadWriteByte(uint8_t TxData)
    12. {
    13.         uint8_t Rxdata;
    14.         HAL_SPI_TransmitReceive(&hspi1,&TxData,&Rxdata,1, 1000);      
    15.         return Rxdata;                              //返回收到的数据               
    16. }

    17. void LCD_ILI9488_CMD(unsigned char val)
    18. {
    19.     unsigned char count = 0;
    20.     DC_L();
    21.     CS_L();
    22.     SPI1_ReadWriteByte(val);
    23. //    for(count = 0 ; count < 8 ; count++)
    24. //    {
    25. //        SCLK_L();
    26. //        if((val&0x80)==0x80)
    27. //        {
    28. //            MOSI_H();
    29. //        }
    30. //        else
    31. //        {
    32. //            MOSI_L();
    33. //        }
    34. //        SCLK_H();
    35. //        val=val<<1;
    36. //    }
    37.     CS_H();
    38. }

    39. void LCD_ILI9488_INDEX(unsigned char val)
    40. {
    41.     unsigned char count = 0;
    42.     DC_H();
    43.     CS_L();
    44.     SPI1_ReadWriteByte(val);
    45. //    for(count = 0 ; count < 8 ; count++)
    46. //    {
    47. //        SCLK_L();
    48. //        if((val&0x80)==0x80)
    49. //        {
    50. //            MOSI_H();
    51. //        }
    52. //        else
    53. //        {
    54. //            MOSI_L();
    55. //        }
    56. //        SCLK_H();
    57. //        val=val<<1;
    58. //    }
    59.     CS_H();
    60. }

    61. void LCD_Init(void)
    62. {
    63.     RES_H();
    64.     HAL_Delay(1);
    65.     RES_L();
    66.     HAL_Delay(10);
    67.     RES_H();
    68.     HAL_Delay(120);

    69.     LCD_ILI9488_CMD(0XF7);   
    70.     LCD_ILI9488_INDEX(0xA9);
    71.     LCD_ILI9488_INDEX(0x51);
    72.     LCD_ILI9488_INDEX(0x2C);
    73.     LCD_ILI9488_INDEX(0x82);
    74.    
    75.     LCD_ILI9488_CMD(0xC0);
    76.     LCD_ILI9488_INDEX(0x11);
    77.     LCD_ILI9488_INDEX(0x09);
    78.      
    79.     LCD_ILI9488_CMD(0xC1);
    80.     LCD_ILI9488_INDEX(0x41);
    81.    
    82.     LCD_ILI9488_CMD(0xC5);
    83.     LCD_ILI9488_INDEX(0x00);
    84.     LCD_ILI9488_INDEX(0x0A);
    85.     LCD_ILI9488_INDEX(0x80);
    86.    
    87.     LCD_ILI9488_CMD(0xB1);   //Frame rate 60HZ  
    88.     LCD_ILI9488_INDEX(0xB0);
    89.     LCD_ILI9488_INDEX(0x11);
    90.    
    91.     LCD_ILI9488_CMD(0xB4);
    92.     LCD_ILI9488_INDEX(0x02);
    93.    
    94.     LCD_ILI9488_CMD(0xB6); //RGB/MCU Interface Control
    95.     LCD_ILI9488_INDEX(0x02);
    96.     LCD_ILI9488_INDEX(0x22);
    97.    
    98.     LCD_ILI9488_CMD(0xB7);
    99.     LCD_ILI9488_INDEX(0xc6);

    100.     LCD_ILI9488_CMD(0XBE);
    101.     LCD_ILI9488_INDEX(0x00);
    102.     LCD_ILI9488_INDEX(0x04);
    103.    
    104.     LCD_ILI9488_CMD(0xE9);
    105.     LCD_ILI9488_INDEX(0x00);
    106.    
    107.     LCD_ILI9488_CMD(0x36);
    108.     LCD_ILI9488_INDEX(0x08);

    109.     LCD_ILI9488_CMD(0x3A); //Interface Mode Control
    110.     LCD_ILI9488_INDEX(0x66);
    111.    
    112.     LCD_ILI9488_CMD(0xE0);
    113.     LCD_ILI9488_INDEX(0x00);
    114.     LCD_ILI9488_INDEX(0x07);
    115.     LCD_ILI9488_INDEX(0x10);
    116.     LCD_ILI9488_INDEX(0x09);
    117.     LCD_ILI9488_INDEX(0x17);
    118.     LCD_ILI9488_INDEX(0x0b);
    119.     LCD_ILI9488_INDEX(0x41);
    120.     LCD_ILI9488_INDEX(0x89);
    121.     LCD_ILI9488_INDEX(0x4b);
    122.     LCD_ILI9488_INDEX(0x0a);
    123.     LCD_ILI9488_INDEX(0x0c);
    124.     LCD_ILI9488_INDEX(0x0e);
    125.     LCD_ILI9488_INDEX(0x18);
    126.     LCD_ILI9488_INDEX(0x1b);
    127.     LCD_ILI9488_INDEX(0x0f);  
    128.      
    129.     LCD_ILI9488_CMD(0xE1);
    130.     LCD_ILI9488_INDEX(0x00);
    131.     LCD_ILI9488_INDEX(0x17);
    132.     LCD_ILI9488_INDEX(0x1a);
    133.     LCD_ILI9488_INDEX(0x04);
    134.     LCD_ILI9488_INDEX(0x0e);
    135.     LCD_ILI9488_INDEX(0x06);
    136.     LCD_ILI9488_INDEX(0x2f);
    137.     LCD_ILI9488_INDEX(0x45);
    138.     LCD_ILI9488_INDEX(0x43);
    139.     LCD_ILI9488_INDEX(0x02);
    140.     LCD_ILI9488_INDEX(0x0a);
    141.     LCD_ILI9488_INDEX(0x09);
    142.     LCD_ILI9488_INDEX(0x32);
    143.     LCD_ILI9488_INDEX(0x36);
    144.     LCD_ILI9488_INDEX(0x0f);
    145.      
    146.     LCD_ILI9488_CMD(0x11);
    147.     HAL_Delay(120);
    148.     LCD_ILI9488_CMD(0x20);
    149.     LCD_ILI9488_CMD(0x29);
    150. }
    复制代码






    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-7 13:52
  • 签到天数: 326 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2022-9-27 09:43:04 | 显示全部楼层
    收藏一下,我也来试一下看看,哈哈哈哈
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-7 13:52
  • 签到天数: 326 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2022-9-30 15:31:37 | 显示全部楼层
    大佬的代码可以共享一下么?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2022-10-12 07:48:23 来自手机 | 显示全部楼层
    还有活动吗?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2023-5-5 00:06
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2023-5-9 17:59:22 | 显示全部楼层
    大佬的代码可以共享一下么?你是在STM32CUBEIDE上弄的吗?
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-4-26 16:19 , Processed in 0.150874 second(s), 25 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.