这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 驱动微雪的1.28寸圆形LCD

共3条 1/1 1 跳转至

驱动微雪的1.28寸圆形LCD

菜鸟
2024-12-23 15:51:28     打赏

购买了一片微雪的1.28寸圆形的LCD IPS显示屏模块 主控为GC9A01驱动。屏幕分辨率为240x240,带触摸功能。显示屏使用SPI驱动,触摸部分使用的是I2C通讯。这里使用STM32WBA55CG点亮屏幕,没有连接触摸功能。

1734937077741.png

1734937077754.png

一、硬件连接。

参考着微雪提供的wiki文档,这个屏幕使用SPI通讯。SPI有3根线:mosi,miso和sclk。这里有点小小的疑惑,看例程都是单片机给屏幕发送命令,没有屏幕给单片机发送命令的部分,所以应该是只用到了mosi信号线,没有使用到miso线,最后经测试确实如此,miso线可以不接。参考着原理图,将接线图做处理做了个Excel文件,方便操作。屏幕背光线bl可以直接接到3.3v高电平。

CN3






1.28寸触摸屏
CN4



1.28寸触摸屏


1GPIO_0
2GPIO_2




1GPIO_26




2GPIO_25
3GPIO_1
4GPIO_4




3GPIO_28PB2D15SCL

4GPIO_27
5VDD
65V




5GPIO_29PB1D14SDA

6GPIO_30
7GPIO_3
8GND




7AVDD
AVDD


85V
9GPIO_5
10





9GND




10GPIO_32
11GPIO_6
12

IOREF


11GPIO_31PB4(LD1)D13SCKsclk12GPIO_35
13GPIO_8
14NRST




13GPIO_33PB3D12MISO

14GPIO_36
15GPIO_9
163V3




15GPIO_34PA15D11MOSImosi16GPIO_38
17GPIO_10
185V




17GPIO_37PA12D10SS绿cs18GPIO_40
19GND
20GND




19GPIO_39PA9D9


20GND
21GPIO_13
22GND




21GPIO_41PA15/PA11D8


22GPIO_43
23GPIO_14
24VIN




23GPIO_42PB9/PC13D7


24GPIO_45
25GPIO_15
26GPIO_7




25GPIO_44PB0D6
rst26GPIO_46
27GPIO_16
28GPIO_11PA7A0


27GPIO_47PB14D5
dc28GPIO_48
29GPIO_19
30GPIO_12PA6A1TIM2_CH4bl29GPIO_49PB13D4


30GPIO_51
31GPIO_20
32GPIO_17PA2A2


31GPIO_50PB6(B2)D3


32GND
33VBAT
34GPIO_18PA1A3


33GPIO_52PB7(B3)D2


34GPIO_53
35GPIO_23
36GPIO_21PA5/PA8A4SDA

35GPIO_54PB5D1


36GPIO_56
37GPIO_24
38GPIO_22PA0/PA5A5SCL

37GPIO_55PA10D0


38GPIO_57


二、STM32CubeMX创建工程。

image.png

使用stm32cubemx选择stm32wba55cg芯片创建工程,开启板子的spi功能,使用全双工主机方式,修改一下data size为8bit。

image.png

参考着老师的视频,开启PWM输出,用来驱动屏幕背光。最后再开启CS、RST、DC三个管脚。同时还开启了板载的两个LED。

image.png

image.png

最后选择编译工具,我这里使用的是Keil,将输出代码的这个地方勾选,这样生成的代码会为每个服务单独建立对应的c文件。

三、使用keil在工程中添加驱动屏幕的代码。

image.png

在项目中添加一个LCD文件夹,用来存放LCD的驱动文件。在keil中增加一个group,将微雪提供的例程,放到自己的文件夹中,然后添加到keil的group中。

image.png

  /* USER CODE BEGIN 2 */

	printf("hello stm32 LCD\n");
	DEV_Module_Init();  
  printf("LCD_1IN28_ Init and Clear...\r\n");
	LCD_1IN28_Init(VERTICAL);
	LCD_1IN28_Clear(RED);	
	DEV_Delay_ms(3000);
	LCD_1IN28_Clear(GREEN);	
	DEV_Delay_ms(3000);	
	
	Paint_NewImage(LCD_1IN28_WIDTH,LCD_1IN28_HEIGHT, 0, BLACK);
	printf("Set Clear and Display Funtion\r\n");
	Paint_SetClearFuntion(LCD_1IN28_Clear);
	Paint_SetDisplayFuntion(LCD_1IN28_DrawPaint);
	Paint_Clear(BLUE);
	DEV_Delay_ms(3000);
	Paint_DrawCircle(120,120, 120, BLUE ,DOT_PIXEL_2X2,DRAW_FILL_EMPTY);
  Paint_DrawLine  (120, 0, 120, 12,GREEN ,DOT_PIXEL_4X4,LINE_STYLE_SOLID);
  Paint_DrawLine  (120, 228, 120, 240,GREEN ,DOT_PIXEL_4X4,LINE_STYLE_SOLID);
  Paint_DrawLine  (0, 120, 12, 120,GREEN ,DOT_PIXEL_4X4,LINE_STYLE_SOLID);
  Paint_DrawLine  (228, 120, 240, 120,GREEN ,DOT_PIXEL_4X4,LINE_STYLE_SOLID);
	Paint_DrawString_EN(90, 110, "EEPW",&Font24,  BLUE, RED); 

  /* USER CODE END 2 */

四、效果演示。

image.png

image.pngimage.png、项目源码。

stm32wba55cg_1.28lcd.zip


高工
2024-12-23 16:39:58     打赏
2楼

学习了


专家
2024-12-23 22:37:54     打赏
3楼

感谢分享


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]