您当前的位置: 首页 >> 电娱要闻

CW32模块使用 1.69寸彩屏

作者:金华成宏电子交流圈电子网 日期:2025-05-12 点击数:1

1、模块来历

模块什物展现:

wKgZPGggXhOAYHIqAAGLbNGbX9Y803.jpg


材料下载链接:https://pan.baidu.com/s/1Q4s3fk0uy8AP5aqNZ3fBmg
材料提与码:8888

2、规格参数

任务电压:3.3V

任务电流:90MA

模块尺寸:31(H) x 48(V) MM

像素巨细:240(H) x 280(V)RGB

驱动芯片:ST7789V2

通讯和谈:SPI

管足数目:8 Pin(2.54mm间距排针

以上疑息睹厂家材料文件

wKgZO2ggXhSAHbsMAAH3L5BcrRM791.jpg

文件途径

wKgZPGggXhSAF5ffAACUsFz4B10610.jpg

尺寸参数

3、移植进程

我们的目的是将例程移植至坐创·CW32F030C8T6开辟板上。依照以下步调,便可完成移植。

将源码导进工程;

依据编译报错处停止细改;

修正引足设置装备摆设;

修正时序设置装备摆设;

移植考证。

3.1检查材料

翻开厂家材料例程(例程下载睹百度网盘链接下载)。详细途径睹例程途径

wKgZO2ggXhWAHMVZAAWgA5ZI_9E942.jpg

例程途径

3.2移植至工程

将厂家材料途径下的【LCD】文件夹,复造到本人的工程中。(工程能够参考进门脚册工程模板

wKgZPGggXhWAEUU8AAiY3e9usoM722.jpg

复造表示图

我们翻开工程文件,将我们方才复造到文件夹中的文件,导进C文件战途径。

wKgZO2ggXhWAGsWkAAB6zS4gQkU705.jpg

lcd_init.h文件下的 sys.h 改成 board.h。借要将lcd.h文件下的 sys.h 改成 board.h

TIP

(正在右边将lcd.c战lcd_init.c的工程目次睁开,便发明有lcd_init.h战lcd.h)

wKgZPGggXhaAKzyaAADNeMLxbzs875.jpg

修正lcd_init.h内容

wKgZO2ggXhaASHjGAAB92U7_Ul4167.jpg

修正lcd.h内容

lcd_init.clcd.c 中的 delay.h 正文失落

wKgZO2ggXheAGAV1AACcLBIBv8E745.jpgwKgZPGggXheATHyzAADHZMBSZ-s427.jpg

辨别正在lcd_init.h取lcd.h文件中界说三个宏,u32、u16取u8。

#ifndef u8
#define u8 uint8_t
#endif
#ifndef u16
#define u16 uint16_t
#endif
#ifndef u32
#define u32 uint32_t
#endif

3.3引足挑选

该屏幕需求设置8个接心,详细接心阐明睹 各引足阐明

wKgZO2ggXhiATeZiAARn24qS5g0054.jpg

模块为SPI通讯和谈的从机,SCL为SPI旌旗灯号线(SCK),SDA为SPI输入线(MOSI),CS为SPI片选线(NSS)。 假如MCU的GPIO引足缺乏,能够将屏幕的两个引足接心没有接进MCU的GPIO。

将RES接进MCU的复位引足,当MCU复位时,屏幕也随着复位;

能够将BLK接进3.3V或悬空,价格是没法节制背亮光度。

上面分为硬件SPI移植取硬件SPI移植停止解说。

3.4硬件SPI移植

wKgZPGggXhqAGSaeAAfxmHvNyok208.jpg

硬件SPI接线图

挑选好引足后,进进工程开端编写屏幕引足初初化代码。 将lcd_init.c源代码中的void LCD_GPIO_Init(void)修正为以下代码。

void LCD_GPIO_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStruct;   // GPIO初初化构造体
    __RCC_GPIOA_CLK_ENABLE();           // 使能GPIOA时钟
    GPIO_InitStruct.Pins =  LCD_SCL_PIN| // GPIO引足
                            LCD_SDA_PIN|
                            LCD_RES_PIN|
                            LCD_DC_PIN|
                            LCD_CS_PIN|
                            LCD_BLK_PIN;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;    // 推挽输入
    GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;       // 输入速率下
    GPIO_Init(CW_GPIOA, &GPIO_InitStruct);         // 初初化
    LCD_SCLK_Set();
    LCD_MOSI_Set();
    LCD_RES_Set();
    LCD_DC_Set();
    LCD_CS_Set();
    LCD_BLK_Set();
}

将lcd_init.h中的 LCD端心界说 宏,修正为下圆两图中的左图款式。

//-----------------LCD端心界说----------------
#define LCD_GPIO_PORT        CW_GPIOA
#define LCD_SCL_PIN          GPIO_PIN_5
#define LCD_SDA_PIN          GPIO_PIN_7
#define LCD_RES_PIN          GPIO_PIN_3
#define LCD_DC_PIN           GPIO_PIN_2
#define LCD_CS_PIN           GPIO_PIN_4
#define LCD_BLK_PIN          GPIO_PIN_1
#define LCD_SCLK_Clr() GPIO_WritePin(LCD_GPIO_PORT, LCD_SCL_PIN, GPIO_Pin_RESET)//SCL=SCLK
#define LCD_SCLK_Set() GPIO_WritePin(LCD_GPIO_PORT, LCD_SCL_PIN, GPIO_Pin_SET)
#define LCD_MOSI_Clr() GPIO_WritePin(LCD_GPIO_PORT, LCD_SDA_PIN, GPIO_Pin_RESET)//SDA=MOSI
#define LCD_MOSI_Set() GPIO_WritePin(LCD_GPIO_PORT, LCD_SDA_PIN, GPIO_Pin_SET)
#define LCD_RES_Clr()  GPIO_WritePin(LCD_GPIO_PORT, LCD_RES_PIN, GPIO_Pin_RESET)//RES
#define LCD_RES_Set()  GPIO_WritePin(LCD_GPIO_PORT, LCD_RES_PIN, GPIO_Pin_SET)
#define LCD_DC_Clr()   GPIO_WritePin(LCD_GPIO_PORT, LCD_DC_PIN, GPIO_Pin_RESET)//DC
#define LCD_DC_Set()   GPIO_WritePin(LCD_GPIO_PORT, LCD_DC_PIN, GPIO_Pin_SET)
#define LCD_CS_Clr()   GPIO_WritePin(LCD_GPIO_PORT, LCD_CS_PIN, GPIO_Pin_RESET)//CS
#define LCD_CS_Set()   GPIO_WritePin(LCD_GPIO_PORT, LCD_CS_PIN, GPIO_Pin_SET)
#define LCD_BLK_Clr()  GPIO_WritePin(LCD_GPIO_PORT, LCD_BLK_PIN, GPIO_Pin_RESET)//BLK
#define LCD_BLK_Set()  GPIO_WritePin(LCD_GPIO_PORT, LCD_BLK_PIN, GPIO_Pin_SET)
wKgZO2ggXhuAfgzNAAY-XaWb9-I952.jpg

源端心界说

到那里硬件SPI便移植完成了,请移步到第4节停止移植考证。

3.5硬件SPI移植

硬件SPI取硬件SPI比拟,硬件SPI是靠硬件下面的SPI节制器,一切的时钟边沿采样,时钟发作,借偶然序节制,皆是由硬件完成的。它下降了CPU的运用率,进步了运转速率。硬件SPI便是用代码节制IO输入上下电仄,模仿SPI的时序,这类办法通讯速率较缓,且不成靠。

念要运用硬件SPI驱动屏幕,需求肯定运用的引足能否有SPI中设功用。能够经过数据脚册停止检查。

数据脚册战用户脚册皆正在百度网盘材料,网盘地点看进门脚册。

以后运用的是硬件SPI接心,而屏幕我们只需求节制它,而没有需求读与屏幕的数据,故运用的是3线的SPI,只运用到了时钟线SCK、主机输入从机输出线MOSI战硬件节制的片选线NSS。而NSS我们运用的是硬件节制,以是除SCL(SCK)/SDA(MOSI)引足需求运用硬件SPI功用的引足中,其他引足皆可使用开辟板上其他的GPIO。那里挑选运用PA5/PA7的SPI复勤奋能。其他对应接进的屏幕引足请依照您的需求。那里挑选的引足睹表硬件SPI接线。

wKgZPGggXhuAIVd_AApImU964nc070.jpg

有SPI功用的引足

wKgZO2ggXhyAZIWxAAffOIvVqzA257.jpg

硬件SPI接线

挑选好引足后,进进工程开端编写屏幕引足初初化代码。

引足初初化设置装备摆设睹以下代码。

void LCD_GPIO_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStruct;   // GPIO初初化构造体
    __RCC_GPIOA_CLK_ENABLE();       // 使能GPIOA时钟
    __RCC_SPI1_CLK_ENABLE();    // 使能SPI1时钟
    // GPIO复用为SPI1
    SPI1_AF_SCK();
    SPI1_AF_MOSI();
    GPIO_InitStruct.Pins =  LCD_SCL_PIN| // GPIO引足
                            LCD_SDA_PIN|
                            LCD_RES_PIN|
                            LCD_DC_PIN|
                            LCD_CS_PIN|
                            LCD_BLK_PIN;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;    // 推挽输入
    GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;       // 输入速率下
    GPIO_Init(LCD_GPIO_PORT, &GPIO_InitStruct);    // 初初化
        // 推下
    LCD_RES_Set();
    LCD_DC_Set();
    LCD_CS_Set();
    LCD_BLK_Set();
    SPI_InitTypeDef  SPI_InitStructure; // SPI 初初化构造体
    SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;    // 单线齐单工
    SPI_InitStructure.SPI_Mode = SPI_Mode_Master;                         // 主机形式
    SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;                     // 帧数据少度为8bit
    SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;                           // 时钟闲暇电仄为下
    SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;                          // 第两个边缘采样
    SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;                             // 片选旌旗灯号由SSI存放器节制
    SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_8;    // 波特率为PCLK的8分频
    SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;                    // 最下无效位 MSB 支收正在前
    SPI_InitStructure.SPI_Speed = SPI_Speed_Low;                          // 低速SPI
    SPI_Init(BSP_SPI1, &SPI_InitStructure);   // 初初化
    SPI_Cmd(BSP_SPI1, ENABLE); // 使能SPI1
}

