如何实现W7100A中的UART(二)

发布者:春水碧于天最新更新时间:2018-04-28 来源: eefocus关键字:W7100A  UART 手机看文章 扫描二维码
随时随地手机看文章

大家好, 我们昨天为大家分享了如何实现W7100A中的UART。今天继续为大家分享第二部分,明天将会继续为大家分享最后一部分。

如何实现W7100A中的UART第一部分请参考:http://blog.csdn.net/wiznet2012/article/details/7593285

 

4.  2, 9位UART,固定波特率


void Init_iMCU(void)

{

SCON = 0x90;       // 串行模式2, SM00 = 1, SM01 = 0, REN=1

PCON &= 0x7F;         // fosc/64(SMOD = 0), fosc/32(SMOD = 1)

}

void PutByte(unsigned char byData)

{

       SBUF = byData;    // 向串行缓存器中写入数据

       while(!TI);        // 等待所有的数据记录完成

       TI = 0;            // 清除传输中断

}

 

unsigned char GetByte(void)   

{

       unsigned char byData;     // 等待数据接收

       while(!RI);

       RI = 0;                 //清除RI

       byData = SBUF;                 //读取数据

       return byData;

}

 

void main()

{

      Init_iMCU();                     //调用Init_iMCU函数

      while(1)  PutByte(GetByte());    //回送(Echo-back)接收到的数据

}


波特率的UART模式2是固定内部时钟的fosc/32或fosc/64。具体选择fosc/32还是fosc/64要根据SMOD0的位来确定。考虑到W7100A的内部时钟,产生的高速波特率时钟的范围为2.7 ~ 1.4MHz。如同模式0的情况,一般不使用模式3,因为波特率是固定的且时钟频率过快。

 

在这些示例程序中,将SCON寄存器设定为0x90。为了设置波特率,还要设置SMOD0,

PCON寄存器的最高位(波特率 = fosc/32)。其它实现输出信息的代码也和第2章中介绍的接收过程的程序类似。

 

5.  3, 9位UART,可变波特率

 

5.1 定时器1(timer 1)时钟源


void Init_iMCU(void)

{

SCON = 0xD0;             // 串行模式3, SM00 = 1, SM01 =1, REN=1

TMOD |= 0x20;         // 定时器1(Timer1)模式2

PCON |= 0x80;         // SMOD0 = 1

TL1 = 0xFC;           // 波特率115200bps

TH1 = 0xFC;           //请参考W7100A数据手册

TR1 = 1;               // 启动定时器1(Timer1)

}

void PutByte(unsigned char byData)

{

       SBUF = byData;    // 向串行缓存器中写入数据

       while(!TI);        // 等待数据记录完成

       TI = 0;            // 清除传输中断

}

 

unsigned char GetByte(void)   

{

       unsigned char byData;     //等待数据接收

       while(!RI);

       RI = 0;                 //清除RI

       byData = SBUF;         // 读取数据

       return byData;

}

 

void main()

{

      Init_iMCU();                     //调用Init_iMCU函数

      while(1)  PutByte(GetByte());    //回送(Echo-back)接收到的数据

}


UART在模式3下,可以交换使用定时器1(Timer1)和定时器2(Timer2)来设定波特率的值。在这一章节,我们使用定时器1(Timer1)来设置波特率的值,信息请参考W7100A数据手册。与模式1不同的是,停止位之前多了1位。这一增加位可以用作奇偶校验或者多重处理器通信,详情请参考W7100A数据手册。

 

在示例程序中,将SCON寄存器设置为0xD0,定时器1(Timer1)工作在模式2下。为了能设置波特率,需要设置PCON寄存器的SMOD位,同时TH1寄存器的值设为0xFC。这样设置完成后,波特率的值为115200bps。其它实现输出信息的代码也和第2章中介绍的接收过程的程序类似。

 

5.2 定时器2(timer 2)时钟源


void Init_iMCU(void)

{

SCON = 0xD0;           //串行模式3, SM00 = 1, SM01 =1, REN=1

T2CON = 0x30;         //定时器2(Timer2)波特率发生器模式

TH2 = 0xFF;            //波特率设定为115200bps

TL2 = 0xE8;            // 请参考W7100A数据手册

        RLDH = 0xFF;          // 波特率重载值设为115200bps

RLDL = 0xE8;           // 波特率重载值设为115200bps

TR2 = 1;               // 启动定时器2(Timer2)

}

 

void PutByte(unsigned char byData)

{

       SBUF = byData;    // 向串行缓存器中写入数据

       while(!TI);        // 等待数据记录完成

       TI = 0;            // 清除传输中断

}

 

unsigned char GetByte(void)   

{

       unsigned char byData;     //等待数据接收

       while(!RI);

       RI = 0;                     //清除RI

       byData = SBUF;          //读取数据

       return byData;

}

 

void main()

{

        Init_iMCU();                     //调用Init_iMCU函数

        while(1)  PutByte(GetByte());    //回送(Echo-back)接收到的数据

}


 

UART在模式3可以交换使用定时器1(Timer1)和定时器2(Timer2)来设置波特率。在这一章节,利用定时器2(Timer2)来设置波特率。更多的详细信息请参考W7100A数据手册。与模式1不同的是,在停止位之前多了1位,此位可以用于奇偶校验或者多重处理器通信。具体的细节可以参考W7100A数据手册。

在上面的程序中,将SCON寄存器设为0xD0,定时器2(Timer2)设定为波特率发生器模式。为了能够设定波特率,还需要将TH2和TL2的值分别设为0xFF和0xE8。都设置完成后,波特率的值就变成115200bps。重载值RLDH和RLDL也必须相应的设置为0xFF和0xE8。其它实现输出信息的代码也和第2章中介绍的接收过程的程序类似。


关键字:W7100A  UART 引用地址:如何实现W7100A中的UART(二)

上一篇:如何实现W7100A中的UART(三)
下一篇:如何实现W7100A中的UART

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

