lulugl 发表于 2024-4-29 08:22

【AT-START-F405测评】3、驱动ST7735

本帖最后由 lulugl 于 2024-4-29 08:24 编辑

【目的】
使用雅特力的图形化配置工具AT32 Work Bench V1.0.07,这配置工程,并驱动LCD屏ST7735。【开发软件】
1、AT32 Work Bench V1.0.07



2、MDK 5.39
【实现步骤】
1、打开AT32 Work Bench V1.0.07。
2、新建基于AT32F402RCT7的工程。
3、配置SPI1,为主机双线单向只发模式。因为ST7735,没有读显存,所只需要MOSI、SCK就行了,为了节约IO,我把CS直接接地,REST直接接NRST,这样只需要3根线就可以驱动了。
配置的IO如下:



配置PA4为DC即数据、命令切换IO。

4、配置代码输出,首先要重命名自己的工程名称,然后按指导配置输出目录、还有就是固件包所在目录。

5、为了printf日志输出,我这里直接引用SDK中的at32f402_405_board。把他复制到工程中,并导入工程分组。

同时把头文件添加进工程:

在main.c中添加进boad.h的头文件,并添回测试如下:
/* add user code begin 2 */
      printf("usart printf example: retarget the c library printf function to the usart\r\n");
/* add user code end 2 */下载进主板,可以看到串口助手可以正常输出了:

【移植ST7789】
1、首先找到原来在其他板子上可以运行的st7735驱动:

2、把他复制进工程文件夹中,并添加进工程分组lcd,同时添加头文件到工程中。

3、打开lcd_st7735,添加头文件的引用:
#include "at32f402_405_board.h"
#include "at32f402_405_wk_config.h"4、修改DC高低电平的宏定义:
#define LCD_DC_LOW()    gpio_bits_reset(TFT_DC_GPIO_PORT, TFT_DC_PIN) //DCdata command select
#define LCD_DC_HIGH()   gpio_bits_set(TFT_DC_GPIO_PORT, TFT_DC_PIN)5、修改好这个宏后,我修改了spi的发送函数。数据也拿到了,但是就是点不亮。所以spi硬件的先告一段落,先用软件spi来点亮先。【回炉】
1、重新定义一下IO除了BLK直接接VCC,我把RESET、CS都给加上了,在图形化配置工具中定义GPIO如下:

重新生成工程,这样AT32 Work Bench在at32f402_405_wk_config.h中就对GPIO进行了宏定义。

同时在at32f402_405_wk_config.c中,也对GPIO进行了初始化:

2、修改输出高低电平的宏定义:
/*-----------------LCD端口定义----------------*/
      /*
      GND       GND
      3.3V      VCC
      PA5      SCL
      PA7      SDA
      PA4      CS(片选)      

      PA0      ERS(复位)
      PA1      DC(命令数据选择)
      VCC      BL(背光)      
      */
      
#define LCD_RES_LOW()   gpio_bits_reset(TFT_RST_GPIO_PORT, TFT_RST_PIN)//RESrst////                        
#define LCD_RES_HIGH()gpio_bits_set(TFT_RST_GPIO_PORT, TFT_RST_PIN)

#define LCD_DC_LOW()    gpio_bits_reset(TFT_DC_GPIO_PORT, TFT_DC_PIN) //DCdata command select
#define LCD_DC_HIGH()   gpio_bits_set(TFT_DC_GPIO_PORT, TFT_DC_PIN)
                     
//#define LCD_BLK_LOW()   GPIO_WritePin(CW_GPIOA, GPIO_PIN_12 , GPIO_Pin_RESET) //BLK
//#define LCD_BLK_HIGH()GPIO_WritePin(CW_GPIOA, GPIO_PIN_12 , GPIO_Pin_SET)

#define LCD_CS_LOW()    gpio_bits_reset(TFT_CS_GPIO_PORT, TFT_CS_PIN) //CS
#define LCD_CS_HIGH()   gpio_bits_set(TFT_CS_GPIO_PORT, TFT_CS_PIN)

#if SOFTWARE_SPI_ENABLE

#define LCD_SCLK_LOW()gpio_bits_reset(TFT_SCK_GPIO_PORT, TFT_SCK_PIN) //SCL=SCLK
#define LCD_SCLK_HIGH() gpio_bits_set(TFT_SCK_GPIO_PORT, TFT_SCK_PIN)

#define LCD_MOSI_LOW()gpio_bits_reset(TFT_MOSI_GPIO_PORT, TFT_MOSI_PIN) //SDA=MOSI
#define LCD_MOSI_HIGH() gpio_bits_set(TFT_MOSI_GPIO_PORT, TFT_MOSI_PIN)

#endif到此,基于st7735的驱动就移植完了,源码我会附到文后。
在main.c中添加st7735的头文件以及init、与test测试:
/* add user code begin 2 */
      delay_init();
      printf("usart printf example: retarget the c library printf function to the usart\r\n");
      LcdTest();
/* add user code end 2 */

【实现效果】

【评测心得】
这次使用AT32F405来驱动LCD屏,虽然用SPI没有成功,后面我会找一下st7735的数据手册,有可能是极性没有设置对,因为我用逻辑分析仪抓了时序,波形是出来了的。总的来说,AT32 Work Bench给我的感觉就是使用起来非常的方便,相比ST的stm32cubMAX,AT32 Work Bench的启动速度要快,操作简单,这极大的方便了用户。
附工程源码:

muyichuan2012 发表于 2024-4-29 09:37

AT32驱动ST7735可参考如下这个贴子

【AT-START-F425测评】15、硬件SPI驱动(ST7735)1.8吋TFTLCD
https://bbs.21ic.com/icview-3206404-1-1.html

lulugl 发表于 2024-4-29 10:22

muyichuan2012 发表于 2024-4-29 09:37
AT32驱动ST7735可参考如下这个贴子

【AT-START-F425测评】15、硬件SPI驱动(ST7735)1.8吋TFTLCD


感谢感谢,我在我原来的驱动中看到的相位跟你推荐的好象不一样,我回头再试试。

WoodData 发表于 2024-4-29 10:33

学习了,用软件来配置初始化很方便啊

lulugl 发表于 2024-4-29 13:09

WoodData 发表于 2024-4-29 10:33
学习了,用软件来配置初始化很方便啊

是非常方便,但是速度上不去,用逻辑分析仪看了只能跑到6M

WoodData 发表于 2024-4-29 14:18

lulugl 发表于 2024-4-29 13:09
是非常方便,但是速度上不去,用逻辑分析仪看了只能跑到6M

不可能才6MHz把,分频调小点啊。逻辑分析仪搞上分析一下时序数据

strang 发表于 2024-4-29 14:38

点个赞~

lanjackg2003 发表于 2024-4-29 18:32

雅特力都有图形界面配置了~赞一个
隔壁的GD不知道有没

lulugl 发表于 2024-4-29 19:46

我调整后,好象还是不行,spi的硬件跟st7735还是匹配不上。
页: [1]
查看完整版本: 【AT-START-F405测评】3、驱动ST7735