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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

本文由泰州市功放模块有限公司发布于公司产品,转载请注明出处:SAM4E单片机之旅——13、LCD之ASF初步

相关阅读