21ic电子技术开发论坛 单片机与嵌入式系统 雅特力AT32 MCU 【AT-START-F405测评】3、驱动ST7735
发新帖我要提问
返回列表
打印
[AT32F405]

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

[复制链接]
831|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lulugl|  楼主 | 2024-4-29 08:22 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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) //DC  data 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)//RES  rst  ////                        
#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) //DC  data 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的启动速度要快,操作简单,这极大的方便了用户。
附工程源码:
AT32F405RCT7_ST7735.zip (1.58 MB)

95582662e423a8791a.png (317.93 KB )

95582662e423a8791a.png

67996662e42da6abcf.png (341.74 KB )

67996662e42da6abcf.png

90655662e42e1a0f1b.png (341.74 KB )

90655662e42e1a0f1b.png

使用特权

评论回复
沙发
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 | 只看该作者
学习了,用软件来配置初始化很方便啊

使用特权

评论回复
5
lulugl|  楼主 | 2024-4-29 13:09 | 只看该作者
WoodData 发表于 2024-4-29 10:33
学习了,用软件来配置初始化很方便啊

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

使用特权

评论回复
6
WoodData| | 2024-4-29 14:18 | 只看该作者
lulugl 发表于 2024-4-29 13:09
是非常方便,但是速度上不去,用逻辑分析仪看了只能跑到6M

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

使用特权

评论回复
7
strang| | 2024-4-29 14:38 | 只看该作者
点个赞~

使用特权

评论回复
8
lanjackg2003| | 2024-4-29 18:32 | 只看该作者
雅特力都有图形界面配置了~赞一个
隔壁的GD不知道有没

使用特权

评论回复
评论
lanjackg2003 2024-4-30 08:53 回复TA
@lulugl :目前公司用着GD的芯片,也不见得示例写得比其他同级别的芯片公司给力。 
lulugl 2024-4-30 07:52 回复TA
GD没有,好象给的示例比较给力。 
muyichuan2012 2024-4-29 19:14 回复TA
2023年5月 AT32 workbench就已经发布了。欢迎体验并提出宝贵意见。 
9
lulugl|  楼主 | 2024-4-29 19:46 | 只看该作者
我调整后,好象还是不行,spi的硬件跟st7735还是匹配不上。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

139

主题

680

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部