SAM4E单片机之旅——13、LCD之ASF初步

发布者:czm721002最新更新时间:2017-01-07 来源: eefocus关键字:SAM4E  单片机  LCD  ASF初步 手机看文章 扫描二维码
随时随地手机看文章

在Atmel Studio 6中,集成了Atmel Software Framework(ASF框架)。通过它提供的库,可以很快速地完成新的项目。

这次的最终目标使用ASF在LCD上显示出文字“Hello World!”,现阶段目标是点亮LCD的背光,学习目标是了解怎么样使用ASF提供的模块。

 

一、 ASF Wizard

新建一个项目,根据所使用的开发板选择模板。

wps_clip_image-12098

然后可以通过ASF Wizard进行所需模块的配置。

wps_clip_image-12152

默认情况下,已经选择了两个模块。在之前我们以前使用过了其中Generic board support模块提供的头文件sam4e_ek.h了。

wps_clip_image-18626

为了解模块添加的方法,先把这两个模块移除。

 

二、 通过ASF设置时钟

  1. 添加模块

    在可用模块里找到“System Clock Control”模块,展开它。

    wps_clip_image-22996

    可以看到它依赖的模块,以及相应的API文档等内容。

    添加该模块后,它会自动地把依赖的模块添加进去。添加完成后点击Apply按钮,使改变生效。

    现在在asf.h文件中,就已经导入了一系列的模块相关的头文件。如刚刚使用的系统时钟控制模块的:

    1
    2
    // From module: System Clock Control - SAM4E implementation
    #include

    同时,在文件夹config下,多了一个文件conf_clock.h。

    wps_clip_image-20415

  2. 配置

    conf_clock.h里保存的就是时钟相关的配置了。这里面的注释很清楚,配置方法也很简单。并且在该文件的末尾也说明了默认情况下,配置的结果:

    1
    2
    3
    4
    5
    6
    7
    // ===== Target frequency (System clock)
    // - XTAL frequency: 12MHz
    // - System clock source: PLLA
    // - System clock prescaler: 2 (divided by 2)
    // - PLLA source: XTAL
    // - PLLA output: XTAL * 16 / 1
    // - System clock: 12 * 16 / 1 / 2 = 96MHz

    为了使这个时钟的配置生效,调用sysclk_init()即可:

    1
    2
    3
    4
    5
    6
    #include
    int main (void)
    {
        sysclk_init();
        while(1);
    }
  3. 编译

    但是在编译时,发现缺少头文件board.h。这说明ASF Wizard在解决依赖时也有那么一点Bug。尝试再手动添加一个模块Generic board support,再编译,发现又缺少头文件ioport.h,继续添加模块IOPORT,编译通过。IOPORT模块依赖了System Clock Control模块,可以将手动添加的这个模块删除,至此,又回到了新建项目时的模块设置了。

    添加不必要的模块会增加编译的时间,也可能会增加生成的目标文件的大小。如果熟悉相关头文件的作用,也可以修改asf.h中包含的头文件。

    另外,也可以通过了解ASF中函数的实现,来学习相关的配置过程。

    wps_clip_image-29383

  4. 查看MCK的频率

    如sysclk_init()一样,ASF中实现了许多常用的功能。如我们需要查看MCK的频率的话,也很简单:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    volatile uint32_t freq;
    freq = SystemCoreClock; /*  4 000 000 */
     
    /* 这个函数是根据conf_clock.h中宏的定义来计算的。
       即是调用sysclk_init()后MCK的值 */
    freq = sysclk_get_cpu_hz(); /* 96 000 000 */
     
    sysclk_init();
     
    /* 调用sysclk_init()后会自动修改这个变量 */
    freq = SystemCoreClock; /* 96 000 000 */

 

三、 LCD背光控制器

wps_clip_image-15044

开发板使用的LCD背光控制器是AAT31系列的。同时PC13连接的是它的使能、控制引脚。

另外,假设我们不知道这个背光控制器的亮度控制方法是向EN/SET引脚发送N个脉冲波,那该怎么使用这个控制器呢?RTFM?找它的芯片手册当然是一个能够深入了解它的方法,但假如我们的目标仅仅是能用就好,又或是使用起来太过麻烦呢?

