SAM4E单片机之旅——12、USART

发布者:Yaqi最新更新时间:2017-01-07 来源: eefocus关键字:SAM4E  单片机  USART 手机看文章 扫描二维码
随时随地手机看文章

清楚了UART的用法之后,现在来研究一下USART的用法。和上一次差不多,这次也通过USART的串口来实现和PC的通信。和上一次不同的是,USART本身就有接收超时的功能,所以这次就不用TC了。

USART和UART相比,功能多了许多,可以配置的选项也更多。虽然最主要的差别是USART可以实现同步通信,但PC的串口没有这个功能,所以我们就先不拿这个功能开刀了。

一、 思路

实现思路和上一次使用UART的PDC差不多,区别只是这次直接使用USART的接收超时功能,而不用TC。

 

二、 电路图

clip_image002

使用的USART口为USART1,这个串口在上次使用的DBGU口的旁边。

有个使能引脚连在PA23上。使用时需要将PA23拉为低电平才能使用这个串口。另外,芯片的USART1的SCK引脚使用的也是PA23。

还有就是这个串口使用的通信协议为RS232,需要将JP11正确跳线。JP11就在USART1接口的附近,默认情况下选择的是RS485,在这里需要改变跳线帽的位置。

 

三、 USART的配置

大部分配置都和上一节的相同。配置前需要将MCK配置为120 MHz,配置完成后USART工作在硬件握手模式,波特率为115200 Hz,数据位长度为8,1位停止位,不使用校验。

在PC端使用通信软件时注意设置RTS的状态。

若掌握了使用PDC和UART进行通信的配置的话,本小节只需注意阅读加粗的步骤即可。

  1. 拉低PA23引脚电平,以使能USART1串口。

    1
    2
    3
    4
    5
    /* 拉低PA23,以使能USART1串口 */
    PIOA->PIO_PER = PIO_PA23;
    PIOA->PIO_OER = PIO_PA23;
    PIOA->PIO_OWER = PIO_PA23;
    PIOA->PIO_CODR = PIO_PA23;
  2. 开启外设时钟,以及将PA21,PA22,PA24,PA25引脚分配给外设A(USART1)。

  3. 使能发送和接收。

  4. 1
    USART1->US_CR = US_CR_RXEN | US_CR_TXEN;

    模式设置。未设置US_MR_OVER位则表示过采样率为16。

    1
    2
    3
    4
    5
    6
    7
    USART1->US_MR =
          US_MR_USART_MODE_HW_HANDSHAKING   /* 硬件握手模式 */
        | US_MR_USCLKS_MCK          /* 选择的MCK */
        | US_MR_CHRL_8_BIT          /* 数据位为8位  */
        | US_MR_PAR_NO              /* 无校验位  */
        | US_MR_NBSTOP_1_BIT            /* 停止位为1位 */
        ;
  5. 波特率设置。USART工作在不同模式时,波特率的计算方法不同。在使用异步模式时,CD值的计算和UART的一样:

    波特率 = 选择的时钟 / ( CD * 过采样率 )

    注:本芯片的UART的过采样率为16。

    在MCK为120 MHz,波特率为115200 Hz时,计算出的CD的值为65。

    1
    USART1->US_BRGR = US_BRGR_CD(65);
  6. 接收超时设置。通过设置US_RTOR寄存器的低16位决定接收时等待的空闲时间。写入的值表示等待的比特位的数量,即等待的时间为传输该数量的比特位时需要的时间。

    1
    2
    3
    4
    5
    #define USART_RX_WAIT_MS 500
    int wait_bit_time = USART_RX_WAIT_MS * 115200 / 1000;
    if (wait_bit_time > 0xffff)
        wait_bit_time = 0xffff;
    USART1->US_RTOR = US_RTOR_TO(wait_bit_time);
  7. PDC的设置。PDC和缓冲区的使用方法和上一次相似。注意将使用的PDC修改为正确的PDC即可。

  8. 中断。启用缓冲区满及接收超时中断。

    1
    2
    USART1->US_IER = US_IER_RXBUFF | US_IER_TIMEOUT;
    /* NVIC 的配置略 …… */

 

