UART寄存器及UART5初始化程序

发布者:haoying最新更新时间:2018-03-08 来源: eefocus关键字:UART  寄存器  UART5  初始化程序 手机看文章 扫描二维码
随时随地手机看文章

    kinetis有多达6个UART串口,可支持MODEM、红外、ISO7816等操作模式。UART寄存器有很多,但基本应用只关注其中的几个就够了。下面介绍常用寄存器:

    UARTx_BDH:UARTx_BDL - 低13位是波特率发生器,UARTx_BDH的第6位是RXD输入引脚有效边沿中断使能位,为1时使能;UARTx_BDH的第7位是LIN 间隔检测中断使能位,为1时使能。

    UARTx_C4 - 低5位是波特率微调位,第5位是10 位模式选择位,为0时,奇偶校验位是串行传输中的第9 位;为1时,奇偶校验位时串行传输中的第10 位。第6、7位是2个地址匹配模式使能位,当这2位全为0时,所有数据被传至缓冲区;当有非0的位时,丢弃最高有效位为0的数据,将最高有效位为1的数据与相应的匹配地址(UARTx_MA1、UARTx_MA2)比较,若匹配则数据传送到数据缓冲区,否则丢弃。

    UARTx_C2 - 控制寄存器2。第7位是传送器中断或者DMA 发送使能位,为1时允许产生发送中断或DMA请求;第6位是发送完成中断使能位;第5位是接收器满中断或DMA 发送使能位,为1时允许产生接收中断或DMA请求;第4位是空闲线中断使能位,为1时允许产生空闲中断;第3位是发送使能位,为1时允许发送;第2位是接收使能位;第1位是接收器唤醒控制位,为1时RWU 启动唤醒功能并且抑制进一步的接收器中断请求,硬件通过自动对RWU 清零唤醒接收器;第0位是发送间隔字符,置1发送一个间隔字符(如果S2[BRK13]被清零,10,11 或者12 个逻辑0,如果S2[BRK13]被设置,13 或14 逻辑0),必须在一个间隔字符发送完之前清0。

    UARTx_S1 - 状态寄存器1。第7位是发送数据寄存器空标志,为1时表示寄存器空;第6位是发送完成标志,为1时表示发送完成;第5位是接收数据寄存器满标志,为1时表示寄存器满;第4位是空闲线标志,为1时表示;第3位是接收溢出标识,为1时表示发生过溢出;第2位是噪音标志,为1时表示自从上次标志被清零后最少检测到一个数据字带噪音接收了;第1位是帧错误标志,为1时表示有帧错误发生;第0位是奇偶校验错误标志,为1时表示自从上次这个标志被清零后,至少一个带有奇偶校验错误的数据字被接收。

    UARTx_D - 收或发的数据。

    在使用UART前要做下面2件事:

    1、配置系统集成模块,打开UART和相应端口的时钟。为了低功耗的设计,kinetis的很多功能默认是关着的,要用程序把用到的功能打开。

    2、设置引脚复用,相应的PORT(本例是PORTE)用作UART。

    发送过程如下:

    1、首先设置波特率,UART baud rate = UART module cLOCk / (16 × (SBR[12:0] + BRFD)),涉及UARTx_BDH、UARTx_BDL、UARTx_C4三个寄存器。

    2、查询状态寄存器UARTx_S1,判断发送数据空标识位TDRE。

    3、若TDRE为1,写数据寄存器UARTx_D。

    4、写控制寄存器UARTx_C2,让TE位置1以允许发送。

    5、重复2~3步实现多个数据接收。

    接收过程如下:

    1、首先设置波特率,UART baud rate = UART module clock / (16 × (SBR[12:0] + BRFD)),涉及UARTx_BDH、UARTx_BDL、UARTx_C4三个寄存器。

    2、写控制寄存器UARTx_C2,让RE位置1以允许接收。

    3、查询状态寄存器UARTx_S1,判断接收数据满标识位RDRF。

    4、若RDRF为1,读数据寄存器UARTx_D。

    5、重复3~4步实现多个数据接收。

    下面是UART5的初始化程序:

    void UART_Init()
{
      // SIM_SCGC1: UART5=1
      SIM_SCGC1 |= (uint32_t)0x0800UL;
      // SIM_SCGC5: PORTE=1
      SIM_SCGC5 |= (uint32_t)0x2000UL;
      // PORTE_PCR9: ISF=0,MUX=3 做UART
      PORTE_PCR9 = (uint32_t)((PORTE_PCR9 & (uint32_t)~0x01000400UL) | (uint32_t)0x0300UL);
      // PORTE_PCR8: ISF=0,MUX=3 做UART
      PORTE_PCR8 = (uint32_t)((PORTE_PCR8 & (uint32_t)~0x01000400UL) | (uint32_t)0x0300UL);                         

          UART5_C4 = 0x14;    //波特率微调
      UART5_BDH = (312>>8) & 0x1F;//设波特率9600bps
      UART5_BDL = 312&0xFF;
      UART5_C2 |= 1<<2;//允许接收
}

    下面是主程序:

    int main(void)
{
    int idle,counter = 0;
    char rcv_buf[10];
    MCG_Init();
    UART_Init();
    printf("Hello (Kinetis) World in 'C' from MK60DX256Z derivative! nr");
    UART5_C2 |= 1<<2;
    for(;;) {
        //发送
        if( (UART5_S1&(1<<7)) != 0)
        {
            UART5_D = 0x55;
            UART5_C2 |= 1<<3;
        }

            //接收
        if( (UART5_S1&(1<<5)) != 0)
        {
            rcv_buf[counter] = UART5_D;
            counter++;
            if(counter >= 10)
            {
                counter = 0;
            }
        }
    }
    return 0;
}