嗯,我们这次学的就是ASF。

  1. 添加模块

    在ASF Wizard中添加Display – AAT31XX Backlight Controller模块。添加后项目里多了个头文件conf_at31xx.h,这个头文件主要的作用就是在未定义EN/SET引脚的接线时,对其进行定义(在sam4e_ek.h这个文件中已经做好相关的定义了)。同时asf.h中也包含了相关的头文件了。

  2. ASF中对组件进行初始化

    使用背光控制器之前,需要进行相关配置。这个工作可以手动完成,也可以使用ASF完成。

    在conf_board.h文件里,可以指定好一系列需要配置的组件。然后在执行board_init()函数时,就可以根据这些宏的定义执行相应的初始化工作。这个头文件里已经通过注释说明了配置USART等引脚时,宏是如何定义的,但是却不知道如何背光组件相关的定义。

    查看board_init()的实现,可以发现以下几句:

    1
    2
    3
    4
    #ifdef CONF_BOARD_AAT3155
    /* Configure Backlight control pin */
    ioport_set_pin_dir(BOARD_AAT31XX_SET_GPIO, IOPORT_DIR_OUTPUT);
    #endif

    通过这里就可以得到需要的宏的名字,以及ASF初始化时具体的工作了。现在就在conf_board.h中,加上相应的定义就好了:

    1
    2
    /* Configure Backlight control pin */
    #define CONF_BOARD_AAT3155

    另外,aat31xx.h头文件也需要这个宏的声明以判断具体的控制器的型号。

    最后不要忘记调用board_init( )函数。

  3. API的使用

    可以查看相应的API的文档,以了解ASF提供的API。

    wps_clip_image-20800

    更直接的方法是阅读相应的头文件(aat31xx.h),这里面可能会有一些文档中未提到的部分。如以下几个宏就未在API文档中说明:

    1
    2
    3
    #define AAT31XX_MIN_BACKLIGHT_LEVEL 1
    #define AAT31XX_AVG_BACKLIGHT_LEVEL 8
    #define AAT31XX_MAX_BACKLIGHT_LEVEL 16

    现在,就可以很方便地使用背光控制器了。如以下代码将配置背光为最大亮度:

    1
    aat31xx_set_backlight(AAT31XX_MAX_BACKLIGHT_LEVEL);

 

四、 LCD控制器

开发板使用的LCD控制器是ILI93xx系列的。ASF提供的模块为Display – ILI93xx LCD Controller。conf_board.h中,相应的宏声明为CONF_BOARD_ILI93XX。

board_init( )中初始化的工作仅有配置GPIO引脚的复用,但是还有别的工作需要完成。所以LCD暂时还不能用。剩下的部分在下一次说明。


关键字:SAM4E  单片机  LCD  ASF初步 引用地址:SAM4E单片机之旅——13、LCD之ASF初步

上一篇:SAM4E单片机之旅——14、LCD之SMC的配置
下一篇:SAM4E单片机之旅——12、USART

推荐阅读最新更新时间:2024-03-16 15:29

