一、前言
由于需要学习一下atmel的atsaml 系列,使用AtmelStudio 7开发,之前主要用STM32,现在看到Atmel的库函数,其实是有许多相似之处。ASF3的库对应ST的标准库。ASF4对应ST的HAL库,Ateml Start对应STM32CubeMX。这里还是用ASF3来开发,因为Ateml Start还不支持我的这个芯片,而且和STM32的HAL库类似,ASF4为了好移植都是底层都用了抽象的写法,资料比较少,效率估计也不高。
用到的工具如下:
IDE:AtmelStudio 7
芯片:ATSAM4LS2C (M4内核,主频48M)
ASF版本:3.47
仿真器:JLink v9
二、新建工程,配置时钟
1.新建工程,选择GCC ASF Board Project,填写一下工程名,这里叫template。
2.选择使用的芯片,如果用官方的开发板,也可改成选择开发板,注意右边→_→有Datasheet(数据手册),可以下载下来,之后都会用到。
3.打开ASF Wizard
有时候会卡住,等一下。
一般最基础会用到的Modules包括System Cocok、Delay、GPIO,选选中,然后点击Add添加到右边,最后点Applay应用。
ASF库文件会自动添加到src文件夹下,config文件下conf_clock.h和conf_board.h就是给用户配置的,等下会用到。
4.点击图上标出的编译图标,编译工程,会发现报错了 BOARD_OSC0_HZ 未声明,看来跟晶振频率有关,接下来就要配置下系统时钟。
5.配置时钟要参考一下官方代码,看到有教程通过ASF Explorer下找到quick Start Guide链接到快速指南,但是现在已经带不开网页了,可能是Ateml已经被MicroChip收购了,网址改了。
没关系。我们可以通过microchip官网找到ASF库的开发指南
https://asf.microchip.com/docs/latest/search.html?device=sam4l
找到system clock的quickstart guide,看到如下例子
https://asf.microchip.com/docs/latest/sam4l/html/sysclk_quickstart.html
6.还是有点懵逼,没关系,AtemlStudio已经包括了很多例程,通过File->Example Project新建官方例子工程
有几千个例子,通过搜索框填入clock缩小下范围,选择其中一个。
新建的官方例程CLOCK_ESAMPLE11和我们之前建的工程template在一个解决方案下。
7.通过查看例程的代码,差不多明白了,板上的时钟晶振BOARD_OSC0_HZ需要自己宏定义,我们照搬例程的定义,复制到conf_board.h,晶振频率根据自己板上的实际频率设置,这里配置12M和32.768k,其他的如BOARD_OSC0_STARTUP_UP启动时间也要定义,代码如下:
8.看一下数据手册(前面下载的),ATSAM4L的主时钟频率源可选的有7个,默认RCSYS,只有115KHz。
由于默认的RCSYS频率太低,打开conf_clock.h,将SYSCLK_SRC_RCSYS注释掉,选择SYSCLK_SRC_PLL0锁相环作为系统时钟
同样是conf_clock.h里,可以看到pll的分频和倍频默认设置到最大主频48M。
打开main.c,插入时钟初始化sysclk_init();
9.记得切换工程为我们的template
再编译一下,没错误系统时钟就配置好了
三、点灯程序
下面就用配置好的工程模板写个简单的点灯,板上的LED灯连接PC26,低电平点亮。
代码如下:
#include <asf.h>
#define LED_ON ioport_set_pin_level(PIN_PC26,0)
#define LED_OFF ioport_set_pin_level(PIN_PC26,1)
int main (void)
{
/* Insert system clock initialization code here (sysclk_init()). */
sysclk_init();//系统时钟初始化
board_init();
delay_init();//延时初始化
/* Insert application code here, after the board has been initialized. */
ioport_enable_pin(PIN_PC26);//PC26使能普通IO口功能
ioport_set_pin_dir(PIN_PC26,IOPORT_DIR_OUTPUT);//PC26方向输出
while(1)
{
LED_ON;
delay_ms(200);
LED_OFF;
delay_ms(200);
}
}
四、下载调试
1.点击工具栏锤子图标,选择仿真器,我这里用的是Jlink ,接口用SWD,这里有两点要注意:
(1)擦除选择Erase only program area,只擦除程序区域,如果选择整片擦拭会下载失败。
(2)和STM32不同,Atmel的SWD要连5根线,SWD_CLK,SWD_DIO,SWD_RST,VCC和GND,多了RST,不连能下载程序,但是调试不了。
2.工具栏上的这两个图标,左边是下载程序,不调试;右边是进入调试
点击下载,顺利的话能看到LED灯闪烁。
五、总结
1.数据手册在选择芯片的窗口可以直接下载。
2.开发指南可以在官网找到:
https://asf.microchip.com/docs/latest/search.html?device=sam4l
3.官方例程可以通过File->Example Project 查找和建立。
4.外国社区网站挺活跃的,有啥问题可以在上面搜索一下
通过以上4点基本上有啥问题都能迎刃而解。