cc2530串口UART0通信实验(20200627130016)
无线通信技术综合训练实验指导书I(CC2530基础)2
无线通信技术综合训练实验指导书 ICC2530 基础第二章 CC2530 开发平台2.1 硬件平台1. CC2530 模块 CC2530 模块基于 TI CC2530 主芯片,可以实现串口(UART)转 Zigbee 无线数据透明传输,模块 可以分别设置为 Router 和 Coordiantor。
上电自动组网, 网络内模块如掉电, 网络具备自我修复功能。
模块重要参数: 输入电压:DC3.3V; 串口速率:38400bps(默认),可设置 9600bps、19200bps、38400bps、57600bps、115200bps; 无线频率:2.4GHz; 无线协议:Zigbee2007; 传输距离:可视距离 400 米; 接收/发射电流:发射时,34mA(最大);接收时,25mA(最大); 主芯片:TI CC2530F256,256K Flash。
CC2530 模块如图 2-1 所示。
(a)实物图 图 2-1 CC2530 模块图(b)引脚图CC2530 模块引脚功能如表 2-1 所示。
表 2-1 CC2530 模块引脚功能表 J1 1 3 5 7 9 11 Debug_D P1.7 P1.5 P1.3 LED_2 NC 2 4 6 8 10 12 Debug_C P2.0 P1.6 P1.4 P1.2 NC 1 3 5 7 9 11 Reset_N SW1 TX RTS P0.7 GND J2 2 4 6 8 10 12 P0.0 RX CTS P0.6 LED_1 3.3V In 第 15 页第二章 CC2530 开发平台2. 主从节点开发板 (1)主节点结构 主节点作为网络中的协调器,具有建立和管理网络的功能。
在本套实验设备当中配置的主节点 结构图如图 2-2 所示。
LCD 显示屏JP3图 2-2 主节点功能模块图ZigBee 模块:CC2530F256 系列的 CC2530 模块; JP1:DEBUG 程序下载接口; JP3:电源接口 5V 电源; JP5:串口输出; 复位键:对主节点进行复位; S1\S2:按键 1、按键 2; S3:电源开关; LCD 显示屏:显示从节点发来的数据; U4:光照度传感器; U5:温湿度传感器; LED1/LED2:LED 显示,作为信号灯显示物联网部分信息。
CC2530实现协议栈网络通信实验(组播)
afAddrType_t Group_DstAddr 组播内容的结构体: 2. 加入组播参数的配置。
Group_DstAddr.addrMode = (afAddrMode_t)afAddrGroup; Group_DstAddr.endPoint = SAMPLEAPP_ENDPOINT; Group_DstAddr.addr.shortAddr = Test_GROUP; 其中 Test_GROUP 在 SampleApp.h 里面定义组号为 2:
具体实验: 1. 发送部分 组播描述的就是网络中所有节点设备被分组后组内相互通信的过程。确定通
信对象的就是节点的组号。下面我们在 SampleApp 例程完通过简单的修改完成 组播实验。
终端的描述文件在 AF.h 文件里,找到下面代码: 1. 在SampleApp.c中加入2项内容: 组播afAddrType_t的类型变量
= Addr64Bit,
afAddrGroup
= AddrGroup,
afAddrBroadcast = AddrBroadcast
} afAddrMode_t;
发送函数 void SampleApp_SendGroupMessage( void ) {
uint8 data[10]={0,1,2,3,4,5,6,7,8,9}; if ( AF_DataRequest( &Group_DstAddr, &SampleApp_epDesc,
#define Test_GROUP 0x0002 // 组播号 2
ቤተ መጻሕፍቲ ባይዱ
易思开发工作室 ES Technology
{
afAddrNotPresent = AddrNotPresent,
cc2530的接口实验的实验原理
cc2530的接口实验的实验原理下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。
本文下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Downloaded tips: This document is carefully compiled by the editor. I hope that after you download them, they can help you solve practical problems. The documents can be customized and modified after downloading, please adjust and use it according to actual needs, thank you!In addition, our shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!CC2530是一款常用于物联网设备的芯片,其接口实验是物联网领域中的重要实践之一。
实验2:CC2530 定时器实验
计算机科学与技术学院实验报告课程名称:无线传感器网络原理与应用实验二:CC2530定时器实验一、实验目的了解并学会使用 CC2530 芯片的定时器。
二、实验内容用定时器 1 和定时器 3 采用中断方式实现定时,分别控制红绿灯的状态翻转。
定时器 1 自由运行模式,8 分频;定时器 3 自由运行,128 分频。
定时器1 为16 位定时器,在自由运行模式下,从 0x0000 到 0xFFFF 反复计数;定时器 3 为 8位定时器,在自由运行模式下,从 0x00 到 0xFF 反复计数。
当到达计时值时,定时器会产生中断,中断函数就是处理相应定时器产生的中断。
三、实验环境硬件:鼎轩 WSN 实验箱(汇聚网关、烧录线),PC 机;软件:IAR 软件。
四、实验步骤CC2530 芯片包含四个定时器(Timer1、Timer2、Timer3、Timer4)和一个休眠定时器(Sleep Timer)。
Timer1 是 16 位的定时器,支持典型的定时/计数功能以及 PWM 功能,该定时器共有三个捕捉/比较通道,每个通道使用一个单独的 I/O 引脚。
Timer1 的时钟频率是由系统时钟分频得到,首先由寄存器中的 CLKON.TICKSPD 分频,系统时钟是32MHz的情况下, CLKON.TICKSPD可以将该时钟频率分频到32MHz (TICKSPD为 000)、16MHz(TICKSPD 为 001)、 8MHz (TICKSPD 为 010)、4MHz(TICKSPD为 011)、 2MHz (TICKSPD 为 100)、 1MHz (TICKSPD 为101)、 0.5MHz (TICKSPD为 110)、 0.25MHz (TICKSPD 为 111);分频后的时钟频率可以被 T1CTL.DIV 分频,分频数为 1、8、32、128。
因此,在 32MHz 的系统频率下,Timer1 的最小时钟频率为 1953.125Hz,最大时钟频率为 32MHz。
使用cc2530的案例
使用CC2530的案例第一部分:CC2530简介CC2530是一款由德州仪器(TI)公司推出的无线通信芯片,主要用于低功耗、短距离通信应用。
本部分将介绍CC2530的基本特性和应用领域。
1. CC2530的基本特性:CC2530是一款集成了RF收发器、微控制器、闪存和其他必要组件的芯片。
其采用IEEE 802.15.4标准,支持2.4 GHz频段,具有低功耗、高性能的特点。
2. CC2530的应用领域:CC2530广泛应用于物联网(IoT)、无线传感器网络(WSN)、家庭自动化、工业控制等领域。
其灵活性和低功耗的特性使其成为许多嵌入式系统的理想选择。
第二部分:智能家居中的CC2530应用1. 智能灯控系统:在智能家居中,CC2530可以用于搭建智能灯控系统。
通过与灯具连接,用户可以通过手机或其他智能设备远程控制灯光亮度、颜色,实现智能化的照明管理。
2. 温湿度监测系统:利用CC2530的低功耗特性,可以构建温湿度监测系统。
传感器采集环境数据,通过CC2530传输至中心控制器,用户可以实时监测室内温湿度,并根据需要进行调节。
3. 安防系统:CC2530也可以应用于智能家居的安防系统。
通过连接门窗传感器、红外感应器等设备,CC2530可以实现对家庭安全状态的监测,当有异常情况时及时发送通知。
第三部分:工业控制中的CC2530应用1. 无线传感器网络(WSN):在工业控制领域,CC2530常用于构建无线传感器网络。
通过无线连接传感器,实现对工业环境参数的实时监测,提高工业系统的智能化水平。
2. 远程设备监控:利用CC2530的远距离通信能力,可以实现对分布在不同位置的设备的远程监控。
工程师可以通过中心控制器远程管理和维护设备,提高工业生产的效率和可靠性。
3. 智能物流跟踪系统:在工业物流中,CC2530可以用于物品的实时追踪和监控。
通过与传感器和GPS模块结合,实现对物流过程的实时监测,提高物流运输的效率和安全性。
CC2530串口通信
CC2530串⼝通信任何USART双向通信⾄少需要两个脚:接收数据输⼊(RX)和发送数据输出(TX)。
RX:接收数据串⾏输⼊。
通过采样技术来区别数据和噪⾳,从⽽恢复数据。
TX :发送数据输出。
当发送器被禁⽌时,输出引脚恢复到它的I/O端⼝配置。
当发送器被激活,并且不发送数据时,TX引脚处于⾼电平。
在单线和智能卡模式⾥,此I/O ⼝被同时⽤于数据的发送和接收。
并⾏通信与串⾏通信微控制器与外设之间的数据通信,根据连线结构和传送⽅式的不同,可以分为两种:并⾏通信和串⾏通信。
并⾏通信:指数据的各位同时发送或接收,每个数据位使⽤单独的⼀条导线。
传输速度快、效率⾼,但需要的数据线较多,成本⾼。
串⾏通信:指数据⼀位接⼀位地顺序发送或接收。
需要的数据线少,成本低,但传输速度慢,效率低。
CC2530的串⼝通信模块CC2530有两个串⾏通信接⼝USART0和USART1,它们能够分别运⾏于异步UART模式或者同步SPI模式。
两个USART接⼝具有相同的功能,通过PERCFG寄存器可以设置两个USART接⼝对应外部I/O引脚的映射关系:位置1:RX0 --- P0_2 TX0 --- P0_3 RX1 --- P0_5 TX1 --- P0_4位置2:RX0 --- P1_4 TX0 --- P1_5 RX1 --- P1_7 TX1 --- P1_6PERCFG寄存器:UART⼝与计算机的COM⼝连接认识两种电平:TTL电平和RS232电平。
TTL电平:逻辑0----⼩于0.8V 逻辑1----⼤于2.4V。
RS232电平:逻辑0----5~15V 逻辑1---- -5~-15V。
计算机的串⾏通信接⼝是RS-232的标准接⼝,⽽CC2530单⽚机的UART接⼝则是TTL电平,两者的电⽓规范不⼀致,所以要完成两者之间的数据通信,就需要借助接⼝芯⽚在两者之间进⾏电平转换,常⽤的有MAX232芯⽚。
TIP:DB9接⼝中,公头和母头的排列顺序是不同的。
CC2530实现协议栈网络通信实验(单播)
其中 Point_To_Point_DstAddr 我们之前已经定义,我们在 SampleApp.h 中加入 SAMPLEAPP_POINT_TO_POINT_CLUSTERID 的定义如下: #define SAMPLEAPP_POINT_TO_POINT_CLUSTERID 4 //传输编号
afAபைடு நூலகம்dr16Bit
= Addr16Bit,
afAddr64Bit
= Addr64Bit,
afAddrGroup
= AddrGroup,
afAddrBroadcast = AddrBroadcast
} afAddrMode_t;
当 addrMode= Addr16Bit 时,对应点播方式; 当 addrMode= AddrGroup 时, 对应组播方式; 当 addrMode= AddrBroadcast 时,对应广播方式;
} }
其中接收 ID 我们在原来基础上改成我们刚定义的 SAMPLEAPP_POINT_TO_POINT_CLUSTERID.
将修改后的程序分别以协调器、路由器、终端的方式下载到 3 个节点设备中, 连接串口。可以看到只有协调器在一个周期内收到信息。也就是说路由器和终端 均与地址为 0x00(协调器)的设备通信,不语其他设备通信。实现点对点传输。
case SAMPLEAPP_POINT_TO_POINT_CLUSTERID: HalUARTWrite(0,"Reveiver data: \n",14); //reveive data
CC2530实验指导书
CC2530实验指导书合肥市博焱科技有限公司目录一、CC2530基础实验部分 (3)1.1 输入输出I/O 控制实验 (3)1.1.1 CC2530 基础实验1 :LED自动闪烁 (3)1.1.2 CC2530 基础实验2 :按键控制LED开关 (5)1.2 中断实验 (6)1.2.1CC2530 基础实验3 :外部中断 (6)1.3 定时/ 计数器实验 (9)1.3.1CC2530 基础实验4:T1使用 (9)1.3.2CC2530 基础实验5 :T2使用 (10)1.3.3CC2530 基础实验6:T3使用 (13)1.3.4 CC2530 基础实验8 :T4使用 (16)1.4 串口UART (18)1.4.1CC2530 基础实验9:单片机串口发数 (18)1.4.2CC2530 基础实验10:在PC用串口控制LED (20)1.4.3CC2530 基础实验11:PC串口收数并发数 (22)1.4.4CC2530 基础实验12:串口时钟PC显示 (23)1.5 睡眠定时器实验 (25)1.5.1 CC2530 基础实验13:系统睡眠工作状态 (25)1.5.2 CC2530 基础实验14 :睡眠定时器使用 (26)1.6 ADC实验 (28)1.16.1 CC2530 基础实验15 :ADC实验 (28)1.7 看门狗 (30)1.7.1CC2530 基础实验16:看门狗模式 (30)一、CC2530基础实验部分1.1 输入输出I/O 控制实验1.1.1 CC2530 基础实验1 :LED自动闪烁一、实验目的:本实验的目的是让用户了解CC2530的I/O接口的编程方法,学会使用I/O操作外部设备。
实验以LED为外设,通过I/O控制LED的亮灭。
二、实验仪器设备仿真器1 台,传感器节点底板1 块,ZigBee 模块1 块,USB 连接线1 根。
三、实验内容:(一)实验原理说明:硬件说明:图1 LED连接原理图如图1所示,发光二极管的D2的阴极与CC2530的P1_1连接,发光二极管的D3的阴极与CC2530的P1_0连接。
实验4:CC2530 串口收发数据实验
计算机科学与技术学院实验报告课程名称:无线传感器网络原理与应用实验四:CC2530 串口收发数据实验一、实验目的熟悉并掌握 CC2530 芯片串口发送和接收数据的操作,为今后的综合实验打下基础。
二、实验内容使串口将接收的数据再发送。
三、实验环境硬件:鼎轩 WSN 实验箱(汇聚网关、烧录线、平行串口线),PC 机;软件:IAR 软件,串口助手。
四、实验步骤1)打开鼎轩 WSN 实验箱,检查实验箱设备,确保实验箱设备完整、连接无误后,连接电源线,打开电源开关;2)用烧录线连接汇聚网关上的烧录接口与电脑 USB 接口;3)双击打开目录(/cc2530-simple-demo/ USART_send_receive)下的工程图标USART_SR.eww 打开工程;4)点击 IAR 中的图标按钮编译程序;5)完成编译后若没有错误信息,将实验箱节点编程开关上汇聚网关开关拨上去,点击调试并下载按钮将程序下载到汇聚网关上;6)用串口线连接汇聚网关上的数据输出口和 PC 机 USB 接口,打开串口助手,正确选择串口号(视具体电脑而定)、波特率(9600),其他配置如下图都不更改。
7)在串口助手上字符串输入框内,输入需要传输的内容,点击发送按钮,可以看到字符串经串口传送给汇聚网关,然后又由串口打印输出,输出内容如下图:8)修改实验代码,实现输入字符1,红灯亮,输入字符2,红灯灭。
实验总结该实验完成串口的基本通讯。
在串口通讯中一般有两种方式来接受数据,一种是查询法、一种是中断法。
查询法就是要串口一致处于等待状态,看串口上是不是有数据,一旦数据接收完毕,就开始对接收的数据进行相应的操作。
这个方法需要让程序一致等待串口,所以这种方法效率还是比较低的。
中断法师运用串口的中断服务子程序来完成的,如果串口上有数据的话,那么会调用中断向量,中断向量把程序指针指到相应的中断服务服务程序上。
在中断服务程序完成之后,程序只能还会跳转到中断之前的地址。
单片机技术与应用05_CC2530 串口通信应用
3、串口实验
实验2:
开发思路:
3、串口实验
开始实验。。。。。。
4、拓展题
题目1: PC机与单片机间通信
在PC端,利用串口助手向单片 机发送字符串(字符串长度不 超过256字节,以“#”为结束 符),CC2530将接收到的数据 从串口反向发向 PC,并点亮 LED1灯,在串口助手窗口中显 示出来。
实验要求: 实验板开机后按照设定的时间间隔,不断地向PC及发送字符串 “Hello ! I am CC2530 。\n” ,每发送一次字符串消息,LED1闪 亮一次。具体工作方式如下:
1、通电后LED1熄灭。 2、设置USART 0使用位置。 3、设置UART工作方式和波特率。 4、LED1点亮。 5、发送字符串“Hello ! I am CC2530。\n”。 6、LED1熄灭。 7、延时一段时间,延时时间可以设置为3秒。 8、返回步骤④循环执行。
2、相关寄存器
波特率相关寄存器
CLKCONCMD:设置芯片工作频率32MHz还是16MHz UxGCR:USARTx 通用控制寄存器(设置波特率用) UxBAUD:USART x波特率控制寄存器(设置波特率用)
2、相关寄存器 32MHz系统时钟时常用的波特率设置
波特率 bit/S 2400 4800 9600 14400 19200 28800 38400 57600 76800
2、相关寄存器
对于CC2530的每个USART串口通信,有6个如下的寄存器(x是 USART的编号,为0或者1
PERCFG 外设控制寄存器
D7
D6
D5
D4
D3
D2
D1
D0
未用 定时器1 定时器3 定时器4 未用
未用 USART USART
8-CC2530之串口通信
USART0 的使用方式(发送)
选择32MHz晶振作为时钟源(方便)
物联网技术应用专业教学资源建设
等待晶振稳定
时钟速度定为32MHz
选择外设功能(PERCFG、P0SEL)
选择UART方式(U0CSR) 波特率的设定(U0GCR、U0BAUD) 清除发送完成标志位(IRCON2)
6. 31* :关LED 3,并打印:LED3 已关闭!
谢谢各位
cc2530cc2530之串口的使用之串口的使用cc2530cc2530之串口通信概述之串口通信概述cc2530cc2530之串口通信概述之串口通信概述cc2530cc2530有两个有两个uartuart外设分别是外设分别是uart0uart0和和uart1uart1这两个接口同时包括这两个接口同时包括spispi功能功能uartuart模式提供异步串行接口模式提供异步串行接口在在uartuart模式中接口使用模式中接口使用线或者含有引脚线或者含有引脚rxdrxdtxdtxd可选可选rtsrts和和ctscts一般情况下一般情况下uartuart模式使用模式使用线方式线方式当当uxcsrmodeuxcsrmode设置为设置为时就选择了时就选择了uartuart物联网技术应用专业教学资源建设cc2530cc2530之串口通信概述之串口通信概述cc2530cc2530之串口通信概述之串口通信概述11uart模式提供异步串行接口228位或者9位负载数据33提供全双工传送44uart操作由usart控制和状态寄存器uxcsr以及uart控制寄存器uxucr来控制xx为为00或者或者1物联网技术应用专业教学资源建设串口发送数据串口发送数据串口发送数据串口发送数据1usart收发数据缓冲器寄存器uxbuf写入数据22该字节发送到输出引脚txdx33当字节传送开始时uxcsractive位变为高电平而当字节传送结束时为低44当传送结束时uxcsrtxbyte位设置为1物联网技术应用专业教学资源建设波特率的产生波特率的产生波特率的产生波特率的产生11当运行在uart模式时内部的波特率发生器设置uart22由寄存器uxbaudbaudm7
cc2530程序设计实例之CC2530 RF部分使用—实现点对点收发
cc2530 程序设计实例之CC2530 RF 部分使用—实现
点对点收发
前言
本文将分析一个利用CC2530 实现无线串口,文中将会列举部分代码
并对CC2530 的具体操作进行分析。
本文的具体的内容包括以下几个部分:
CC2530 是符合802.15.4 标准的无线收发芯片,但是本文并没有遵守802.15.4 协议规则,在发送过程中忽略了网络ID、源地址和目标地址等参
数,在接收的过程中禁止了帧过滤。
通过发送和接收过程的处理使得CC2530 无线部分的使用尽可能的简单清晰,通过最少的代码说明问题。
无线芯片的调试具有一定的难度,一般存在发送设备和接收设备。
为了通过最简单的代码说明无线芯片的使用,本文中仅编写一种设备代码同时实现发送和接收功能。
设备的功能也相对简单,CC2530 从串口接收数据并把数据通过RF 部分无损发送,于此同时CC2530 把从RF 部分接收的数据通过
串口无损发送,通过这样的方式实现无线串口。
CC2530实现协议栈网络通信实验(广播)
2. 接收部分 接收数据函数 void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt ) { uint8 asc_16[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'},i; uint16 flashTime; switch ( pkt->clusterId ) { case SAMPLEAPP_PERIODIC_CLUSTERID: HalUARTWrite(0,"Receive data: \n",14); for(i=0;i<10;i++) HalUARTWrite(0,&asc_16[pkt->cmd.Data[i]],1);//sent data to PC
其中默认接收 ID 就是刚定义的周期性广播发送 ID。 将修改后的程序分别以协调器、路由器、终端的方式下载到 3 个设备,可以 看到各个设备都在广播发送信息,同时也接收广播信息
ห้องสมุดไป่ตู้
实验目的:学习如何使用 TI 提供的协议栈,进行组网和无线数据通信。其 中一个模块为协调器,一个模块为无线终端,一个模块为路由器。 实验步骤: 1. 打开工程文件:协议栈的无线数据传输 \Projects\zstack\Samples\SampleApp\CC2530DB\ SampleApp,分别选择 EndDeviceEB-Pro, RouterEB-Pro, CoordintorEB-Pro, 分别下载到三个模块中, 如下图所示。
Zigbee实验5 CC2530串口通信实验
#include <iocc2530.h>
#define LED0 P1_0
#define LED1 P1_1
unsigned char Flag_RX,temp;
void led_init(void)
{
P1SEL &= ~0x03;
//P1.0 P1.1为普通 I/O 口
P1DIR |= 0x03;
D7 为 SPI 时钟极性:0 为负时钟极性,1 为正时钟极性; D6 为 SPI 时钟相位: D5 为传送为顺序:0 为最低有效位先传送,1 为最高有效位先传送。 D4~D0 为波特率设置(详见下表):
串口通信流程如下: 图 1.5.1 串口通信实验流程图
1.5.5 实验步骤
1)按照1.1.5所学步骤创建工程,编辑代码:
D7 位为当前 32K 时间振荡器频率。0 为 32KRC 震荡,1 为 32K 晶振。 D6 位为当前系统时钟选择。0 为 32M 晶振,1 为 16M RC 震荡。 D5~D3 为当前定时器输出标记。000 为 32M ,001 为 16M ,010 为 8M , 011 为 4M ,100 为 2M ,101 为 1M ,110 为 500K ,111 为 250K 。 D2~D0 为当前系统主时钟。000 为 32M ,001 为 16M ,010 为 8M ,011 为 4M ,100 为 2M ,101 为 1M ,110 为 500K ,111 为 250K 。 U0CSR:USART0 控制与状态。
编程实现 CC2530 和 PC 之间的双向串口通信。
1.5.4 实验原理
本次实验所学习到的寄存器: CLKCONCMD:时钟频率控制寄存器。
D7 位为 32K 时间振荡器选择,0 为 32KRC 震荡,1 为 32K 晶振。 D6 位为系统时钟选择。0 为 32M 晶振,1 为 16M RC 震荡。当 D7 位为 0 时 D6 必须为 1。 D5~D3 为定时器输出标记。000 为 32M ,001 为 16M ,010 为 8M ,011 为 4M ,100 为 2M ,101 为 1M ,110 为 500K ,111 为 250K 。默认为 001。 需要注意的是:当 D6 为 1 时,定时器频率最高可采用频率为 16M 。 D2~D0:系统主时钟选择:000 为 32M ,001 为 16M ,010 为 8M ,011 为 4M ,100 为 2M ,101 为 1M ,110 为 500K ,111 为 250K 。当 D6 为 1 时,系统主时钟最高可采用频率为 16M 。 CLKCONSTA:时间频率状态寄存器。
cc2530串口UART0通信实验
/*********************头文件*************************************************/ #include <ioCC2530.h>#include <string.h>/*********************宏定义*************************************************/ #define uint unsigned int#define uchar unsigned char//----------------LED控制端口------------------------------------------------//#define GLED P1_0// 绿色LED定义#define RLED P1_1// 红色LED定义//----------------按键输入端口-----------------------------------------------//#define KEY1 P0_0/*********************全局变量**********************************************/ unsigned char Uart0_Rx;unsigned char Text_Data[]="海舟物联网教育!\r\n";/*********************函数声明***********************************************/ void Delay(uint);void Init_LED(void);void Init_Uart0(void);void Init_Sysclk(void);void Uart0_TX_Data(unsigned char *Data,int len);/****************************************************************************** *函数名称: void Delay(uint n)*函数功能: 软件延时函数*入口参数:*出口参数:*备注:******************************************************************************/ void Delay(uint n){uint i;for(i=0;i<n;i++);for(i=0;i<n;i++);for(i=0;i<n;i++);for(i=0;i<n;i++);for(i=0;i<n;i++);}/*******************************************************************************函数名称: void Init_Uart0(void)*函数功能: Uart0初始化设置*入口参数:*出口参数:*备注:******************************************************************************/ void Init_Uart0(void){PERCFG = 0x00; // 位置1 P0口P0SEL = 0x3c; // P0_2,P0_3用作串口P2DIR &= ~0XC0; // P0优先作为UART0U0CSR |= 0x80; // UART方式U0GCR |= 8;U0BAUD |= 59; // 波特率设为9600bpsUTX0IF = 0; // UART0 TX中断标志初始置位0U0CSR |= 0X40; // 允许接收IEN0 |= 0x84; // 开总中断,接收中断}/****************************************************************************** *函数名称: void Uart0_TX_Data(unsigned char *Data,int len)*函数功能: 串口0发送一组数据*入口参数:*出口参数:*备注:******************************************************************************/ void Uart0_TX_Data(unsigned char *Data,int len){int j;for(j=0;j<len;j++){U0DBUF = *Data++;while(UTX0IF == 0);UTX0IF = 0;}}/****************************************************************************** *函数名称: void Init_Sysclk()*函数功能: 设置系统时钟*入口参数:*出口参数:*备注:******************************************************************************/void Init_Sysclk(void){CLKCONCMD &= ~0x40; // 设置系统时钟源为32MHZ晶振while(CLKCONSTA & 0x40); // 等待晶振稳定CLKCONCMD &= ~0x47; // 设置系统主时32MHZ}/****************************************************************************** *函数名称: void Init_LED(void)*函数功能: 初始化LED*入口参数:*出口参数:*备注:******************************************************************************/ void Init_LED(void){P1DIR = 0x03; // P1.0 P1.1设置为输出RLED = 1; // 初始化LED状态GLED = 1;}/****************************************************************************** *函数名称: void main(void)*函数功能: 主函数*入口参数:*出口参数:*备注:******************************************************************************/ void main(void){Init_Sysclk(); // 初始化系统时钟Init_Uart0(); // 串口0设置Init_LED(); // 初始化LEDwhile(1){Uart0_TX_Data(Text_Data,17);Delay(50000);Delay(50000);Delay(50000);}}/****************************************************************************** *函数名称: void UART0_ISR(void)*函数功能: Uart0中断服务子程序*入口参数:*出口参数:*备注:******************************************************************************/ #pragma vector = URX0_VECTOR__interrupt void UART0_ISR(void){URX0IF = 0; //清中断标志Uart0_Rx = U0DBUF;}/*********************结束*************************************************/。
CC2530串口实验resume.
CC2530串口串口通信(Serial Communication),是指外设和计算机间,通过数据信号线、地线、控制线等,按位进行传输数据的一种通讯方式。
这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。
工作方式由于CPU 与接口之间按并行方式传输,接口与外设之间按串行方式传输,因此,在串行接口中,必须要有" 接收移位寄存器" (串→并)和" 发送移位寄存器" (并→串). 在数据输入过程中,数据1 位1 位地从外设进入接口的" 接收移位寄存器",当" 接收移位寄存器" 中已接收完1 个字符的各位后,数据就从" 接收移位寄存器" 进入" 数据输入寄存器" . CPU 从" 数据输入寄存器" 中读取接收到的字符.(并行读取,即D7~D0 同时被读至累加器中). " 接收移位寄存器" 的移位速度由" 接收时钟" 确定.在数据输出过程中,CPU 把要输出的字符(并行地)送入" 数据输出寄存器"," 数据输出寄存器" 的内容传输到" 发送移位寄存器",然后由" 发送移位寄存器" 移位,把数据1 位1 位地送到外设. " 发送移位寄存器" 的移位速度由" 发送时钟" 确定.接口中的" 控制寄存器" 用来容纳CPU 送给此接口的各种控制信息,这些控制信息决定接口的工作方式." 状态寄存器" 的各位称为" 状态位",每一个状态位都可以用来指示数据传输过程中的状态或某种错误.例如,用状态寄存器的D5 位为"1" 表示" 数据输出寄存器" 空,用D0 位表示" 数据输入寄存器满",用D2 位表示" 奇偶检验错" 等.能够完成上述" 串<- -> 并" 转换功能的电路,通常称为" 通用异步收发器" (UART :Universal Asynchronous Receiver and Transmitter),典型的芯片有:Intel 8250/8251,16550USB转串口即实现计算机USB接口到通用串口之间的转换。
CC2530实现协议栈的串口实验
文件名:协议栈的串口实验注意:1.先安装好PL2302 USB转串口驱动,转备好USB线,连接计算机与接收模块。
2.设置波特率为115200,不要勾选HEX显示,选择正确的串口号3.只需要一个模块。
●实验目的:学习如何使用TI提供的协议栈,进行串口实验●实验步骤:1.打开工程文件:\Projects\zstack\Samples\SampleApp\CC2530DB\SampleApp,选择,选择CoordinatorEB-Pro, 更改option的设置,加入预编译条件,ZIGBEEPROZTOOL_P1xMT_TASKxMT_SYS_FUNCxMT_ZDO_FUNC如下图所示:2.全速运行,可以看到串口助手收到信息。
3.如果想显示Z-stack MT层定义的数据,可以更改预编译条件为:ZIGBEEPROZTOOL_P1MT_TASKMT_SYS_FUNCMT_ZDO_FUNC如下图所示:具体实验:1.串口初始化函数void MT_UartInit (){halUARTCfg_t uartConfig;/* Initialize APP ID */App_TaskID = 0;/* UART Configuration */uartConfig.configured = TRUE;uartConfig.baudRate = MT_UART_DEFAULT_BAUDRATE; uartConfig.flowControl = MT_UART_DEFAULT_OVERFLOW; uartConfig.flowControlThreshold = MT_UART_DEFAULT_THRESHOLD; uartConfig.rx.maxBufSize = MT_UART_DEFAULT_MAX_RX_BUFF; uartConfig.tx.maxBufSize = MT_UART_DEFAULT_MAX_TX_BUFF; uartConfig.idleTimeout = MT_UART_DEFAULT_IDLE_TIMEOUT; uartConfig.intEnable = TRUE;#if defined (ZTOOL_P1) || defined (ZTOOL_P2)uartConfig.callBackFunc = MT_UartProcessZToolData;#elif defined (ZAPP_P1) || defined (ZAPP_P2)uartConfig.callBackFunc = MT_UartProcessZAppData;#elseuartConfig.callBackFunc = NULL;#endif/* Start UART */#if defined (MT_UART_DEFAULT_PORT)HalUARTOpen (MT_UART_DEFAULT_PORT, &uartConfig);#else/* Silence IAR compiler warning */(void)uartConfig;#endif/* Initialize for ZApp */#if defined (ZAPP_P1) || defined (ZAPP_P2)/* Default max bytes that ZAPP can take */MT_UartMaxZAppBufLen = 1;MT_UartZAppRxStatus = MT_UART_ZAPP_RX_READY;#endif}其中uartConfig.baudRate = MT_UART_DEFAULT_BAUDRATE;是配置波特率uartConfig.flowControl = MT_UART_DEFAULT_OVERFLOW; 语句是配置流控的,预编译是根据预先定义的ZTOOL或者ZAPP选择不同的数据处理函数。
实验报告-实验一IAR串口通信
实验报告-实验一IAR串口通信以下是为大家整理的实验报告-实验一IAR串口通信的相关范文,本文关键词为实验,报告,IAR,串口,通信,实验,平台,使用,串口,通信,您可以从右上方搜索框检索更多相关文章,如果您觉得有用,请继续关注我们并推荐给您的好友,您可以在综合文库中查看更多范文。
实验一平台使用及串口通信本次实验报告在下课后3天内上交!一、实验目的(1)了解物联网实验(2)箱熟悉IAR开发平台(3)能够读懂原理图中有关传感器的接口电路(4)能够建工程项目并编写程序(5)掌握串口通信二、实验设备仿真器1台,gec_cc2530板1块,usb连接线1根。
三、实验内容使用cc2530通过uART接收控制命令,完成LeD的控制。
四、实验代码完善红色注释部分代码:#include#include#defineuintunsignedint#defineucharunsignedchar#defineRLeDp1_0#definegLeDp1_1#defineYLeDp1_4voidinituART0(void);ucharRecdata[3]=%ucharRxTxflag=1;uchartemp;uintdatanumber=0;uintstringlen;/*******************************@brief串口(uART0)初始化******************************/voidinituART0(void){cLKconcmD//设置系统时钟源为32mhZ晶振while(cLKconsTA//等待晶振稳定cLKconcmD//设置系统主时钟频率为32mhZpeRcFg=0x00;//位置1p0口p0seL=0x3c;//p0用作串口p2DIR//p0优先作为uART0u0csR|=0x80;//串口设置为uART方式u0gcR|=9;u0bAuD|=59;//波特率设为19200uTx0IF=1;//uART0Tx中断标志初始置位1u0csR|=0x40;//允许接收Ien0|=0x84;//开总中断,接收中断}/*****************************@brief初始化LeDIo口****************************/voidInit_LeD_Io(void){p1DIR=0x13;//p1.0p1.1p1.4为输出RLeD=1;//熄灯YLeD=1;gLeD=1;} /**********************@brief主函数*********************/voidmain(void){uchari;Init_LeD_Io();inituART0();while(1)2{if(RxTxflag==1)//接收状态{if(temp!=0){if((temp!='#')elseRxTxflag=3;//进入改变小灯的程序if(datanumber==3)RxTxflag=3;temp=0;}//endif}//endifif(RxTxflag==3){switch(Recdata[0]){case'R':RLeD=Recdata[1]=='0';//在此,低电平有效break;case'g':gLeD=Recdata[1]=='0';break;case'Y':YLeD=Recdata[1]=='0';break;case'A':RLeD=gLeD=YLeD=Recdata[1]=='0';break;}RxTxflag=1;for(i=0;i datanumber=0;//指针归0}}//while}/********************************************************** *******@brief串口接收一个字符:*一旦有数据从串口传至cc2530,则进入中断,*将接收到的数据赋值给变量temp.*********************************************************** *****/3#pragmavector=uRx0_VecToR__interruptvoiduART0_IsR(void){uRx0IF=0;//清中断标志temp=u0DbuF;//接收到的数据放进变量temp}五、实验心得很多东西都忘了,现在再做感到很陌生,勉强做好。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/*********************
头文件*************************************************/ #include <ioCC2530.h>
#include <string.h>
/********************* 宏定义*************************************************/ #define uint unsigned int
#define uchar unsigned char
// --------------- LED 控制端口------------------------------- //
#define GLED P1_0〃绿色LED定义
#define RLED P1_1〃红色LED定义
// --------------- 按键输入端口------------------------------- //
#define KEY1 P0_0
/********************* 全局变量**********************************************/ unsigned char Uart0_Rx;
unsigned char Text_Data[]=" 海舟物联网教育!\r\n";
/********************* 函数声明***********************************************/ void Delay(uint);
void Init_LED(void);
void Init_Uart0(void);
void Init_Sysclk(void);
void Uart0_TX_Data(unsigned char *Data,int len);
/******************************************************************************
* 函数名称: void Delay(uint n)
* 函数功能: 软件延时函数
* 入口参数:
* 出口参数:
* 备注:
******************************************************************************/ void
Delay(uint n)
{
uint i;
for(i=0;i<n;i++);
for(i=0;i<n;i++);
for(i=0;i<n;i++);
for(i=0;i<n;i++);
for(i=0;i<n;i++); }
'****************************************************************************
* 函数名称 : void Init_Uart0(void) *函数功能 : Uart0 初始化设置
* 入口参数 : *出口参数
****************************************************************************
// 位置 1 P0 口 // P0_2,P0_3 用作串口 // P0 优先作为 UART0 // UART 方式 // 波特率设为 9600bps // UART0 TX 中断标志初始置位 0 // 允许接收
// 开总中断,接收中断
/******************************************************************************
* 函数名称 : void Uart0_TX_Data(unsigned char *Data,int len) *函数功能 : 串口 0 发送一组数据
* 入口参数 :
* 出口参数 :
* 备 注:
******************************************************************************/ void Uart0_TX_Data(unsigned char *Data,int len)
{
int j;
for(j=0;j<len;j++)
{
U0DBUF = *Data++;
while(UTX0IF == 0);
UTX0IF = 0;
}
}
/******************************************************************************
* 函数名称 : void Init_Sysclk()
* 函数功能 : 设置系统时钟
* 入口参数 :
* 出口参数 :
* 备 注:
void Init_Uart0(void)
{
PERCFG = 0x00;
P0SEL = 0x3c;
P2DIR &= ~0XC0;
U0CSR |= 0x80;
U0GCR |= 8;
U0BAUD |= 59;
UTX0IF = 0;
U0CSR |= 0X40;
IEN0 |= 0x84;
**************************************************************************** }
void Init_Sysclk(void)
{
CLKCONCMD &= ~0x40;
while(CLKCONSTA & 0x40);
CLKCONCMD &= ~0x47;
} /****************************************************************************** *函数名称 : void Init_LED(void)
* 函数功能 : 初始化 LED
* 入口参数 :
* 出口参数 :
* 备 注:
******************************************************************************/ void Init_LED(void)
{
P1DIR = 0x03;
// P1.0 P1.1 设置为输出 RLED = 1;
//初始化LED 状态
GLED = 1;
} /****************************************************************************** * 函数名称 : void main(void)
* 函数功能 : 主函数
* 入口参数 :
* 出口参数 :
* 备 注:
******************************************************************************/ void main(void)
{
Init_Sysclk(); // 初始化系统时钟
Init_Uart0(); // 串口 0 设置 Init_LED(); // 初始化 LED
while(1)
{
Uart0_TX_Data(Text_Data,17);
Delay(50000);
Delay(50000);
Delay(50000);
// 设置系统时钟源为 32MHZ 晶振 // 等待晶振稳定 // 设置系统主时 32MHZ
'****************************************************************************
*函数名称: void UART0_ISR(void)
*函数功能: Uart0 中断服务子程序
* 入口参数:
* 出口参数:
* 备注:
****************************************************************************
#pragma vector = URX0_VECTOR
__interrupt void UART0_ISR(void)
{
URX0IF = 0; // 清中断标志
Uart0_Rx = U0DBUF;
}
******************* 结束***********************************************。