微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > 射频无线通信设计 > 开源可编程手环学习第五步--串口教程

开源可编程手环学习第五步--串口教程

时间:10-02 整理:3721RD 点击:

第一节       串口硬件电路


       串口通过USB口及手环下载调试线引出,连接MCU的P02与P04引脚,如下图所示:

开发板系列教程:http://pan.baidu.com/s/1bnBJsMr
手环DIY开源学习教程:http://pan.baidu.com/s/1eQlUGiI

阅读软件:http://pan.baidu.com/s/1o6ELGCE

淘宝小店:shop115904315.taobao.com



第二节 UART寄存器



2.1 UART介绍

       这个UART符合工业标准16550,并且可以和外围设备串行通信。主设备(CPU)通过APB总线将数据写进UART并且被转换成串行格式并且发送到目标设备。串行数据也可以通过UART被接收存储之后,主设备读取接收的数据。

UART模块不支持DMA,但是它有内部FIFOs,并且支持硬件流控制信号(RTS,CTS,DTR,DSR)。

UART模块有16字节的发送和接收FIFO;支持硬件流控制(CTS/RTS);影子寄存器来减少软件开销并且有可编程的软件复位;发送寄存器为空的中断模式;IrDA 1.0 SIR模式支持低功耗模式;可编程的字节属性、校验位和停止位(1,1.5,2);可以断开通信及检测通信线是否断开;中断优先级的识别;可编程的串行通信波特率。

2.2 UART寄存器

      UART相关的寄存器比较多,所以我们只介绍常用的寄存器,其它的可以参考官方数据手册DA14580_DS_v3.1.pdf,位于目录:..\WT开发板\硬件资料。

开发板系列教程:http://pan.baidu.com/s/1bnBJsMr
手环DIY开源学习教程:http://pan.baidu.com/s/1eQlUGiI

2.2.1 接收缓冲寄存器

15:8位:保留不使用;      7:0位:接收缓存寄存器。


2.2.2 中断使能寄存器


15:8位:保留不使用;        7位:发送空中断使能位;

6:4位:保留不使用;         3位:调制状态中断使能位;

2位:接收状态中断使能位;  1位:发送结束中断使能位;

0位:数据接收完使能位。


2.2.3 中断识别寄存器/FIFO控制寄存器

    15:0位:写则为FIFO控制寄存器,读则为中断识别寄存器。

2.2.4 通信线控制寄存器

15:8位:保留不使用;     7位:波特率使能位;

6位:停止控制位;        5位:保留不使用;

4位:奇偶校验选择位;    3位:校验位;

2位:停止位;           1:0位:数据长度。

2.2.5 调制器控制寄存器


15:7位:保留不使用;      6位:红外通信使能位;

5位:自动流控制使能位;      4位:回路位,用于测试;

3位:用户指定输出2;         2位:用户指定输出1;

1位:发送请求;              0位:保留不使用。

2.2.6 通信线状态寄存器


15:8位:保留不使用;     7位:接收FIFO错误位;

6位:发送器空位;        5位:发送保持寄存器空位;

4位:异常停止中断位;    3位:帧错误位;

2位:校验错误位;        1位:溢出错误位;

0位:数据准备好位。


2.3 寄存器配置讲解

#define CLK_PER_REG             (* ( volatile uint16*)0x50000004)

#define UART_RBR_THR_DLL_REG        (* ( volatile uint16*)0x50001000)

#define UART_IER_DLH_REG            (* ( volatile uint16*)0x50001004)

#define UART_IIR_FCR_REG             (* ( volatile uint16*)0x50001008)

#define UART_LCR_REG                (* ( volatileuint16*)0x5000100C)

#define UART_MCR_REG               (* ( volatileuint16*)0x50001010)

#define UART_LSR_REG                (* ( volatileuint16*)0x50001014)

#define UART_MSR_REG               (* ( volatileuint16*)0x50001018)

#define UART_SCR_REG                (* ( volatileuint16*)0x5000101C)

启动UART1模块的时钟CLK_PER_REG |= 0x0080;

串口初始化寄存器配置:

首先使能波特率配置UART_LCR_REG = 0X08;

配置波特率UART_IER_DLH_REG = 0;UART_RBR_THR_DLL_REG = 9;

8位数据,无校验,1位停止位UART_LCR_REG = 0X03;

关闭红外通信功能UART_MCR_REG = 0X00;

使能FIFO, UART_IIR_FCR_REG = 0X01;

关闭中断UART_IER_DLH_REG = 0X00;

接收一个字节,等待接收完成while((UART_LSR_REG&0x01)==0);读取接收数据rx_data = UART_RBR_THR_DLL_REG;

发送一个字节0x55,等待发送为空while((UART_LSR_REG&0x20)==0);填充发送数据UART_RBR_THR_DLL_REG = 0xaa;

第三节 UART实验


        实验需要使用的模块有:手环,Jlink调试工具,USB转串模块,一根手环下载调试线。

        将JLINK通过下载调试线连接到手环的USB调试接口,JLINK插在有拨码开关的一端,注意丝印标注一一对应, 将JLINK插上电脑的USB口。将USB转串模块插在手环现在调试线的另一端,注意丝印标注一一对应,然后将USB转串模块插在电脑的USB接口。如下图所示:

        打开uart实验的Keil工程Simple_UART.uvproj,位于目录:..\ 4_实战教程\1_裸机篇\4_串口实验\串口实验,如下图所示:

       打开串口调试助手连接串口,波特率为115200。在KEIL中,编译代码,点击DEBUG,然后点击全速运行,就可以看到串口调试助手打印出的信息,发送1则LED1亮并返回LED1的状态,发送2则LED1灭并返回LED1的状态,如下图所示:



开发板系列教程:http://pan.baidu.com/s/1bnBJsMr
手环DIY开源学习教程:http://pan.baidu.com/s/1eQlUGiI

阅读软件:http://pan.baidu.com/s/1o6ELGCE

淘宝小店:shop115904315.taobao.com



学习学习                     

开发板系列教程:http://pan.baidu.com/s/1bnBJsMr
手环DIY开源学习教程:http://pan.baidu.com/s/1eQlUGiI
淘宝小店:shop115904315.taobao.com

哇,正想学习这一块

开发板系列教程:http://pan.baidu.com/s/1bnBJsMr
手环DIY开源学习教程:http://pan.baidu.com/s/1eQlUGiI
淘宝小店:shop115904315.taobao.com

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top