打印
[Atmel]

每天跟我读点资料:SAM D SERCOM USART 配置4

[复制链接]
1958|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
4应用文档
这一章将描述SAM D21SERCOM USART模块的不同特性,带有不同例子代码。
SERCOM USART例子:
。基本配置
。分数波特率配置
。硬件握手配置(不适用于SAM D20)
SOF检测和唤醒配置
注意:这章假设用户以有在SAM D21上用Atmel Studio IDE编程和调试的知识。
为了容易理解,例子将使用寄存器级的代码为进行SERCOM模块配置。然而时钟配置,使用的是ASF函数。
4.1主时钟
SAM D21设备中,从GCLK发生器0输出的时钟将用做主时钟。通用时钟发生器0,也叫GCLK_MAIN,这个时钟回馈给电源管理用来产生同步时钟。通用时钟发生器0可以有一个SYSCTRL晶振作为它的时钟源。下列是SYSCTRL时钟源。
XOSC
OSCULP32K
XOSC32K
OSC8M
DFLL48M
FDPLL96M(不适用于D20设备)
应用使用OSC8M作为发生器0时钟源。下列程序在conf_clocks.h中将初始化发生器0的时钟源。
/* Configure GCLK generator 0 (Main Clock) */
# define CONF_CLOCK_GCLK_0_ENABLE true
# define CONF_CLOCK_GCLK_0_RUN_IN_STANDBY false
# define CONF_CLOCK_GCLK_0_CLOCK_SOURCE SYSTEM_CLOCK_SOURCE_OSC8M
# define CONF_CLOCK_GCLK_0_PRESCALER 1
# define CONF_CLOCK_GCLK_0_OUTPUT_ENABLE false
4.2 基本配置
两个SAM D21 Xplained Pro板子彼此通过EXT2 连接头的SERCOM USART(TXD,RXD)连接在一起,并通过EDBG端口连到PC终端如下图所示:
基本配置段将有管脚初始化,时钟初使化,和SERCOM USART 初始化函数。下列函数被基本配置调用。
system_init()
edbg_usart_clock_init()
edbg_usart_pin_init()
edbg_usart_init()
ext_usart_clock_init()
ext_usart_pin_init()
ext_usart_init()
下面的章节将对每个函数详细总结。
4.2.1 系统初始化
System_init()是一个ASF函数它用来为每个conf_clock.h文件配置通用时钟和时钟源。主时钟将要被配置在段的开始部分。它也初始化SAM D21 Xplained Pro的硬件和事件系统。
4.2.2 EDBG USART 时钟初始化
SERCOM3连招商到EDBGUSART,通过它SAM D21 Xplained Pro将同PC终端应用通讯。下列函数初始化SERCOM3模块。
/* EDBG UART(SERCOM3) bus and generic clock initialization */
void edbg_usart_clock_init(void)
{
struct system_gclk_chan_config gclk_chan_conf;
uint32_t gclk_index = SERCOM3_GCLK_ID_CORE;
/* Turn on module in PM */
system_apb_clock_set_mask(SYSTEM_CLOCK_APB_APBC, PM_APBCMASK_SERCOM3);
/* Turn on Generic clock for USART */
system_gclk_chan_get_config_defaults(&gclk_chan_conf);
/*Default is generator 0. Other wise need to configure like below */
/* gclk_chan_conf.source_generator = GCLK_GENERATOR_1; */
system_gclk_chan_set_config(gclk_index, &gclk_chan_conf);
system_gclk_chan_enable(gclk_index);
}
。一个数据结构变量gclk_chan_conf被声明。这个结构用来配置SERCOM的通用时钟。
EDBG USART被连接到SERCOM3,所以SERCOM3通用时钟”SERCOM3_GCLK_ID_CORE”和”SYSTEM_CLOCK_APB_APBC”被配置。
。通用时钟“SERCOM3_GCLK_ID_CORE”用GCLK发生器0作为源时钟(通用时钟源能根据使用者需要被改变),所以SERCOM3时钟运行在OSC8M时钟下的8MHz
system_gclk_chan_set_config将用来设置通用时钟通道配置。
System_gclk_chan_enable将使能通用时钟索引”SERCOM3_GCLK_ID_CORE”

相关下载

相关帖子

沙发
yly1023| | 2016-3-16 14:18 | 只看该作者

使用特权

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

本版积分规则

个人签名:http://shop34182318.taobao.com/ http://shop562064536.taobao.com

2398

主题

6954

帖子

67

粉丝