大家好, 我们昨天为大家分享了如何实现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章中介绍的接收过程的程序类似。
分享到:
相关推荐
以下以simpleWiFi的S2W-M02以及S2W-M03中所实现的多跳机制进行描述。S2WM02、S2WM03已经稳定的运用到了很多超长距离通讯环境,该算法稳定性以及大量现场验证。并且该系列串口转WiFi模块可以实现2串口、双串口、3串口...
以下以simpleWiFi的S2W-M02以及S2W-M03中所实现的多跳机制进行描述。S2WM02、S2WM03已经稳定的运用到了很多超长距离通讯环境,该算法稳定性以及大量现场验证。并且该系列串口转WiFi模块可以实现2串口、双串口、3串口...
该电路使用了STC15W408AS-TSSOP20微控制器的内置UART模块来实现串行通信。 在该电路板上,还包含了多个LED指示灯、按钮和跳线等组件,用来指示电路的运行状态和实现用户交互。 BLDC-20脚MCU实验电路1是一个功能...
该演示板提供5 V输出,支持3 A电流,并且可兼容其他输出电压(高达18 V),您只需选择适当的外部降压芯片,便可支持双电池单元或3电池单元器件。 15 W无线充电接收器实物截图: 设计原理框图: 特性: -BUCK架构提供了...
系统的电源设计中原本只需采用电池供电即可,但考虑到大棚内光照强度不足时作物生长可能会受到影响,故本系统加装了40 W,19.0 V 的SUNPOWER太阳能电池板进行光伏发电,存储能量,在光照不足时为大棚内作物提供足够...
该监控分析I2C总线,实现USB转I2C/IIC,SPI,GPIO,ADC,PWM,UART,CAN等功能,支持Windows,Linux,Android系统。 I2C总线监控利器电路板实物截图: 具体特性如下: 支持I2C主机模式,可以对I2C总线设备进行读写访问,最大...
中央处理器CPU是单片微型计算机的指挥、执行中心,由它读人用户程序,并逐条执行指令,它是由8位算术/逻辑运算部件(简称ALu)、定时/控制部件,若干寄存器A、B、B5w、5P以及16位程序计数器(Pc)和数据指针...
Scenix 单片机除传统的I/O 功能模块如并行I/O、UART 、 SPI、I2C、A/D 、PWM 、PLL 、DTMF 等,增加了新的I/O 模块(如USB、CAN 、J1850、虚拟 I/O 等)。其特点是双时钟设置,指令运行速度较快,具有虚拟外设功能,...
SimpleLink MCU 是 Ethernetare 高性能 Arm:registered:Cortex:registered:-M MCU,集成了以太网 MAC 和 PHY,以及各种有线通信接口,包括通用线路(USB),控制网络(CAN),Quad-SPI(QSSI),I²C,SPI,UART 和...
中央处理器CPU是单片微型计算机的指挥、执行中心,由它读人用 户程序,并逐条执行指令,它是由8位算术/逻辑运算部件(简称ALu)、 定时/控制部件,若干寄存器A、B、B5w、5P以及16位程序计数器(Pc) 和数据指针寄存器...
预升压:宽范围 8V 至 36V、15W 系统输入,具有自适应电感器电流限制 降压:快速电感器电流斜坡 隔离式触发器和 UART 接口: 隔离式 5V、50mA 输出 灌电流 NPN– 和 TTL 触发器 IN 和 OUT 全面的系统监控和保护: 板载...
可以快速、安全、可靠地实现系统方案中的数据、语音传输、短消息服务(Short Message Service)和传真。TC35模块的工作电压为3.3—5.5V,可以工作在900MHz和1800MHz两个频段,所在频段功耗分别为2w(900M)和1w(1800M)。 ...
Protel DXP 是第一套完整的板卡级设计系统,真正实现在单个应用程序中的 集成。设计从一开始的目的就是为了支持整个设计过程,Protel DXP 让你可以 选择最适当的设计途径来按你想要的方式工作。Protel DXP PCB 线路...
nand_init()函数在两个文件中实现。其调用与 CFG_NAND_LEGACY 宏有 关,如果没有定义这个宏,系统调用 drivers/nand/nand.c 中的 nand_init();否则调用自己在 本文件中的 nand_init()函数,本例使用后者。fs2410.c...
20KM透传数传模块,SX1278大功率,Sky65377 30dBm 1W远距模块开源了,软件、硬件都有,这个以前是准备做商业项目,各种原因不做了,干脆拿来开源造福有需求的朋友, PA模块特点:实测20KM PER=0,(gb_BW=6;//62.5KHz, ...