查看: 1679|回复: 0

[SAMD21] [D21应用笔记 (9)]SERCOM串行通讯模块之USART模式

[复制链接]

13

主题

0

好友

232

积分

秀才

Rank: 3Rank: 3

  • TA的每日心情
    开心
    2014-5-23 20:30
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    发表于 2014-6-2 01:22:11 |显示全部楼层
    通过前面介绍可知,SERCOM模块可以配置为不同的串行通讯模式,接下来就将介绍一下USART通讯模式。
    先看一下结构框图:


    可以看出USART可以选择内部或者外部时钟源(通过CTRLA.MODE寄存器),通过BAUD可以配置串口波特率,其初始化步骤如下(初始化之前打开模块核心时钟和总线操作时钟):
    1.通过CTRLA.MODE寄存器配置为USART模式以及选择时钟源(内/外部时钟)。
    2.通过CTRLA.CMODE寄存器选择使用同步还是异步通讯。
    3.通过CTRLA.RXPO和CTRLA.TXPO寄存器配置收发数据线所使用端口(PAD0~PAD3).

    4.通过CTRLB.CHSIZE配置传输数据位数(5~9位)。
    5.通过CTRLA.DORD配置LSB或MSB先传输。

    6.通过CTRLA.FORM寄存器配置数据帧的格式

    当配置为带校验格式则可以通过CTRLB.PMODE寄存器选择奇/偶校验。
    7.通过CTRLB.SBMODE寄存器配置停止位数。
    8.当选择使用内部时钟时则可以通过BAUD寄存器配置串行通讯波特率,支持分数分频。
    9.通过CTRLB.RXEN 和 CTRLB.TXEN寄存器激活收发器。
    10.配置好收发线所用的外部引脚,通过PORT模块的MUX多路开关。
    11.最后写1到CTRLA.ENABLE寄存器打开USART进行数据收发。


    发送数据时将数据写入DATA寄存器,然后等待发送寄存器为空INTFLAG.DRE = 1或发送数据传输完毕INTFLAG.TXC = 1。
    接收时等待接受完成INTFLAG.RXC = 1,然后从DATA寄存器读出就收的数据。

    总的来说用起来还是比较简单的,部分代码如下:

    测试时需要注意一点就是,EDBG的虚拟串口需要用超级终端打开(推荐用SecureCRT),并且勾选流控(RTS/CTS)

    详细代码见附件,采用MDK4.74开发环境

    RTX_USART.rar

    1.03 MB, 下载次数: 93

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /5 下一条


    手机版|爱板网 |网站地图  

    GMT+8, 2016-12-8 14:12 , Processed in 0.122030 second(s), 11 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部