打印
[AT32F405]

【AT-START-F405测评】+GPIO模拟方式驱动SPI接口TFT屏

[复制链接]
1360|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 suncat0504 于 2024-4-28 10:12 编辑

最近工作很忙,以至于拿到雅特力的开发板快一周了,才有机会开始着手研究。雅特力的开发板没的说,简洁明快,开发工具也给力。老规矩,先搞通GPIO口的程序。为了方便设置GPIO口,从官网下载了例程,从GPIO有关的例程学起。这里我准备直接上GPIO口模拟SPI方式驱动TFT显示屏,准备用GPIO模拟方式驱动OLED,用到J2中PB10、PB1、PC5、PA7、PA5这个GPIO口。

在进入开发之前,需要先安装Keil下开发用的设备包ArteryTek.AT32F402_405_DFP.2.0.6.pack,否则工程没法正常打开和编译。
然后我就准备使用led_toggle工程,并在这个该工程基础上追加TFT显示屏的处理代码。代码也不需要写太多,基本上就是把其他工程中用到的相关程序拿过来,在针对AT32F405的支持库,修改接口有关引脚的宏定义就行。原来还担心AT32F405的主频太高,会影响显示,必要的情况下都准备加延迟处理了,结果一点问题都没有。正常TFT显示处理中需要延迟的地方,直接就可以使用支持库中的延时函数,从微秒到秒级都提供好了,简直太贴心了。

对接口的初始化部分的代码,完全仿照板载用户LED的初始化部分的代码就可以。
void LCD_GPIO_Init(void) {

    gpio_init_type gpio_init_struct;



    /* enable the button clock */

    crm_periph_clock_enable(CRM_GPIOA_PERIPH_CLOCK, TRUE);

    crm_periph_clock_enable(CRM_GPIOB_PERIPH_CLOCK, TRUE);

    crm_periph_clock_enable(CRM_GPIOC_PERIPH_CLOCK, TRUE);



    /* set default parameter */

    gpio_default_para_init(&gpio_init_struct);



    /* configure button pin as input with pull-up/pull-down */

    gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;

    gpio_init_struct.gpio_out_type  = GPIO_OUTPUT_PUSH_PULL;



    gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;

    gpio_init_struct.gpio_out_type  = GPIO_OUTPUT_PUSH_PULL;

    gpio_init_struct.gpio_mode = GPIO_MODE_OUTPUT;

    gpio_init_struct.gpio_pins = LCD_CS_PIN | LCD_RS_PIN;

    gpio_init_struct.gpio_pull = GPIO_PULL_NONE;

    gpio_init(GPIOA, &gpio_init_struct);



    gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;

    gpio_init_struct.gpio_out_type  = GPIO_OUTPUT_PUSH_PULL;

    gpio_init_struct.gpio_mode = GPIO_MODE_OUTPUT;

    gpio_init_struct.gpio_pins = LCD_RST_PIN;

    gpio_init_struct.gpio_pull = GPIO_PULL_NONE;

    gpio_init(GPIOC, &gpio_init_struct);



    gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;

    gpio_init_struct.gpio_out_type  = GPIO_OUTPUT_PUSH_PULL;

    gpio_init_struct.gpio_mode = GPIO_MODE_OUTPUT;

    gpio_init_struct.gpio_pins = LCD_SDA_PIN | LCD_SCL_PIN;

    gpio_init_struct.gpio_pull = GPIO_PULL_NONE;

    gpio_init(GPIOB, &gpio_init_struct);

}

和程序有关的下载方面的设置,啥都不用改,直接使用led_toggle的工程配置就好。



编译完程序,就可以下载,一路行云流水,没有任何问题,很容易就行实现了TFT的显示。

AT32F405系列高效能ARM®Cortex®-M4微控制器,高达216MHz的CPU运算速度与内建的单精度浮点运算单元(FPU)、数字信号处理器(DSP)。这些参数,实在是太强悍了,比我当初买的486电脑的CPU性能都高。看看后面能不能针对这些性能搞点啥花样。
说句题外话,写这个帖子的时候,发现二姨家的图片上传功能终于改善了,以前的那个太不方便了。赞!



使用特权

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

本版积分规则

认证:大连伊飞特信息技术有限公司软件工程师
简介:本人于1993年毕业于大连理工大学。毕业后从事单片机开发工作5年,之后转入软件开发工作至今。

122

主题

3710

帖子

5

粉丝