将lcd_init.h中的 LCD端心界说 宏,修正为下圆两个图中左图的款式。

//-----------------LCD端心界说----------------
#define BSP_SPI1        CW_SPI1
//GPIO AF
#define SPI1_AF_SCK()   PA05_AFx_SPI1SCK()
#define SPI1_AF_MOSI()  PA07_AFx_SPI1MOSI()
#define LCD_GPIO_PORT   CW_GPIOA
#define LCD_SCL_PIN     GPIO_PIN_5
#define LCD_SDA_PIN     GPIO_PIN_7
#define LCD_RES_PIN     GPIO_PIN_3
#define LCD_DC_PIN      GPIO_PIN_2
#define LCD_CS_PIN      GPIO_PIN_4
#define LCD_BLK_PIN     GPIO_PIN_1
#define LCD_RES_Clr()  GPIO_WritePin(LCD_GPIO_PORT, LCD_RES_PIN, GPIO_Pin_RESET)//RES
#define LCD_RES_Set()  GPIO_WritePin(LCD_GPIO_PORT, LCD_RES_PIN, GPIO_Pin_SET)
#define LCD_DC_Clr()   GPIO_WritePin(LCD_GPIO_PORT, LCD_DC_PIN, GPIO_Pin_RESET)//DC
#define LCD_DC_Set()   GPIO_WritePin(LCD_GPIO_PORT, LCD_DC_PIN, GPIO_Pin_SET)
#define LCD_CS_Clr()   GPIO_WritePin(LCD_GPIO_PORT, LCD_CS_PIN, GPIO_Pin_RESET)//CS
#define LCD_CS_Set()   GPIO_WritePin(LCD_GPIO_PORT, LCD_CS_PIN, GPIO_Pin_SET)
#define LCD_BLK_Clr()  GPIO_WritePin(LCD_GPIO_PORT, LCD_BLK_PIN, GPIO_Pin_RESET)//BLK
#define LCD_BLK_Set()  GPIO_WritePin(LCD_GPIO_PORT, LCD_BLK_PIN, GPIO_Pin_SET)

