ZigBee案例笔记 - USART

news2025/7/17 0:50:27

文章目录

        • 1.串行通信接口简述
        • 2.串行通信接口寄存器
          • U0CSR (0x86) -USART 0 控制和状态
          • U0UCR (0xC4)–USART 0 UART 控制
          • U0GCR (0xC5)–USART 0 通用控制
          • U0BUF (0xC1) – USART 0 接收/传送数据缓存
          • U0BAUD (0xC2) – USART 0 波特率控制
        • 3.设置串行通信接口比特率控制寄存器
        • 4.外设I/O引脚映射
          • PxSEL功能引脚配置
        • 5.USART0 demo

1.串行通信接口简述

在CC2530内部有2组串口USART0和USART1,它们都能分别运行于异步模式(UART)或者同步模式(SPI),在寄存器UxCSR的MODE配置为1时作为UART模式,其中UxCSR的x为0或1,两个USART具有同样的功能。在UART模式中,可以使用双线连接方式(引脚RXD+TXD)或四线连接方式(引脚RXD+TXD+RTS+CTS),其中RTS和CTS用于硬件流量控制。
UART模式具有以下特点:

  • 8位或9位负载数据
  • 奇校验、偶校验或者无奇偶校验
  • 配置起始位和停止位电平
  • 配置LSB或者MSB首先传送
  • 独立收发中断
  • 独立收发DMA触发
  • 奇偶校验和帧校验出错状态

2.串行通信接口寄存器

对于每个USART(USART0/USART1),有5个相关寄存器 (x是USART的编号,为0或1):

  • UxCSR:USARTx 控制和状态
  • UxUCR:USARTx UART 控制
  • UxGCR:USARTx 通用控制
  • UxBUF:USART x 接收/发送数据缓冲
  • UxBAUD:USART x 波特率控制
U0CSR (0x86) -USART 0 控制和状态

在这里插入图片描述

U0UCR (0xC4)–USART 0 UART 控制

在这里插入图片描述

U0GCR (0xC5)–USART 0 通用控制

在这里插入图片描述

U0BUF (0xC1) – USART 0 接收/传送数据缓存

在这里插入图片描述

U0BAUD (0xC2) – USART 0 波特率控制

在这里插入图片描述

3.设置串行通信接口比特率控制寄存器

在UART模式时,内部波特率发生器的波特率设置由寄存器UxBAUD.BAUD_M[7:0]和UxGCR.BAUD_E[4:0]来定义波特率
在这里插入图片描述

4.外设I/O引脚映射

看芯片手册知道USART0的SPI模式和UART模式除了可以配置P0端口外还可以映射在P1端口,USART2亦是如此

在这里插入图片描述配置PERCFG寄存器可以选择USART0、USART1和定时器使用的I/O位置
在这里插入图片描述

PxSEL功能引脚配置

在LED控制与按键检测(输入/输出)一篇中有提到 PxSEL 这个端口功能选择寄存器,将引脚配置为普通I/O或是外设功能,用作USART时需要将对应引脚的位置1
在这里插入图片描述

5.USART0 demo

CC2530通过串口0不断向PC串口发送字符串“Hello World”并换行显示

#include <ioCC2530.h>

#define uint  unsigned int
#define uint8 unsigned char

void delayUs(uint n)
{
	while(n--)
	{
		asm("NOP");
		asm("NOP");
		asm("NOP");	
	}
}

void delayMs(uint n)
{
  while(n--)
  {
		delayUs(1000);
	}
}

void initUART(void)
{
  CLKCONCMD &= ~0x40;         // 设置系统时钟源为32MHz晶振
  while(CLKCONSTA & 0x40);    // 等待晶振稳定
  CLKCONCMD &= ~0x47;         // 设置系统主时钟频率为32MHz
  
  PERCFG = 0x00;              // USART0 使用位置1 P0_2 P0_3口
  P0SEL = 0x3C;               // P0_2 P0_3 P0_4 P0_5用作串口
    
  U0CSR |= 0x80;			  // UART模式
  U0GCR |= 8;                 // 波特率 9600
  U0BAUD |= 59;
  
  UTX0IF = 0;				  // UART0 TX中断标志初始置位0
}

void UART_Send_String(char *Data,int len)
{
  uint8 j;
  for(j=0;j<len;j++)
  {
    U0DBUF = *Data++;
    while(UTX0IF == 0);
    UTX0IF = 0;
  }
}

void main(void)
{
  char SendStr[] = "Hello World\r\n";
  initUART();
  
  while(1)
  {
    UART_Send_String(SendStr,sizeof(SendStr));
    delayMs(500);
  }
  
}

在串口调试助手上可以看到串口打印信息
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/345318.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分布式一致性算法Raft原理图释

什么是分布式一致性算法Raft 分布式一致性算法Raft&#xff1a;指在分布式场景下实现集群数据同步的解决方案 掌握了这个算法&#xff0c;就可以较容易地处理绝大部分场景的容错和数据一致性需求 Raft三大角色 跟随者&#xff08;Follower&#xff09;&#xff1a;普通群众…

opencv绘制矩形和圆

大家好&#xff0c;我是csdn的博主&#xff1a;lqj_本人 这是我的个人博客主页&#xff1a; lqj_本人的博客_CSDN博客-微信小程序,前端,python领域博主lqj_本人擅长微信小程序,前端,python,等方面的知识https://blog.csdn.net/lbcyllqj?spm1011.2415.3001.5343哔哩哔哩欢迎关注…

Go语言之 下载安装go以及vscode配置go环境

上篇请移步到Go语言之 下载安装及第一个代码_水w的博客-CSDN博客 目录 一、下载安装以及配置go环境 1 下载安装go 2 配置go环境 二、安装配置git 一、在vscode上开发golang 1 配置 2 编写代码 解决报错&#xff1a;go: go.mod file not found in current directory or …

J-Link RTT Viewer使用教程(附代码)

目录 RTT(Real Time Transfer)简介 使用教程 常用API介绍 RTT缓冲大小修改 使用printf重定向 官方例程 RTT(Real Time Transfer)简介 平常调试代码中使用串口打印log&#xff0c;往往需要接出串口引脚&#xff0c;比较麻烦&#xff0c;并且串口打印速度较慢&#xff0c;串…

RTT 线程间同步互斥

1.概念 在多线程实时系统中&#xff0c;一项工作的完成往往可以通过多个线程协调的方式共同来完成&#xff0c;那么多个线程之间如何 “默契” 协作才能使这项工作无差错执行&#xff1f;下面举个例子说明。 例如一项工作中的两个线程&#xff1a;一个线程从传感器中接收数据…

分享112个HTML电子商务模板,总有一款适合您

分享112个HTML电子商务模板&#xff0c;总有一款适合您 112个HTML电子商务模板下载链接&#xff1a;https://pan.baidu.com/s/13wf9C9NtaJz67ZqwQyo74w?pwdzt4a 提取码&#xff1a;zt4a Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 有机蔬菜水果食品商城网…

ubuntu 安装支持GPU的Docker详细步骤

安装依赖项 sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common 添加 Docker GPG 密钥 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo apt-key fingerpr…

分享111个HTML医疗保健模板,总有一款适合您

分享111个HTML医疗保健模板&#xff0c;总有一款适合您 111个HTML医疗保健模板下载链接&#xff1a;https://pan.baidu.com/s/1YInaQDnUVsXYtMh1Ls-BHg?pwdxvfc 提取码&#xff1a;xvfc Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 import os import shuti…

元宇宙之声:新鸿基公司

在本期节目中&#xff0c;新鸿基团队讲述了他们在农历新年季中展示的元宇宙最新创作&#xff01; 为什么将体验命名为「乘风启航」&#xff1f;什么是 「Scallywag」&#xff1f; 香港专业离岸帆船队新鸿基 Scallywag 队由新鸿基公司赞助&#xff0c;其团队精神与公司的精神相呼…

Git实用指令记录

config 用例&#xff1a;对git最先要做的一个操作就是配置用户名和邮箱&#xff0c;否则无法commit查看所有可以config的条目&#xff0c;非常之多$ git config --list core.symlinksfalse core.autocrlftrue core.fscachetrue color.interactivetrue color.uiauto help.forma…

Java多重选择结构,超详细整理,适合新手入门

目录 一、什么是多重选择结构&#xff1f; 二、if 语句的语法 1、什么是嵌套if语句&#xff1f; 2、if 语句循环基本用法&#xff1a; 3、案例&#xff1a; 二、if...else多重选择结构语法 1、什么是if-else语句&#xff1f; 2、if...else 循环基本用法 3、案例&#…

尚硅谷Git课程 | Git(idea版本)笔记

尚硅谷Git课程 | Git(idea版本) 笔记 文章目录尚硅谷Git课程 | Git(idea版本) 笔记工作机制代码托管中心git安装(看视频)Git常用命令设置用户签名初始化本地库查看状态添加暂存区提交本地库查看git历史版本修改文件版本穿梭Git分支操作分支的好处查看分支创建分支切换分支分支合…

安全渗透环境准备(工具下载)

数据来源 01 一些VM虚拟机的安装 攻击机kali&#xff1a; kali官网 渗透测试工具Kali Linux安装与使用 kali汉化 虚拟机网络建议设置成NAT模式&#xff0c;桥接有时不稳定。 靶机OWASP_Broken_Web_Apps&#xff1a; 迅雷下载 网盘下载 安装教程 开机之后需要登录&am…

UE4 使用控件蓝图的动画功能实现UI的淡入淡出

效果&#xff1a;步骤&#xff1a;首先PS一张背景纯黑&#xff0c;边缘有羽化效果的图片&#xff1a;新建一个控件蓝图&#xff0c;创建一个图像和按钮控件&#xff0c;控件的初始位置如下所示&#xff0c;设置图像一开始为完全透明新建两个动画&#xff0c;分别命名为“向左移…

高可用架构:异地多活

前言&#xff1a;多「活」、多「备」是两个相对的概念&#xff0c;设计和实现的难度相差很大&#xff0c;不要搞混了 1.为什么要做多活 在一些极端场景下&#xff0c;有可能所有服务器都出现故障&#xff0c;例如机房断电、机房火灾、地震等这些不卡抗拒因素会导致系统所有服务…

多线程之死锁,哲学家就餐问题的实现

1.死锁是什么 死锁是这样一种情形&#xff1a;多个线程同时被阻塞&#xff0c;它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞&#xff0c;因此程序不可能正常终止。 2.哲学家就餐问题 有五个哲学家&#xff0c;他们的生活方式是交替地进行思考和进餐…

网际协议IP

网际协议IP 文章目录网际协议IP[toc]虚拟互联网IP地址及其表示方法分类IP地址(两级)无分类编址 CIDR网路前缀地址块地址掩码子网划分&#xff08;三级IP地址&#xff09;IP地址和MAC地址地址解析协议ARPIP数据报的格式IP数据报首部的固定部分中的各字段IP数据报首部的可变部分分…

REDIS-雪崩、击穿、穿透

直接发车&#x1f697; 一.雪崩 1.触发原因 A.大量缓存数据在同一时间过期(失效) B.redis故障宕机 上述均导致全部请求去访问数据库&#xff0c;导致DB压力骤增&#xff0c;严重则导致数据库宕机/系统宕机 2.应对策略 不同触发原因&#xff0c;应对策略也不一致 应对A&a…

C# SolidWorks二次开发 API-命令标签页的切换与按钮错乱问题

这是一个网友咨询的问题&#xff0c;说他想控制默认打开文件之后solidworks上方工具栏的当前激活标签页。 之前我们提到过,制作Solidworks的插件也会在上面增加一个标签页&#xff0c;用来放自己开发的命令&#xff0c;经常开发的人肯定会遇到有时候更新版本&#xff0c;或者标…

奥威软件宏昊化工启动BI项目,打造智能制造标杆

近日&#xff0c;中国纺织行业领先企业宏昊化工有限公司成功启动了与奥威签订的BI项目&#xff0c;期望通过BI的建立进一步提升企业数字化经营能力和核心竞争力。 奥威bi数据分析软件 在全球经济形势不明朗&#xff0c;国内外市场竞争加剧叠加疫情反复的情况下&#xff0c;化工…