四、 USART的中断处理

在接收超时以及缓冲区满时会产生中断,所以在中断时将接收缓冲区的内容通过PDC发送出去即可。在使用硬件握手协议时,可以在中断处理过程中暂停数据的接收。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void USART1_Handler(void)
{
    uint32_t status = USART1->US_CSR;
 
    if ((status & US_CSR_TIMEOUT) == US_CSR_TIMEOUT
        || (status & US_CSR_RXBUFF) == US_CSR_RXBUFF)
    {
        USART1->US_CR = US_CR_RTSDIS;
 
        int rec_size = BUF_SIZE - PDC_USART1->PERIPH_RCR;
        if (rec_size != 0)
            TransferRxBufAndRec(rec_size);
        /* 在下次数据接收时启动超时判断 */
        /* 同时拉低超时产生的中断 */
        USART1->US_CR = US_CR_STTTO;
        USART1->US_CR = US_CR_RTSEN;
    }
}

 

TransferRxBufAndRec()函数和上一节的相似,只需更改使用的PDC即可。


关键字:SAM4E  单片机  USART 引用地址:SAM4E单片机之旅——12、USART

上一篇:SAM4E单片机之旅——13、LCD之ASF初步
下一篇:SAM4E单片机之旅——11、UART之PDC收发

推荐阅读最新更新时间:2024-03-16 15:29

恩智浦MCU:100%基于ARM内核
  “我们100%基于ARM的解决方案突破了传统8位、16位、32位MCU及DSP的界限,”恩智浦半导体副总裁兼微控制器产品线总经理Geoff Lees介绍,这样的坚持,也得到了积极的反馈:过去两年的经济环境,当整个32位MCU市场下降25%时,恩智浦依然实现了正增长。   100%基于ARM   从ARM7TDMI、ARM968、ARM926到Cortex-M3、Cortex-M0以及Cortex-M4处理器,恩智浦已经形成全系列的微控制器产品,能够从性能、功耗和价格方面满足客户的嵌入式系统需求。   LPC1000系列由LPC1100、LPC1300及LPC1700组成。LPC1300提供先进的电源
[单片机]
基于C8051F310和CS8900A的计算机网络实验平台设计
   O 引言   《计算机网络》课程是大学计算机及相关专业开设的一门计算机与通信的专业课程。本课程具有很强的实践性,很多教学内容都需要高成本的实验环境才能实现,加上网络设备更新快、成本高,一般高校难以承担。而通过软件技术.建立一个软件模拟的实验室环境,不仅可节约实验成本,还可提高实验教学的水平和质量。   局域网技术发展十分迅速,Ethernet (以太网)是目前使用最广泛的局域网技术。因此,学习以太网技术对深入掌握局域网知识是非常重要的。本设计的目的就是利用嵌入式网络模块来实现网络数据的发送和接收,使学生熟悉网络的数据发送流程。    1 实验平台的硬件设计   计算机网络实验平台的硬件框图如图1所示,它主要由
