logo资料库

zigbee的无线通信.doc

第1页 / 共18页
第2页 / 共18页
第3页 / 共18页
第4页 / 共18页
第5页 / 共18页
第6页 / 共18页
第7页 / 共18页
第8页 / 共18页
资料共18页,剩余部分请下载后查看
课 程 设 计 课程设计名称: 物联网数据传输处理综合课程设计 专 业 班 级 : 物联网工程 1502 班 学 生 姓 名 : 许雨 学 号 : 201516070215 指 导 教 师 : 蒋玉英 课程设计时间: 2018.6.19-2018.6. 30
物联网工程 专业课程设计任务书 学生姓名 许雨 专业班级 物联网 1502 学号 201516070215 题 目 课题性质 指导教师 基于 ZigBee 的无线通信系统 A.工程设计 王锋 课题来源 同组姓名 自拟课题 1. 利用两个 cc2530 芯片一个作为协调器,一个作为终端,实现两台 PC 机间的串口 主要内容 透传无线传输数据,即聊天系统。 2. 在实验中能够顺利的接收数据,并能够实现多个节点数据收发。 1.掌握 CC2530 串口的配置与使用 任务要求 2.掌握串口透传,熟知数据无线传输的接收与发送原理。 3.明白透传的原理,能够灵活运用此原理实现数据收发。 [1] CC2530 中文数据手册完全版[EB/OL],郑州新双恒信息技术有限公司, 2009. [2] 刘连浩.物联网与嵌入式系统开发[M], 北京:电子工业出版社,2012. 参考文献 [3] cc2530-datasheet[EB/OL],Texas Instruments Incorporated,2009. [4] 周怡,凌志浩.Zigbee 无线通信技术及其应用[EB/OL],2005. 审查意见 指导教师签字: 教研室主任签字: 2018 年 6 月 15 日
一、设计任务与要求 利用两个 cc2530 芯片一个作为协调器,一个作为终端,实现两台 PC 机间的 串口透传无线传输数据,即聊天系统。 二、设计思想 利用 CC2530 的核心板,底板以及天线组成的小型单片机,将应用程序以协 调器和终端的形式下载到两个这样的单片机中,协调器作为组网的一端,终端加 入到这个网络当中,通过传输和接收数据到 PC 端的串口来显示它们之间的通信 过程,验证组网成功,可以进行聊天。 三、主要元器件介绍 3.1 CC2530 芯片介绍 CC2530 是用于 2.4-GHz IEEE 802.15.4、ZigBee 和 RF4CE 应用的一个真 正的片上系统 (SoC)解决方案。它能够以非常低的总的材料成本建立强大的 网络节点。CC2530 结合了领先的 RF 收发器的优良性能,业界标准的增强型 8051 CPU,系统内可编程 闪存,8-KB RAM 和许多其它强大的功能。CC2530 有 四种不同的闪存版本:CC2530F32/64/128/256,分别具有 32/64/128/256KB 的闪 存。CC2530 具有不同的运行模式,使 得它尤其适应超低功耗要求的系统。运 行模式之间的转换时间短进一步确保了低能源消耗。CC2530F256 结合了德州仪 器的业界领先的黄金单元 ZigBee 协议栈(Z-Stack™),提供了一 个强大和完 整的 ZigBee 解决方案。 CC2530F64 结合了德州仪器的黄金单元 RemoTI,更 好地提供了一个强大和完整的 ZigBee RF4CE 远程控制解决方案。 CC2530 模块大致可以分为三种类型:CPU 和内存相关的模块;外设、时 钟和电源管理相关 的模块;无线电相关的模块。 CC253x 设备系列使用的 8051 CPU 内核是一个单周期的 8051 兼容内核。它有三个不同的存 储器访问总线 (SFR、DATA 和 CODE/XDATA),以单周期访问 SFR、DATA 和主 SRAM。 它还包括 一个调试接口和一个 18 输入的扩展中断单元。 中断控制器提供了 18 个中断源,分为六个中断组,每组与四个中断优先级相关。当设备 从空闲模 式回到活动模式,也会发出一个中断服务请求。 内存仲裁器位于系统中心,因 为它通过 SFR 总线,把 CPU 和 DMA 控制器和物理存储器和 所有外设连接 1
在一起。内存仲裁器有四个存取访问点,访问每一个可以映射到三个物理存储器 之一:一个 8-KB SRAM、一个闪存存储器和一个 XREG/SFR 寄存器。它负责 执行仲裁,并确定同 时到同一个物理存储器的内存访问的顺序 。 图 3.1 CC2530 内部图 3.2 CC2530 芯片资料 图 3.2 CC2530 芯片简略图 2
CC2530 是专门针对 IEEE 802.15.4 和 Zigbee 应用的单芯片解决方案,经济 且低功耗。CC2530 有四种不同的版本:CC2530-F32 /64 /128 /256。分别带有 32 /64 /128 /256 KB 的闪存空间;它整合了全集成的高效射频收发机及业界标准的 增强型 8051 微控制器,8 KB 的 RAM 和其他强大的支持功能和外设。 3.3 8051 CPU 增强型 8051 内核使用标准的 8051 指令集。因为以下原因指令执行比 标准的 8051 更快 ⚫ 每个指令周期是一个时钟,而标准的 8051 每个指令周期是 12 个时钟。 ⚫ 消除了总线状态的浪费。 因为一个指令周期与可能的内存存取是一致 的,大多数单字节指令在一个时钟周期内执行。除了速度提高之外,增强型 8051 内核还包括结构上的改善: ⚫ 第二个数据指针 ⚫ 一个扩展的 18 源中断单元 8051 内核的对象代码兼容业界标准的 8051 微控制器。即对象代码使用 8051 内核上执行的 业界标准的 8051 编 译器或汇编器编译,在功能上是等同的。但是,因为 8051 内核使用了不 同于 许多其他 8051 类型的一个指令时序,带有时序循环的已有代码可能需要修改。 而且,因为 诸如定时器和串行端口的外设单元不同于其他 8051 内核,包含使 用外设单元 SFR 的指令的代 码不能正确运行。 闪存预取默认不是使能的,但 是提高了 CPU 高达 33%的性能。这一设置的代价是功率消耗 略有增加,但 是 因为这样更快,大多数情况下提高了能源消耗。闪存预取可以在 FCTL 寄存器 中使能。 四、设计方案 大致的实验步骤: 1.选择 CoodinatorEB, 下载到开发板 A ;作为协调器,通过 USB 线跟电脑连 接. 2.选择 RouterEB, 下载到开发板 B;B 无线发送数据给协调器。 3.A,B 上电,打开串口调试助手,并打开串口选择自己的端口号。终端连网成 3
功后会向协调器发送数据,使用调试助手观察两者能否成功互相收发数据。 五、硬件连线 图 5.1 硬件连接图 图 5.2 组网成功图 六、程序流程图 4
图 6.1 Z-Stack 系统运行流程图 七、程序源代码 第一个功能:协调器的组网,终端设备和路由设备发现网络以及加入网络 //第一步:Z-Stack 由 main()函数开始执行,main()函数共做了 2 件事:一是系统初 始化,另外一件是开始执行轮转查询式操作系统 int main( void ) { // Initialize the operating system osal_init_system(); osal_start_system(); //第二步,操作系统初始化 //初始化完系统任务事件后,正式开始执行操作系统 } //第二步,进入 osal_init_system()函数,执行操作系统初始化 uint8 osal_init_system( void ) 任务 { //初始化操作系统,其中最重要的是,初始化操作系统的 // Initialize the Memory Allocation System osal_mem_init(); // Initialize the message queue osal_qHead = NULL; // Initialize the timers osalTimerInit(); // Initialize the Power Management System osal_pwrmgr_init(); // Initialize the system tasks. osalInitTasks(); // Setup efficient search for the first free block of heap. //第三步,执行操作系统任务初始化函数 5
osal_mem_kick(); return ( SUCCESS ); } //第三步,进入 osalInitTasks()函数,执行操作系统任务初始化 void osalInitTasks( void ) //第三步,初始化操作系统任务 { uint8 taskID = 0; tasksEvents = (uint16 *)osal_mem_alloc( sizeof( uint16 ) * tasksCnt); osal_memset( tasksEvents, 0, (sizeof( uint16 ) * tasksCnt)); //任务优先级由高向低依次排 列,高优先级对应 taskID 的值反而小 macTaskInit( taskID++ ); //不需要用户考虑 //不需要用户考虑 nwk_init( taskID++ ); Hal_Init( taskID++ ); //硬件抽象层初始化,需要我们考虑 #if defined( MT_TASK ) MT_TaskInit( taskID++ ); #endif APS_Init( taskID++ ); //不需要用户考虑 #if defined ( ZIGBEE_FRAGMENTATION ) APSF_Init( taskID++ ); #endif ZDApp_Init( taskID++ ); 是协调器将建立网络,如果是终端设备将加入网络。 #if defined ( ZIGBEE_FREQ_AGILITY ) || defined ( ZIGBEE_PANID_CONFLICT ) ZDNwkMgr_Init( taskID++ ); #endif SerialApp_Init( taskID ); 个按键触发事件, //应用层 SerialApp 层初始化,需要用户考虑 //第四步,ZDApp 层,初始化 ,执行 ZDApp_init 函数后,如果 在此处设置了一 //当有按键按下的时候,产生一个系统消息 } //The seventh step,分两种情况,1.协调器 2.路由器或终端设备 1)协调器 void ZDO_NetworkFormationConfirmCB( ZStatus_t Status ) //The seventh step,给予 ZDO 层网络形成反馈信息(协调器) { osal_set_event( ZDAppTaskID, ZDO_NETWORK_START ); //发送网络启动事件 到 ZDApp 层,接着转到 ZDApp_event_loop()函数 } UINT16 ZDApp_event_loop( uint8 task_id, UINT16 events ) { if ( events & ZDO_NETWORK_START ) // 网络启动事件 { ZDApp_NetworkStartEvt(); //网络启动事件,接着跳转到 The ninth step, 执行 ZDAp p_NetworkStartEvt()函数.. 6
分享到:
收藏