ARM·UART
【本章内容】 【代码详解】 【UART初始化】 1)选定uart输出的管脚 2)ULCON (红外传输,奇偶校验,数据位,停止位) 3)UCON(不知道他怎么设置的,先照抄吧,完全没看懂) 4)UFCON(不使用UART FIFO) #include s3c24xx.h #include serial.h #define TXD0READY (1 2) #define RXD0READY (1) #define PCLK 50000000 // init.c中的clock_init函数设置PCLK为50MHz #define UART_CLK PCLK
[单片机]
【AT91SAM3S】串口UART初始化及收发数据
SAM3S中的UART串口是一个两线异步收发器。这个串口能用来通信或者跟踪。有两个DMA通道与UART串口关联,可通过使用DMA处理串口传输以节省CPU时间。 SAM3S4C中有两个UART。与外设引脚的对应关系如下: 板子上使用的是UART0,及PA9和PA10引脚。 SAM3S的UART结构框图 串口初始化,收发数据 的步骤如下: 1、配置相应IO口的引脚(设置IO时钟及引脚工作模式) 2、打开UART时钟 3、复位并停止UART 4、设置UART功能(奇偶校验UART_MR、波特率UART_BRGR、DMA UART_PTCR、收发使能UART_CR 等) 5、收发数据 UART_THR UART_RHR 串
[单片机]
【AT91SAM3S】串口<font color='red'>UART</font>初始化及收发数据
UART协议介绍及编程
原理说明: 通用异步收发器简称为UART,即“Universal Asynchronous Receiver/Transmitter”,它用来传输串行数据;发送数据时,CPU将并行数据写入UART,UART按照一定的格式在一根电线上串行发出。接收数据时,UART检测另一根电线上的信号,将串行收集的数据放在缓冲区中,CPU即可读取UART获得的数据。UART以全双工的方式传输数据,最精简的连线方式只有3根电线,TxD用于发送数据,RxD用于接收数据。Gnd用于给双方提供参考电平。连线如下图所示。 UART使用标准的TTL/CMOS逻辑电平来表示数据,高电平表示1,低电平表示0。为了增强数据的抗干扰能力、提供传输长度,通常将T
[单片机]
<font color='red'>UART</font>协议介绍及编程
stm32F4XX之UART&DMA HAL库
1:串口相关的初始化操作 我们都知道stm32相关外设的初始化都需要打开相应的时钟,配置相应的IO,除此之外我们还需要对串口库中的相关成员变量赋值,这里我们就直接看一下这些结构体成员有哪些。 HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart);这个函数就是对串口的初始化操作,形参是一个结构体指针,该结构体主要包含哪些部分,下面会做相应的介绍 typedef struct { USART_TypeDef *Instance; UART_InitTypeDef Init; uint8_t *pTxBuffPtr; uint16_t TxXferSize;
[单片机]
单片机UART升级固件流程
单片机是嵌入式系统中最基础和常用的芯片种类之一。随着技术的不断发展,单片机的功能和性能得到了越来越大的提升,同时固件的规模和复杂度也在不断增加。为了保障单片机的正常运行,需要对其进行固件升级。本文将介绍单片机UART升级固件的基本流程。 1. 确定升级方式 单片机的固件升级方式通常有多种,包括串口、USB、SD卡等。其中,串口升级是最为常用的一种方式,可以通过引脚上的TX和RX两个信号线实现数据传输,具有简单、方便、快捷等优点。 2. 准备工作 在进行单片机UART升级之前,需要进行一些准备工作。首先,需要准备好电脑、单片机芯片以及相关的软硬件工具。其次,需要查看单片机芯片的数据手册,确定需要升级的固件版本和升级方
[单片机]
S3C44B0的UART波特率计算公式---分频设置
S3C44B0的UART波特率计算公式 MCLK即主频 此处为60MHz UBRDIVn(又称divisor) = ( (int)(MCLK / (bps * 16) + 0.5) 1 ) MCLK = Fout = Fpllo Bps = 1200,9600,19200,38400,57600,115200 例如 主频=60MHz=60000000Hz 串口速度选115200 divisor=取整 -1 = 32
[单片机]
S3C2440之UART操作(FIFO中断模式)
关于串口的知识 3个独立的串口,每一个都可以利用DMA 和中断方式操作。每个包含2个64字节FIFO,一个接,一个发。 非FIFO模式相当于FIFO模式的一个寄存器缓冲模式。 每一个UART有7种状态,overrun错误,校验错误,帧错误,断点,接收缓冲区准备好,发送缓冲区为空,发送移位寄存器为空。 当接收移位寄存器中的数据传给FIFO的时候,且接收的数据触发了Rx FIFO的阀值,Rx中断产生了。 发送器中FIFO的还未发得数据到达Tx FIFO阀值的时候,Tx中断产生了。(我觉得应该理解为:发送器中FIFO发送结束,即为空的时候产生中断。) 功能:在串口上输入16字节,包括回车,然后会把输入的字符回
[单片机]
ARM串口(UART)的使用 (S3C2440)
UART概述 通用异步收发器简称UART(Universal Asynchronous Receiver and Transmitter) 工作方式为:串行、全双工。 只需3根线:TXD(发送数据)、RXD(接收数据)、GND。 数据传输流程: 原来是高电平(空闲状态) 发送方拉低电平,保持1bit时间,为起始位。 接收方检测到起始位,然后通信双方按照波特率发送和接收5-8位数据。 若使用校验功能,则发送完数据位后还要接着发送奇偶校验位。 最后,发送停止位。 S3C2440的UART的特性 3个独立异步串行I/O端口,每个都可以是基于中断或基 于 DMA 模式的操作。 UART 通过使用系统时钟可以支持最高 115.2
[单片机]
ARM串口(<font color='red'>UART</font>)的使用 (S3C2440)
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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