[嵌入式]
更快的STM32H7微控制器,为产品带来更高的性能和经济性
半导体供应商意法半导体(STMicroelectronics,简称ST;纽约证券交易所代码:STM)推出运算速度破纪录的嵌入闪存的STM32* 微控制器(MCU),让注重成本的新产品也具有图形用户界面、 AI和先进网络保护的高端功能。 新的STM32H7 MCU基于Arm® Cortex®-M7内核,主频550 MHz,是深度嵌入式应用市场上内核速度最快的片上集成闪存的MCU。这些单核微控制器配备高达1 MB的闪存,为注重成本的应用产品带来更高的性能和经济性。 新产品可以运行存放在外部存储器内的代码,同时处理性能和安全保护功能不受任何影响。在可变存储器控制器(FMC)和八线SPI存储器接口等功能的辅助下,无论是运行片
[单片机]
更快的STM32H7<font color='red'>微控制器</font>,为产品带来更高的性能和经济性
意法半导体推出业界首创的云端MCU边缘人工智能开发者平台
意法半导体推出业界首创的云端MCU边缘人工智能开发者平台 可在STM32板上在线评估边缘 AI模型性能 2023年2月23日,中国 – 服务多重电子应用领域、全球排名前列的半导体公司意法半导体(STMicroelectronics,简称ST;)继续扩大嵌入人工智能(AI)解决方案组合,为嵌入式人工智能开发人员和数据专家提供一套业界首创的在线开发工具和服务。 STM32Cube.AI云端开发者平台让开发者有机会使用一整套围绕行业领先的 STM32微控制器 (MCU)构建的在线开发工具,促进软硬件选购决策,降低边缘人工智能技术开发复杂度,加快新产品上市速度。 意法半导体通用微控制器子产品部执行副总裁Ricardo De
[网络通信]
意法半导体推出业界首创的云端<font color='red'>MCU</font>边缘人工智能开发者平台
单片机C51存储器类型及存储模式
  单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能集成到一块硅片上构成的一个小而完善的微型计算机系统。如今运用最为广泛的就是C51单片机,其中典型的有80C51和89c51单片机。今天主要以C51单片机存储器类型及存储模式为中心而展开的话题。   1、80C51存储器的结构   程序存储器寻址范围为64KB(用PC或DPTR),片内数据存储器寻址范围为256B,80H-FFH只能间接寻址,片外数据存储器寻址范围为64KB(DPTR、P2、@Ri)   图1 80C51程
[单片机]
<font color='red'>单片机</font>C51存储器类型及存储模式
8051单片机数据说明
深入理解并应用C51对标准ANSIC的扩展是学习C51的关键之一。因为大多数扩展功能都是直接针对8051系列CPU硬件的。 具体说明如下(8031为缺省CPU)。 一、Keil C51扩展关键字 C51 V4.0版本有以下扩展关键字(共19个): _at_idata sfr16 alien interrupt small bdata large _task_ Code bit pdata using reentrant xdata compact sbit data sfr 二、内存区域(Memory Areas): 1、 Pragram Area: 由Code说明可有多达64kBytes的程序
[单片机]
51单片机存储器地址
1、特殊功能寄存器 在AT89C52 片内存储器中,80H-FFH 共128 个单元为特殊功能寄存器(SFE)。并非所有的地址都被定义,从80H FFH 共128 个字节只有一部分被定义,还有相当一部分没有定义。对没有定义的单元读写将是无效的,读出的数值将不确定,而写入的数据也将丢失。 不应将数据 1 写入未定义的单元,由于这些单元在将来的产品中可能赋予新的功能,在这种情况下,复位后这些单元数值总是 0 。 AT89C52除了与AT89C51所有的定时/计数器0 和定时/计数器1 外,还增加了一个定时/计数器2。定时/计数器2 的控制和状态位位于T2CON(参见表3)T2MOD,寄存器对(RCAO2H、RCAP2L)是定时器2
[单片机]
什么是汽车微控制器?汽车MCU的特点、分类及应用
随着智能汽车的发展,用户对汽车的安全性、稳定性、智能化不断提出更新的要求。车载各项功能的实现都需要复杂的芯片组和算法的稳定支持,MCU将发挥更大的作用。 什么是汽车微控制器? 汽车微控制器又称MCU,是汽车电气控制系统的核心部件。MCU必须具备良好的高温性能和稳定性,才能控制车内所有电子系统,包括多媒体、音响、导航、悬架等。与普通MCU相比,汽车MCU对品质要求更高,在复杂环境下不易损坏汽车的。一般来说,最重要的是可靠性和温度范围,民用级为0-70℃,工业级为20-85℃,汽车级为40-85℃。 MCU将成为“汽车大脑”的重要组成部分,是汽车的智能大脑,发挥着“思考、计算、控制”的核心功能。随着汽车电子电气架构向集中式演进,M
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved