APP下载

详解lAP15W4K58S4单片机的串行口通信

2016-08-31胡燕清河源职业技术学院电子与信息工程学院517000

电子测试 2016年15期
关键词:波特率缓冲器初值

胡燕清(河源职业技术学院电子与信息工程学院,517000)



详解lAP15W4K58S4单片机的串行口通信

胡燕清
(河源职业技术学院电子与信息工程学院,517000)

IAP15W4K58S4单片机是STC公司的全新一代高性价比、高性能单片机。串行通信是一种重要且广泛应用的数据传输方式。本文详细讲解了IAP15W4K58S4单片机串口的结构、工作方式与波特率设置,并为串口的应用列举了典型通用的串口初始化程序。

IAP15W4K58S4;串口;工作方式;波特率

0 引言

IAP15W4K58S4单片机是STC公司推出的全新一代在应用可编程、单时钟/机器周期的8051内核单片机,它具有高速、高可靠、宽电压、低功耗、超强抗干扰的优点特性,目前在教育与研发设计领域越来越受到众多高校、科研院所与企业的青睐。本文详细讲解了IAP15W4K58S4单片机串口的结构、工作方式与波特率设置,并为串口的应用列举了典型通用的串口初始化程序。

1 串口的结构

IAP15W4K58S4单片机具有4个高速异步串行端口,分别是串口1、串口2、串口3和串口4,每个串口由1个波特率发生器、1个串口控制寄存器、1个移位寄存器和2个数据缓冲器构成。每个串口的数据缓冲器由2个物理上独立的接收和发送缓冲器构成,可同时接收和发送数据,两个缓冲器共用一个地址。串口1的两个缓冲器为SBUF;串口2的两个缓冲器为S2BUF;串口3的两个缓冲器为S3BUF;串口4的两个缓冲器为S4BUF。4个串口的内部结构类似,图1为串口1的内部结构。串口发送时,将数据写入SBUF即启动发送,发送完毕时相应的中断标志位TI置1;串口接收时,当中断标志位RI=1时表示接收完毕,此时读SBUF即可接收数据。每发送/接收完毕,都必须对TI/RI软件清零。

图1 串口1的内部结构

2 串口的工作方式及波特率设置

IAP15W4K58S4单片机的串口1有四种工作方式,其中两种方式的波特率可变,另外两种方式的波特率固定。串口1的工作方式由串口1控制寄存器SCON的SM0、SM1两位设置,串口1的工作方式及波特率设置如表1所示。

10位UART,即一帧信息为10位:1位起始位‘0',8位数据位和1位停止位‘1'。11位UART,即一帧信息为11位:1位起始位‘0',8位数据位,1位可编程位(第9位,存放数据/地址标志位或奇/偶校验位),和1位停止位‘1'。

串口2和串口3、串口4都只有两种工作方式,这两种方式的波特率都是可变。以串口2为例,串口2的工作方式由串口2控制寄存器S2CON的S2SM0设置,串口2的工作方式及波特率设置如表2所示。

注意:对于IAP15W4K58S4单片机,串口1默认选择T2作波特率发生器,也可选择T1作波特率发生器;串口2固定T2作波特率发生器;串口3默认选择T2作波特率发生器,也可选择T3作波特率发生器;串口4默认选择T2作波特率发生器,也可选择T4作波特率发生器。当串口1、串口3、串口4和串口2的波特率相同时,串口1、串口3、串口4和串口2可以共享T2作波特率发生器。

表1 串口1的工作方式及波特率设置

表2 串口2的工作方式及波特率设置

3 串口的初始化程序

串口1的四种工作方式包含了串口2、串口3、串口4的两种工作方式,以下串口初始化程序以串口1的工作方式1(10位UART)为例,其他工作方式可在此基础上方便修改。

(1)采用T1作波特率发生器,且T1工作于方式0(16位初值自动重载模式)

#include "stc15.h"

#define FOSC 11059200L

#define BAUD 9600

void uart1_ini()

{ SCON = 0x50; //串口1方式1,允许

接收

AUXR &= 0xfe; //S1ST2=0:选择T1

为串口1的波特率发生器

AUXR |= (1<<6); //T1x12=1:T1速度

是传统8051速度的12倍,不分频即1T模式

//AUXR &= ~(1<<6); //T1x12=0:T1速度

是传统8051速度,12分频即12T模式

TMOD = (TMOD & 0x0f) | 0x00; //定时器T1为方式

0(16位初值自动重载模式)

TL1 = 65536-FOSC/4/BAUD; //装载波特率BAUD

对应计数初值(T1x12=1即1T模式)

TH1 = (65536-FOSC/4/BAUD)>>8;

//TL1 = 65536-FOSC/12/4/BAUD; //装载波特率BAUD

对应计数初值(T1x12=0即12T模式)

//TH1 = (65536-FOSC/12/4/BAUD)>>8;

TR1 = 1; //启动T1

P_SW1 = 0x00; //串口1引脚切换

至[RxD/P3.0, TxD/P3.1],复位默认值

ES = 1; //串口1中断使能

EA = 1; //总中断使能

(2)采用T1作波特率发生器,且T1工作于方式2(8位初值自动重载模式)

void uart1_ini()

{ SCON = 0x50; //串口方式1,允许接

AUXR &= 0xfe; //S1ST2=0:选择T1

为串口1的波特率发生器

AUXR |= (1<<6); //T1x12=1:T1速度

是传统8051速度的12倍,不分频即1T模式

//AUXR &= ~(1<<6); //T1x12=0:T1速度

是传统8051速度,12分频即12T模式

TMOD = (TMOD & 0x0f) | 0x20; //定时器T1为方式

2(8位初值自动重载模式)

PCON = 0x00; //SMOD=0波特率不加

TL1 = 256-FOSC/32/BAUD; //装载波特率BAUD

对应计数初值(T1x12=1即1T模式)

TH1 = 256-FOSC/32/BAUD;

//TL1 = 256-FOSC/12/32/BAUD; //装载波特率BAUD

对应计数初值(T1x12=0即12T模式)

//TH1 = 256-FOSC/12/32/BAUD;

TR1 = 1; //启动T1

P_SW1 = 0x00; //串口1引脚切换至

[RxD/P3.0, TxD/P3.1],复位默认值

ES = 1; //串口1中断使能

EA = 1; //总中断使能

(3)采用T2作波特率发生器(T2工作方式固定为:16位初值自动重载模式)

void uart1_ini()

{ SCON = 0x50; //串口1方式1,允许

接收

AUXR |= 0x01; //S1ST2=1:选择T2

为串口1的波特率发生器

AUXR |= (1<<2); //T2x12=1:T2速度

是传统8051速度的12倍,不分频即1T模式

//AUXR &= ~(1<<2); //T2x12=0:T2速度

是传统8051速度,12分频即12T模式

AUXR &= ~(1<<3); //T2_C/T=0:T2作为

定时器

T2L = 65536-FOSC/4/BAUD; //装载波特率BAUD对

应计数初值(T2x12=1即1T模式)

T2H = (65536-FOSC/4/BAUD)>>8;

//T2L = 65536-FOSC/12/4/BAUD; //装载波特率BAUD

对应计数初值(T2x12=0即12T模式)

//T2H = (65536-FOSC/12/4/BAUD)>>8;

AUXR |= (1<<4); //T2R=1,启动T2

P_SW1 = 0x00; //串口1引脚切换至

[RxD/P3.0, TxD/P3.1],复位默认值

ES = 1; //串口1中断使能

EA = 1; //总中断使能}

4 结论

IAP15W4K58S4单片机是STC公司的全新一代高性价比单片机。串行通信是一种重要且广泛应用的数据传输方式。本文详细讲解了IAP15W4K58S4单片机串口的结构、工作方式与波特率设置,并为串口的应用列举了典型通用的串口初始化程序。

[1] STC公司.STC15系列单片机器件手册.www.stcmcu.com,2015.

[2] 徐爱钧.STC15单片机C语言编程与应用[M].电子工业出版社,2016.

Explication for the serial port communication of IAP15W4K58S4 MCU

Hu Yanqing
(College of Electronic and Information Engineering, Heyuan Polytechnic,517000)

IAP15W4K58S4 is a new generation MCU of high cost performance from STC company.Serial communication is an important and widely used method of data transmission.This paper explicated in detail the structure,working mode and baud rate settings of serial port of IAP15W4K58S4,and listed the typical and universal serial port initialization program for the application of serial port.

IAP15W4K58S4;serial port;working mode;baud rate

胡燕清(1981-),男,硕士研究生,研究方向为单片机与嵌入式技术、传感器技术与信号处理。

猜你喜欢

波特率缓冲器初值
UART 波特率检测电路的FPGA 设计算法与实现
更正
具非定常数初值的全变差方程解的渐近性
带有随机初值的复值Ginzburg-Landau方程的弱平均动力学
重载货车用缓冲器选型的研究及分析
一种适用于平动点周期轨道初值计算的简化路径搜索修正法
退化抛物型方程的一个初值反演问题
CAN 总线波特率自适应程序设计
可以同时应用于不同终端设备的波特率发生器
电梯对重缓冲器永久性标识确定方法探讨