关键字:UART  寄存器  UART5  初始化程序 引用地址:UART寄存器及UART5初始化程序

上一篇:C语言在应用程序设计上的优点
下一篇:基于单片机的音乐程序设计原理

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

M4K块移位寄存器数据读进方式的逻辑分析仪设计
  本文以三星的SDR SDRAM(K4S64632)作为存储器,通过FPGA内部的M4K块作为移位寄存器不断的进行读进数据的方式,在不中断程序运行的情况下实现有效数据不间断的读进,设置3种采样模式,结果表明该设计提高了数据的分析范围和质量。   1 逻辑分析仪总体方案   逻辑分析仪包括:数据采样、数据存储、显示控制3大部分。由于Cyclone芯片EP1C3T144C8理想情况下最大频率可达到275 MHz,在实际设计中考虑到其误差,该设计的信号捕获精度定位在100 MHz。最多16路信号捕获输入通道,1路信号触发通道,可调的采样时钟/周期,3种信号采样模式,使用计算机的的显示器作为波形显示屏幕。   模块整体上是根
[测试测量]
M4K块移位<font color='red'>寄存器</font>数据读进方式的逻辑分析仪设计
s3c2440裸机-UART编程(一、UART硬件介绍及传输原理)
1.uart硬件介绍UART的全称是Universal Asynchronous Receiver and Transmitter(异步收发器)。 uart主要用于: 1.打印调试 2.数据传输 串口通过三根线即可,发送、接收、地线。 pc的TxD - arm的RxD (UART write) arm的TxD - pc的RxD (UART read) 2.uart的参数和格式 波特率:表示每秒传输多少bit,bits per second(bps).一般波特率都会有9600,19200,115200等选项。 格式: 起始位: 先发出一个逻辑”0”的信号,表示传输数据的开始。 数据位:可以是5~8位逻辑”0”或”1”。一般7
[单片机]
s3c2440裸机-<font color='red'>UART</font>编程(一、<font color='red'>UART</font>硬件介绍及传输原理)
一篇文章读懂Armv8 AArch64
Armv8是Armv7之后的一个重要架构更新。其中一个主要的变化是引入了64的架构,即AArch64。AArch64状态只有在Armv8架构中才有。而且在AArch64状态下执行的代码只能使用A64指令集。当然ARM为了维持整个生态参与者的利益,Armv8还是保持与现有32位体系结构兼容性的AArch32,即Armv8之前的Armv7配置文件定义的那套设计规范。AArch32今天不会进行具体介绍,今天的重点是AArch64,但是不管怎么变最本质的规则是不会变的,ARM对所有硬件资源的操作,都抽象成对寄存器的操作,寄存器隐藏了硬件的具体操作细节提供配置的接口,硬件处理器拿着这些配置负责具体的执行。下面具体看一下在AArch64状态的
[单片机]
关于调试SPI、I2C、UART的记录
最近用到的MCU型号为ASM9260,在写相关驱动时遇到了一些麻烦,以下做记录以便谨记。 1.SPI上,使用DMA进行读写FLASH数据。出现的现象为:擦除FLASH之后,读出的值为0xFF,写入一些数据后,读出的值与写入的值不一致,读写值的规律例如每一次写入的是0x3C,读出的都是0x08,每一次写入的是0x2B,读出的是0xE0,就是说每一个字节的写入它都会有与之对应的另一个字节读出,只是不相等而已。由于读写擦除的过程中程序并没有提示任何错误故可判断程序中SPI初始化以及相关DMA的初始化都没有问题,这一点也在大神同事的检查代码之后得以验证。后来观察板子之后可以看到MCU与FLASH的距离大概有四五十厘米的距离,这个长度确
[单片机]
ARM 内核SP,LR,PC寄存器
深入理解ARM的这三个寄存器,对编程以及操作系统的移植都有很大的裨益。 1、堆栈指针r13(SP):每一种异常模式都有其自己独立的r13,它通常指向异常模式所专用的堆栈,也就是说五种异常模式、非异常模式(用户模式和系统模式),都有各自独立的堆栈,用不同的堆栈指针来索引。这样当ARM进入异常模式的时候,程序就可以把一般通用寄存器压入堆栈,返回时再出栈,保证了各种模式下程序的状态的完整性。 2、连接寄存器r14(LR):每种模式下r14都有自身版组,它有两个特殊功能。 (1)保存子程序返回地址。使用BL或BLX时,跳转指令自动把返回地址放入r14中;子程序通过把r14复制到PC来实现返回,通常用下列指令之一:
[单片机]
cortex m0 lpc1114 串口uart查询收发数据
LPC1114有一个串口,具备标准9针串口的所有功能引脚: RXD、TXD、RTS、CTS、DTR、DSR、DCD、IR 一般情况下,我们只用到RXD和TXD。在这一章,只对RXD和TXD的使用做介绍。 可以用于程序下载。 可以设置奇校验、偶校验、无校验。 可以设置数据位为5~8,可以设置停止位为1、1.5、2。 具有自动波特率检测功能。 查询方式串口收发数据 新建一个工程,结构如下图所示: 在uart.h文件中,输入以下代码: #ifndef __NXPLPC11XX_UART_H__ #define __NXPLPC11XX_UART_H__ extern uint8_t Recived_data; exte
[单片机]
cortex m0 lpc1114 串口<font color='red'>uart</font>查询收发数据
STM32F4 UART DMA初始化
F4的片子内部DMA初始化和F103的有很大区别,在这里引入了数据流(Stream),2个DMA共16的数据流(每个控制器8个),每个数据流则可已处理多达8个通道的数据,每个通道都有一个仲裁器处理DMA请求的优先级。下面贴出DMA请求映射事例 在DMA2中可以看出UART1的发送是数据流7的第4通道,接收是数据流5的第4通道。所以在配置DMA时要注意选择对应的数据流然后配置对应的通道,最后初始化对应数据流和对应的通道。 下面贴出代码 //****************************配置UART1 DMA发送 DMA_DeInit(DMA2_Stream7); while (DMA_GetCmd
[单片机]
STM32F4 <font color='red'>UART</font> DMA<font color='red'>初始化</font>
一种8路串口转换PCI总线的设计方案
1 引言 随着Internet的发展,越来越多的计算机或设备通过串口通信方式接入网络,实现信息共享和设备的集中控制和管理。多端口扩展已成为通信设备接入的重要环节。利用串口进行通信具有结构简单,线路成本低的优点,广泛应用于各个领域。而PCI总线,即外围器件互连总线,是目前应用最广泛、最流行的一种高速同步总线。由于大部分I/O设备是没有PCI总线功能的,开发多端口通用串口和PCI总线的接口卡也就成为技术发展的必然要求。本系统采用专用芯片 XR17D158 开发了基于PCI总线的8路 RS-232 高速串行通讯卡,为通信设备提供额外的高性能串行接口,适用于连接各类串行设备。 2系统硬件设计 系统硬件主要包括主芯片 X
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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