STM32F103单片机ADC功能使用
12位ADC是一种逐次逼近型模拟数字转换器。它有多达18个通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。 模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阀值。 ADC的输入时钟不得超过14MHz,它是由PCLK2经分频产生。 ADC 主要特征 ● 12位分辨率 ● 转换结束、注入转换结束和发生模拟看门狗事件时产生中断 ● 单次和连续转换模式 ● 从通道0到通道n的自动扫描模式 ● 自校准 ● 带内嵌数据一致性的数据对齐 ● 采样间隔可以按通道分别编程 ● 规则转换和
[单片机]
单片机定时器工作模式TMOD设置
单片机定时器工作模式TMOD设置 TMOD:定时器/计数器模式控制寄存器(TIMER/COUNTER MODE CONTROL REGISTER) 定时器/计数器模式控制寄存器TMOD是一个逐位定义的8位寄存器,但只能使用字节寻址,其字节地址为89H。 其格式为: TMOD结构图 ============================================== 其中低四位定义定时器/计数器T0,高四位定义定时器/计数器T1,各位的说明: Ⅰ,GATE——门控制。 ●GATE=1时,由外部中断引脚INT0、INT1来启动定时器T0、T1。 当INT0引脚为高电平时TR0置位,启动定时器T0; 当I
[单片机]
<font color='red'>单片机</font>定时器工作模式TMOD设置
采用新型TI SimpleLink™以太网MCU将传感器连接到云端
德州仪器(TI)近日在 SimpleLink™微控制器(MCU)平台 上引入了以太网连接,这是一个用于有线和无线MCU的单一开发环境的软硬件和工具平台,可以帮助开发人员轻松地将传感器从网关连接至云端。新型SimpleLink MSP432™以太网MCU以集成MAC和PHY的高性能120-MHz Arm® Cortex®-M4F内核为基础,有助于缩短电网基础设施和工业自动化网关应用的上市时间。欲了解更多信息,请访问 www.ti.com.cn/simplelinkethernet-pr-cn 。 SimpleLink以太网MCU的主要特性和优势 高度集成的有线MCU:新型 MSP432E411Y MCU 集成了以太网M
[网络通信]
瑞萨电子推出新型全高清1080p LCD视频控制器
高度集成的RAA278842控制器可实时备份并实时显示摄像头视频以防止事故发生,并启用后视镜辅助泊车。 2019 年 9 月 24 日,日本东京讯 - 全球领先的半导体解决方案供应商 瑞萨 电子株式会社(TSE:6723)今日宣布推出汽车行业首款具备4通道 MI PI - CSI 2输入的全高清1080p LCD视频控制器。RAA278842 LCD视频控制器的4通道(或2个双通道)MIPI-CSI2输入支持每通道高达1Gbps的速率,可与最新一代车用摄像头、应用处理器和 图形 处理器连接。该控制器还支持150 MHz单通道OpenLDI 接口 ,以及分辨率高达1920 x 1080的各种视频接口与LCD面板尺寸。RAA2788
[汽车电子]
瑞萨电子推出新型全高清1080p <font color='red'>LCD</font>视频控制器
MSP430系列单片机复位电路系统设计分析
  0 引言   TI公司的混合信号处理器MSP430系列单片机以其处理能力强大、外围器件集成度高、功率消耗低、产品系列全面、全系列工业级等特点,作为目前MCU主流市场的产品之一,在电子应用领域中得到广泛应用,被越来越多的电子设计师所青睐。由于复位电路设计问题而导致的系统出现上电后不工作或状态不正确是很多MSP430单片机电路设计者们在设计、调试和应用中曾遇到过的问题,尽管这种情况发生的几率很低,但对于可靠性要求较高的应用场合,这个现象仍需引起电子设计人员的足够重视。   为此,本文对MSP430全系列单片机的复位系统和复位机制进行了详细深入的分析,并针对性地提出了具体的外围复位电路设计方案和有关电子元器件的详细介绍,以供同行
[单片机]
单片机与PLC有什么区别?
要搞清楚单片机与PLC的异同,首先得明确什幺是单片机,什幺是PLC。对此,我们简要回顾一下计算机的发展历程也许有帮助,按计算机专家的原始定义,计算机系统由五大部分--即控制单元(CU)、算术运算单元(ALU)、存储器(Memory)、输入设备(Input)、输出设备(Output)组成。 早期计算机(晶体管的或集成电路的,不包括电子管的)的CU或ALU由一块甚至多块电路板组成,CU和ALU是分离的,随着集成度的提高,CU和ALU合在一块就组成了中央处理单元(CPU),接着将CPU集成到单块集成电路中就产生MPU或MCU,出现了如Intel4004、8008、8080,8085、8086、8088、Z80等MPU。 此后,MPU的发
[单片机]
基于STM32单片机采集数据&数据上云
前言 以往采集数据均是采用Arduino开发板、esp32wifi模块等,本次实验采用的是STM32单片机,STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核,功能非常强大,为本次实验提供了无限可能。 参考博客:https://blog.csdn.net/weixin_43271542/article/details/117384011?spm=1001.2014.3001.5502 1.实验原理 本项目采用ARM结构中最为代表的Cortex-M4系列的芯片,选用STM32F407ZGT6开发板进行项目开发,选用的传感器为常见通用的DHT11温湿度传感器。传感器将采
[单片机]
基于STM32<font color='red'>单片机</font>采集数据&数据上云
基于PIC16F877A单片机的高分辨率频率计的设计
  1 引言   随着电子技术的迅速发展,以单片机为控制核心的控制器件,已经全面渗透到测试仪器和计量检定的各个方面。同时,频率计作为一种常用工具,在工程技术和无线电测量、计量等领域的应用十分广泛。本文介绍了一种以PIC16F87X系列单片机为控制器的高分辨率频率计的实现方法。   该方法设计的频率计主要用来测量脉冲频率。它采用LCD图形液晶显示,清晰度高,可视范围广,可外接晶体频率源,具有测量速度快、分辨率高的优点。   2 设计原理   PIC16F877A单片机内部集成有捕捉/比较/脉宽调制PWM (CCP)模块。当CCP工作在捕捉(capture)方式时,可捕捉外部输入脉冲的上升沿或下降沿,并产生相应的中断。  
[单片机]
基于PIC16F877A<font color='red'>单片机</font>的高分辨率频率计的设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved