博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
zigbee学习之串口通信
阅读量:5842 次
发布时间:2019-06-18

本文共 2929 字,大约阅读时间需要 9 分钟。

纠错:U0DBUF发送缓冲区,但是我在中文手册手册上没有找的到这个寄存器,手册上只有U0BUF,U0BUF编译会出错,
我去查了下英文手册,才发现原来是翻译人员翻译错误了,只有U0DBUF,建议看英文手册。
串口通信:
P_2 接收端 P_3发送端(单片机和电脑的电频不同,通过PL2303转换,这是针对zigbee模块的
,想51单片机可以通过232,485来转换)。
TTL 输出:低电平小于0.8,高电平大于2.4 。TTL 输入:低电平小于1.2,高电平大于2
P_2和P_3可以复用到串口,也可以复用到SPI
#include <string.h>
void *memcpy(void *, const void *, size_t);//复制函数
void *memset(void *, int, size_t);//设置函数,注意是传递的指针,这些很基础,是C语言库里面的函数接口,自己下个C语言完全手册看 
int memcmp(const void *, const void *, size_t);
CLKCONCMD &= ~0x40;               //设置系统时钟源为32MHZ晶振
while(CLKCONSTA & 0x40);          //等待晶振稳定为32M
CLKCONCMD &= ~0x47;               //设置系统主时钟频率为32MHZ 
void UartSendString(char *Data, int len)//串口发送函数Data:发送缓冲区   len:发送长度
{
    uint i;
    
    for(i=0; i<len; i++)
    {
        U0DBUF = *Data++;//我猜测U0DBUF发送缓冲区,但是我在手册上没有找的到这个寄存器,手册上只有U0BUF
        while(UTX0IF == 0);
        UTX0IF = 0;//发送完后UTX0IF自动设置成1
    }
}
void InitUart(void)
    PERCFG = 0x00;           //外设控制寄存器 USART 0的IO位置:0为P0口位置1 
    P0SEL = 0x0c;            //P0_2,P0_3用作串口(外设功能)
    P2DIR &= ~0XC0;          //P0优先作为UART0
    
    U0CSR |= 0x80;           //设置为UART方式
    U0GCR |= 11; //1011 有       
    U0BAUD |= 216;           //波特率设为115200
    UTX0IF = 0;              //UART0 TX中断标志初始置位0
U0CSR |= 0x40;           //允许接收 
    IEN0 |= 0x84;            //开总中断允许接收中断 
}
#pragma vector = URX0_VECTOR 
__interrupt void UART0_ISR(void) 
    URX0IF = 0;       // 接受中断标志 清中断标志 
    RxBuf = U0DBUF;    //我猜测应该还有个发送中断,发送完了应该也可以中断                       
}
 U0CSR &= ~0x40;                    //禁止接收 发送的时候必须把这个禁止了
 U0CSR |= 0x40;                     //允许接收 
 
用到的寄存器如下:
U0CSR 寄存器
Bit[7] USART模式选择 0:SPI模式 1:UART模式 
Bit[6]  UART接收器使能 0: 禁用接收器 1: 接收器使能 
Bit[5] SP 主或者从模式选择 0: SPI 主模式 1: SPI 从模式 
Bit[4] UART 帧错误状态 0: 无帧错误检测 1: 字节收到不正确停止位级别 
Bit[3] UART 奇偶错误状态 0: 无奇偶错误检测 1: 字节收到奇偶错误 
Bit[2]  接收字节状态 0: 没有收到字节 1: 准备好接收字节 
Bit[1] 传送字节状态 0 字节没有被传送 1 写到数据缓存寄存器的最后字节被传送 
Bit[0] USART 传送/接收主动状态、在 SPI 从模式该位等于从模式选择 0: USART 空闲 1: 在传送或者接收模式USART 忙碌 
P2DIR (0xFF) – 端口 2 方向和端口 0 外设优先级控制
[7:6]外设优先级控制。当 PERCFG 分配给一些外设 到 相同引脚的时候,这些位将确定优先级。
详细优先级列表:
00:第1优先级:USART0第2优先级:USART1 第3优先级:定时器 1
01:第1优先级:USART1第2优先级:USART0 第3优先级:定时器 1
10:第1优先级:定时器1通道0-1第2优先级:USART1第3优先级:USART0第4优先级:定时器 1 通道 2 – 3
11 :第 1 优先级:定时器1通道 2-3第2优先级:USART0第3优先级:USART1第4优先级:定时器 1 通道 0 – 1
[5]  不使用
[4:0] P2 . 4 到 P2 . 0 的 I/O 方向 0 : 输入 1 : 输出
PERCFG (0xF1) – 外设控制
[7]  没有使用
[6]定 时器1的I/O位置0 :备用 位置 1 1 :备用 位置 2
[5]定 时器3的I/O位置0 :备用 位置 1 1 :备用 位置 2
[4]定 时器4的I/O位置0 :备用 位置 1 1 :备用 位置 2
[3:2] 没有使用
[1]USART1的I/O位置0备用位置1 1:备用位置2
[0]USART0的I/O位置0备用位置1 1:备用位置2
U0GCR (0xC5) – USART 0 通用控制
位 名称 复位 描述
[7]SPI 的时钟极性0:负时钟极性 1:正时钟极性
[6]SPI 时钟相位0:当SCK从CPOL倒置到CPOL时数据输出到MOSI,并且当SCK从CPOL倒置到 
CPOL 时数据输入抽样到 MISO 。1:当SCK从CPOL倒置到CPOL时数据输出到 MOSI 并且当 
SCK 从 CPO L倒置到 CPOL 时数据输入抽样到 MISO 。
[5] 传送位顺序 0 : LSB 先传送 1 : MSB 先传送
[4:0] BAUD_E[4:0] 波特率指数值。 BAUD_E 和 BAUD_M 决定了 UART 波特率 和 SPI 的主 SCK 时
钟频率。
U0BAUD (0xC2) – USART 0 波特率控制
[7:0]BAUD_M[7:0]波特率小数部分的值。BAUD_E和BAUD_M决定了UART的波特率和SPI的主SCK时钟频率。
注意:BAUD_E[4:0]和BAUD_M[7:0]决定波特率
表 16-1 32 MHz 系统时钟常用的波特率设置
波特率 ( b ps) UxBAUD.BAUD_M UxGCR.BAUD_E   误差 ( % )
2400                59          6             0.14
4800                59          7             0.14
9600                59         8 0.14
14400              216     8 0.03
19200              59 9 0.14
28800 216 9 0.03
38400 59 10 0.14
57600 216 10 0.03
76800 59 11 0.14
115200 216 11 0.03
230400 216 12 0.03

转载地址:http://boxcx.baihongyu.com/

你可能感兴趣的文章
连接池的意义及阿里Druid
查看>>
ComponentOne 2019V1火热来袭!全面支持 Visual Studio 2019——亮点之WinForm篇
查看>>
全面的Spring Boot配置文件详解
查看>>
如何优雅地玩转分库分表
查看>>
Python递归函数与匿名函数
查看>>
我的友情链接
查看>>
CentOS添加永久静态路由
查看>>
mysql多实例的安装以及主从复制配置
查看>>
loadrunner安装运行一步一步来(多图)
查看>>
git请求报错 401
查看>>
动态追踪技术(四):基于 Linux bcc/BPF 实现 Go 程序动态追踪
查看>>
Cyber-Security: Linux 容器安全的十重境界
查看>>
监控工具htop的安装及使用
查看>>
Nodejs使用图灵机器人获取笑话
查看>>
【读书笔记】第三章 大型网站核心架构要素
查看>>
jvm参数设置
查看>>
易宝典文章——玩转Office 365中的Exchange Online服务 之十三 怎样管理Exchange Online的邮件用户和联系人...
查看>>
nexus 从Window迁移至Linux
查看>>
Spring 任务调度 简单的,使用Schedule
查看>>
通過OPENSHIFT進行DJANGO開發
查看>>