SAM4S Xplained Pro Demo程序简析

作者: 绳精
上传时间为: 2014-11-20 05:01 PM
2014-11-20
阅读:

看了一下,4s有一个demo,可以把IO1和oled两个扩展板用起来,那就先来试用下。根据demo上的要求,插上两块扩展板,IO1必须在EXT2,oled必须在EXT3,然后就是新建example project。细看下,src里面结构还是比较清晰的,分成3块。asf、config和main.c。

首先来看asf,就是atmel的软件框架。下面有common、sam和thirdparty。

common里面主要是3部分。

boards:用来定义各种atmel的开发板对应的头文件位置;

components:里面有关于显示和存储的头文件和源文件,不过奇怪的是,4s上不是有nand flash吗?怎么没在里面呢。这里面的三个都是扩展板上的说。看来demo上是没有用到nand flash。ssd1306是oled的驱动;at30tse75x是IO上的eeprom;sd_mmc是IO上的TF卡。

然后是service,这里面有clock、delay、gpio、spi等等。但是如果向下看,会发现sam目录里面还有pio,spi什么的。这些是重复的吗?事实上,如果看到里面文件内容我们会发现,比如sam_gpio.h里面包含了driver里面的pio.h,然后用pio.h里面定义的函数来实现sam_gpio里面定义的功能。为啥要这么做呢?暂时没想明白。

utils里面只有两个,中断和stdio(其实就是串口的读写啦),其实要调用service里面的uart的驱动啊,这个是不是给更高级的程序用的?

进到sam目录里面,发现怎么还是boards、drivers和utils??!!这个里面的应该是比common要第一层次的,或者更接近硬件细节的。比如这里的boards里面就定了一些针对4s和扩展板的初始化代码,driver里面就是外设的驱动,提供给common的service使用。

ASF的最后一部分很简单,就是第三方的代码,这里有cmsis和fatfs

第二部分,config,很好理解,就是各种外设的设置。比如最简单的uart的配置文件里面就可以找到uart界面,波特率,校验等等

最后通过一个asf.h把所有的头文件都包含进来了,供main.c使用。这样main.c里面就只包含asf和string就ok。

main的结构也很清楚,对各种外设初始化,gpio对应按键和LED,adc是用来测量光照强度的,温度用I2C,sd卡用spi。然后建立了一个128长度的buffer,用来存放温度和光照的数值,因为显示有128列,这样可以画出一个动态的柱状图。分成3个模式,分别显示温度,光照和sd卡文件信息,用button1切换,用LED1-3指示模式。上两张最后的运行效果图。实际测量是很稳定的,为了有点效果故意弄了下。

作者其它经验
全部评论 ()
条评论
写评论

创建讨论帖子

登录 后参与评论
系统提示