初初化局部完,借需求修正收收数据局部。源代码中运用的是硬件SPI,时序是由厂家编写完成的。我们运用硬件SPI则需求对其停止修正。

正在lcd_init.c文件中,将源代码的 void LCD_Writ_Bus(u8 dat) 函数修正为下图款式。

wKgZPGggXh6AJ2zQAADEkF1PDMU706.jpg

/******************************************************************************
      函数阐明:LCD串止数据写进函数
      进口数据:dat  要写进的串止数据
      前往值:  无
******************************************************************************/
void LCD_Writ_Bus(u8 dat)
{
    LCD_CS_Clr();
    while (SPI_GetFlagStatus(BSP_SPI1, SPI_FLAG_TXE) == RESET);
    SPI_SendData(BSP_SPI1, dat); // 收收数据
    while (SPI_GetFlagStatus(BSP_SPI1, SPI_FLAG_RXNE) == RESET);
    uint16_t temp = SPI_ReceiveData(BSP_SPI1); // 前往数据
    LCD_CS_Set();
}

到那里硬件SPI便移植完成了,请移步到第4节停止移植考证。

4、移植考证

正在main.c中输出代码以下

/*
 * Change Logs:
 * Date           Author       Notes
 * 2024-06-17     LCKFB-LP    first version
 */
