本帖最后由 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, 下载次数: 33)
|