#include "board.h"
#include "stdio.h"
#include "bsp_uart.h"
#include "lcd.h"
#include "lcd_init.h"
int32_t main(void)
{
    board_init();        // 开辟板初初化
    uart1_init(115200);        // 串心1波特率115200
    LCD_Init();//屏幕初初化
    LCD_Fill(0,0,LCD_W,LCD_H,BLACK);//浑齐屏为乌色
    float t = 0;
    while(1)
    {
        LCD_ShowString(0,16*2,(uint8_t *)"LCD_W:",WHITE,BLACK,16,0);
        LCD_ShowIntNum(48,16*2,LCD_W,3,WHITE,BLACK,16);
        LCD_ShowString(80,16*2,(uint8_t *)"LCD_H:",WHITE,BLACK,16,0);
        LCD_ShowIntNum(128,16*2,LCD_H,3,WHITE,BLACK,16);
        LCD_ShowString(0,16*3,(uint8_t *)"Nun:",WHITE,BLACK,16,0);
        LCD_ShowFloatNum1(8*4,16*3,t,4,WHITE,BLACK,16);
        t+=0.11;
        delay_ms(1000);
    }
}

上电考证:

wKgZO2ggXh6AYjFaAACvbvqvmn8412.jpg

移植胜利案例(硬件战硬件SPI):

链接:https://pan.百度.com/s/1IPJdozv4yD5VwKeGvWoK8w?pwd=LCKF

提与码:LCKF

考核编纂 黄宇

本站所有文章、数据、图片均来自网友原创提供和互联网,一切版权均归源网站或源作者所有。

如果侵犯了你的权益请来信告知我们删除。邮箱:

标签:彩屏模块