第3章_CC2530接口之TinyOS组件编程5(Flash&DMA)
- 格式:pptx
- 大小:2.39 MB
- 文档页数:51
CC2530非Z_Stack协议栈下的FLASH读写程序#include "ioCC2530.h"/**************************************************************** 功能: 擦除FLASH中的第page页* 参数: page=0-127(Z-Stack协议栈规定用户可使用范围page=121-126)****************************************************************/void FlashErase(uint8 page){FADDRH = page << 1;FCTL |= 0x01; //启动页面擦除while (FCTL & 0x80); //等待擦除完成}/**************************************************************** 功能: 将buf中的length个字节写入FLASH第page页offset开始的位置* 参数: page=0-127,offset和length必须是4的整倍数* 说明: 可去掉Project->Options->Texas Instruments->Download中的Erase flash选项****************************************************************/uint8 DmaDesc[8]={0,0,0x62,0x73,0,0,0x12,0x42}; //定义DMA描述符void FlashWrite(uint8 page, uint16 offset, uint8 *buf, uint16 length){FADDRH = (page << 1)|((offset >> 10) & 1); //计算FLASH地址FADDRL = (offset >> 2) & 0xFF;DmaDesc[0] = (uint16)buf >> 8; //设置数据地址DmaDesc[1] = (uint16)buf & 0xFF;DmaDesc[4] = (length >> 8) & 0x1F; //设置字节数DmaDesc[5] = length & 0xFC;DMA0CFGH = (uint16)DmaDesc >> 8; //设置DMA通道0描述符地址DMA0CFGL = (uint16)DmaDesc & 0xFF;DMAIRQ = 0x01; //激活DMA通道0DMAARM = 0x01; //使DMA通道0进入工作状态FCTL |= 0x02; //开始DMA写入操作while (FCTL & 0x80); //等待写入完成}/**************************************************************** 功能: 将FLASH第page页offset开始的length个字节读入buf中* 参数: page=0-127,offset和length必须是4的整倍数****************************************************************/void FlashRead(uint8 page, uint16 offset, uint8 *buf, uint16 length){uint8 *pData = (uint8 *)(offset + (page & 0xF) * 2048 + 0x8000);uint8 memctr = MEMCTR; //暂存当前存储器映射状态MEMCTR = (MEMCTR & 0xF8)|((page >> 4) & 7); //将被读FLASH映射到XDATA while (length--) *buf++ = *pData++; //读取数据MEMCTR = memctr; //回复存储器映射状态}。
cc2530课程设计一、教学目标本课程的教学目标是使学生掌握cc2530的基本概念、特性以及应用。
具体包括:1.知识目标:–了解cc2530的基本概念和特性。
–掌握cc2530在物联网应用中的基本原理和操作方法。
2.技能目标:–能够使用cc2530进行基本的编程和调试。
–能够利用cc2530设计和实现简单的物联网应用。
3.情感态度价值观目标:–培养学生的创新意识和团队协作精神。
–增强学生对物联网技术的认识,提高他们对物联网技术的兴趣和热情。
二、教学内容本课程的教学内容主要包括cc2530的基本概念、特性、编程以及应用。
具体安排如下:1.第一章:cc2530概述–cc2530的基本概念–cc2530的特性2.第二章:cc2530编程基础–cc2530的编程环境–cc2530的基本编程语法3.第三章:cc2530应用实例–cc2530在物联网应用中的基本原理–cc2530在物联网应用中的操作方法三、教学方法为了提高教学效果,本课程将采用多种教学方法,包括:1.讲授法:用于讲解cc2530的基本概念、特性和编程基础。
2.案例分析法:通过分析具体的物联网应用实例,使学生更好地理解cc2530的应用。
3.实验法:安排实验室实践环节,让学生亲自动手进行编程和调试,提高他们的实际操作能力。
四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:选用权威、实用的cc2530教材作为主要教学资料。
2.参考书:提供相关的物联网技术参考书籍,供学生自主学习。
3.多媒体资料:制作教学PPT,提供清晰的cc2530操作演示视频等。
4.实验设备:准备cc2530开发板、调试器等实验设备,为学生提供实践机会。
五、教学评估本课程的教学评估将采用多元化的评估方式,包括平时表现、作业、考试等,以全面客观地评价学生的学习成果。
1.平时表现:通过课堂参与、提问、小组讨论等形式的评估,考察学生的参与度和积极性。
2.作业:布置适量的作业,要求学生在规定时间内完成,以检验学生对课程内容的掌握程度。
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 定时/ 计数器实验 (8)1.3.1CC2530 基础实验4:T1使用 (8)1。
3.2CC2530 基础实验5 :T2使用 (9)1.3.3CC2530 基础实验6:T3使用 (12)1。
3.4 CC2530 基础实验8 :T4使用 (15)1.4 串口UART (17)1.4.1CC2530 基础实验9:单片机串口发数 (17)1.4.2CC2530 基础实验10:在PC用串口控制LED (19)1。
4.3CC2530 基础实验11:PC串口收数并发数 (20)1。
4.4CC2530 基础实验12:串口时钟PC显示 (22)1.5 睡眠定时器实验 (23)1。
5。
1 CC2530 基础实验13:系统睡眠工作状态 (23)1。
5。
2 CC2530 基础实验14 :睡眠定时器使用 (24)1。
6 ADC实验 (26)1.16.1 CC2530 基础实验15 :ADC实验 (26)1。
7 看门狗 (28)1。
7.1CC2530 基础实验16:看门狗模式 (28)一、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连接。
使用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与无线传感器网络操作系统TinyOS应用实践(内附光盘1张)李外云编著的《CC2530与无线传感器网络操作系统TinyOS应用实践(附光盘)》第1章简要地介绍了物联网特点、体系结构以及802.15.4网络通信协议标准。
第2、3章分别介绍了TinyOS的安装方法和基于windows操作系统的TinyOS集成开发环境的配置、交叉编译开发工具的使用方法。
第4章介绍了本书所有应用程序开发的硬件平台的组成、软件编程和调试方法。
第5章简要地介绍了TinyOS操作系统架构、基于TinyOS操作系统平台的搭建以及CC22530移植的过程和方法。
第6、7章详细地介绍了CC2530芯片的内部资源和外设接口等硬件功能模块,以及各功能模块在TinyOS操作系统下的驱动组件的编程方法和应用测试程序。
第8、9章详细地剖析了CC22530的无线通信功能、基于TinyOS的主动无线通信消息机制组件的构建,并对CC2530无线通信的发送功率、信道选择、RSSI以及点对点和点对多点无线通信组件的测试过程进行了介绍。
第10章以光敏传感器、DS18820温度传感器、SHTxx 温湿度传感器和超声波传感器为例,详细地介绍了在基于TinyOS操作系统的物联网系统中不同类型传感器的驱动编程方法以及测试过程。
第11章介绍了TinyOS操作系统的小数据分发协议和汇聚协议的基本原理、组件构成以及多跳路由协议的应用开发。
作者:李外云编著出版社:北京航空航天大学出版社2章TinyOS开发环境的安装与配置第3章TinyOS在Windows环境下的集成开发工具第4章enmote物联网开发平台介绍第5章TinyOS操作系统与nesC语言编程第6章CC2530基本接口组件设计与应用第7章CC2530外设组件接口开发第8章CC2530射频通信组件设计第9章CC2530射频通信组件应用第10章TinyOS传感器节点驱动与应用第11章TinyOS-2.x网络协议与应用TinyOS实用编程——面向无线传感网节点软件开发者:李鸥,张效义,王晓梅,等著出版社:机械工业出版社出版时间:2013年7月介绍了利用TinyOS开发无线传感器网络应用系统应具备的基础知识,包括TinyOS系统的特点、体系结构、安装与常用命令、简单实例等;详细介绍了TinyOS的编程语言nesC(包括组件、接口、模块、配件与连接、参数化接口、通用组件等),TinyOS系统并发执行模型,驱动程序与硬件抽象,系统主要功能模块,TinyOS典型应用;剖析了应用程序运行过程,对应用程序的仿真、调试和编程提示进行了描述;最后结合应用实例进行系统分析以提高读者对于TinyOS的系统认识。
CC2530课后习题答案附录课后练习的答案第1章zigbee技术概述1、 a2、b3、简单传感器网络、智能传感器网络、无线传感器网络4、物理层、媒体访问控制层(即mac层)、网络层、应用层5、免费的、半开源6.物联网是通信网络和互联网不断扩大的应用和网络延伸。
它使用感知技术和智能设备来感知和识别物理世界。
通过网络传输和互联,进行计算、处理和知识挖掘,实现人与物、物与物之间的信息交互和无缝连接,达到对物理世界进行实时控制、准确管理和科学决策的目的。
7、cc2430是chipcon公司(在2021年被美国德州仪器公司收购)推出的一款片上系统芯片。
它集成了8051内核与射频模块,主要用于实现嵌入式zigbee应用的片上系统。
cc2431是chipcon公司smartrf03家族中的一个关键部分。
它与cc2430的的最大不同是带有硬件定位引擎。
cc2530/cc2531是cc2430/cc2431的升级版本。
cc2530根据闪存的不同有4中不同的版本,分别是cc2530f32、cc2530f64、cc2530f128和cc2530f256,这4中版本分别具有32/64/128/256kb的闪存空间cc2538是德州仪器生产的一款针对高性能zigbee应用的理想片上系统。
该芯片包含基于armcortex-m3的强大mcu系统,具有高达32kb的片上ram、512kb的片上闪存和可靠的ieee802.15.4射频功能。
第2章开发环境P321、iar2、packetsniffer3.ZigBee协调器、ZigBee路由器、ZigBee终端节点4、5V、3.3V5、usb接口、按键、仿真器接口、传感器接口、继电器接口、zigbee核心模块插接处6、zigbee协调器主要负责网络的建立、信道的选择以及网络中节点地址的分配,是整个zigbee网络的控制中心。
ZigBee开发技术——CC2530单片机技术原理及应用7、略第三章硬件设计p441、射频电路的设计、晶振、电源去耦电路设计、外围扩展接口2、p1_0、p1_1、p1_4、p0_13.DS18B20温度传感器、光敏传感器、热红外传感器和烟雾传感器的接口4、插接口主要用于做cc2530核心板接口即i/o插座以及对应的功能选择插接口。
cc2530工作原理(一)CC2530工作原理简介CC2530是一款常见的无线通信芯片,广泛应用于物联网领域。
它采用TI公司的Zigbee技术,具有低功耗、长距离传输、自组网等特点。
本文将从浅入深解释CC2530的工作原理。
Zigbee无线通信技术Zigbee是一种低功耗、短距离、低速率的无线通信技术。
它基于IEEE 标准,并在其上添加了网络协议和应用层协议。
Zigbee网络采用网状拓扑结构,由一个协调器和多个终端设备组成。
CC2530芯片作为终端设备连接到Zigbee网络中。
CC2530芯片结构CC2530芯片包括处理器、收发器、外设等组件。
•处理器:CC2530采用8051内核的8位微控制器,用于控制全芯片的各个模块。
•收发器:CC2530集成了的射频收发电路,可以与其他设备进行无线通信。
•外设:CC2530还包含了GPIO、UART、I2C等外设接口,用于连接外部设备。
CC2530的工作原理步骤1.启动和初始化:CC2530芯片上电后,处理器将通过引脚配置、时钟设置等完成初始化。
2.Zigbee网络加入:CC2530通过射频收发电路与协调器进行通信,发送加入网络的请求。
3.网络配置:协调器接收到CC2530的请求后,根据网络配置规则为CC2530分配网络地址,并将其加入到Zigbee网络中。
4.数据收发:CC2530可以通过射频收发电路与其他设备进行数据收发。
它采用插槽访问方式,即在协调器规定的时间插槽内完成数据传输。
5.自组网:CC2530可以自动组网,根据网络拓扑结构自动选择路由路径,实现数据的可靠传输。
6.低功耗管理:CC2530具有低功耗特性,可以根据需要切换不同的功耗模式,延长电池寿命。
总结CC2530是一款基于Zigbee无线通信技术的芯片,通过与协调器的通信,实现与其他设备之间的无线数据收发。
它采用自组网和低功耗管理技术,为物联网应用提供了一种可靠的通信解决方案。
以上就是CC2530的工作原理的简要介绍,希望对读者有所帮助。
ZigBee(CC2530)演示程序烧写说明安装IAR开发环境步骤如下:打开目录,解压EW8051-EV-751A.rar在当前文件夹下,图1.0双击开始安装图1.1图1.2单击Next图1.3单击Accept图1.4按下面的方法获取License#,然后点击Next。
打开EW8051-EV-751A Crack 文件双击IARID.EXE,获取自己PC的ID号,如下图,ID号为0x2B073图1.5鼠标右键点击KEY ,点编辑,修改ID。
然后保存。
双击key.cmd 生成文档,打开key.txt, 找到“EW8051-EV" 这一段,获取Installserial号和key图1.7图1.8将上面获取的key 拷贝到License Key:这一栏,然后点击Next ,后面的全部选默认安装,直到完成第二章安装CC2530烧写工具步骤如下:打开目录,双击Setup_SmartRFProgr_1.6.2.exe开始安装图2.0图2.1根据提示全部默认安装,直到安装完成,之后桌面上出现CC2530烧写软件图标双击桌面上的SmartRF Flash Programmer图标,打开CC2530烧写软件如下图2.2使用配套仿真器连接好CC2530和PC机后,界面显示在Flash处选择要烧写的hex文件\img\zigbee-img\up_zigbeeV0F1.hex 在Location处选择Secondary单选框,写入8字节物理地址在Action:处选择Erase and program单选框单击Perform actions按钮进行烧写烧写完后CC2530上的两个LED联系闪烁10次,表示等待配置第三章CC2530串口配置软件的使用双击\tools目录下的ZigBeeConfiger.exe软件图3.0图3.1用串口线连接好CC2530和PC机,给CC2530 上电选择连接PC机的串口号,波特率为*****,点击连接串口图3.2点击检测设备图3.3点击读出信息图3.4按如下图的配置信息写入信息,重启设备协调器节点图3.5温湿度路由器节点图3.6红外对射路由器节点。
#include <ioCC2530.h>#include <string.h>#define uint unsigned int#define uchar unsigned char#define uint8 unsigned char#define uint16 unsigned int#ifndef BV#define BV(n) (1 << (n))#endif#define st(x) do { x } while (__LINE__ == -1)/* SPI settings */#define HAL_SPI_CLOCK_POL_LO 0x00#define HAL_SPI_CLOCK_PHA_0 0x00#define HAL_SPI_TRANSFER_MSB_FIRST 0x20#define FLASH_CS_PORT 1//****************¶¨ÒåFLASHоƬµÄ¶Ë¿Ú*************#define FLASH_CS_PIN 3/* FLASH SPI lines */#define FLASH_CLK_PORT 1#define FLASH_CLK_PIN 5#define FLASH_MOSI_PORT 1#define FLASH_MOSI_PIN 6#define FLASH_MISO_PORT 1#define FLASH_MISO_PIN 7#define HAL_IO_SET(port, pin, val) HAL_IO_SET_PREP(port, pin, val)#define HAL_IO_SET_PREP(port, pin, val) st( P##port##_##pin## = val; )#define HAL_CONFIG_IO_OUTPUT(port, pin, val) HAL_CONFIG_IO_OUTPUT_PREP(port, pin, val)#define HAL_CONFIG_IO_OUTPUT_PREP(port, pin, val) st( P##port##SEL &=~BV(pin); \P##port##_##pin## = val; \P##port##DIR |=BV(pin); )#define HAL_CONFIG_IO_PERIPHERAL(port, pin)HAL_CONFIG_IO_PERIPHERAL_PREP(port, pin)#define HAL_CONFIG_IO_PERIPHERAL_PREP(port, pin) st( P##port##SEL |=BV(pin); )/* SPI interface control */#define FLASH_SPI_BEGIN() HAL_IO_SET(FLASH_CS_PORT,FLASH_CS_PIN, 0); /* chip select */#define FLASH_SPI_END() \{ \asm("NOP");\asm("NOP");\HAL_IO_SET(FLASH_CS_PORT, FLASH_CS_PIN, 1); /* chip select */\}/* clear the received and transmit byte status, write tx data to buffer,wait till transmit done*///*****************SPIµÄ·¢ËÍ¡¢½ÓÊÜ¡¢µÈ´ý*******************#define FLASH_SPI_TX(x) { U1CSR &= ~(BV(2) | BV(1));U1DBUF = (x); while( !(U1CSR & BV(1)) ); }#define FLASH_SPI_WAIT_RXRDY() { while(!(U1CSR & BV(1))); }#define FLASH_SPI_RX(x) {U1CSR &= ~(BV(2) | BV(1));U1DBUF = 0xFF; while( !(U1CSR & BV(1)) ); (x)=U1DBUF;}typedef union{unsigned long cvalue;unsigned char cbyte[4];}addr_ch;//*********************¶¨ÒåµØÖ·½á¹¹Ìå*******************//¶¨Òå¿ØÖƵƵĶ˿Ú#define GLED P1_0#define RLED P1_1#define BLED P0_1#define YLED P1_4//º¯ÊýÉùÃ÷void Delay(uint);void initUARTSEND(void);void UartTX_Send_String(char *Data,int len);void vddWait(uchar vdd);void Init_SSTSPI(void);void Read_JEDECID(char *ID);void Byte_Program(addr_ch sDst, unsigned char cbyte);unsigned char Read_Status_Register(void) ;void EWSR(void) ;void WRSR(unsigned char byte) ;void WREN(void) ;void WRDI(void) ;void Wait_Busy(void);void SPIFlashEraseAll(void);void FlashReadCNT(addr_ch sDst, unsigned long no_bytes,char *Buffer);char Txdata[25]="\r\nFEIBIT Electronics\r\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 initUARTSEND(void) //*******************************´®¿ÚÉèÖÃ******************************{PERCFG = 0; //ÅäÖÃUART0µÄIOλÖÃΪ±¸ÓÃλÖÃ1P0SEL = 0x3c; //P0.2-PO.5ÉèÖÃΪÍâÉ蹦ÄܵĶ˿ÚP2DIR &= ~(3<<6);//ÉèÖÃUART0ΪµÚÒ»ÓÅÏȼ¶£¬UART1ΪµÚ¶þÓÅÏȼ¶£¬U0CSR |= (1<<7); //select the mode as UART modeU0GCR |= 0x09;U0BAUD |= 59; //ʵÔò9600±ÈÌØÂÊUTX0IF = 0; //clear the interrupt flagU0CSR |= (1<<6); //enable receive bitIEN0 |= 0x84;}/****************************************************************´®¿Ú·¢ËÍ×Ö·û´®º¯Êý****************************************************************/void UartTX_Send_String(char *data,int length) //*****************************´®¿Ú·¢ËÍÊý¾Ý**************************{int i;for(i=0;i<length;i++){U0DBUF = *data;data++;while(UTX0IF==0); // complete receiveUTX0IF = 0; //clear the flag}U0DBUF =0x0A; //carriage returnwhile(UTX0IF==0); // complete receiveUTX0IF = 0;}static voidInit_SSTSPI(void)//***********************³õʼ»¯SPI½Ó¿Ú*************{/* UART/SPI Peripheral configuration */uint8 baud_exponent;uint8 baud_mantissa;HAL_CONFIG_IO_OUTPUT(FLASH_CS_PORT,FLASH_CS_PIN,1);//******½«P13ÉèÖÃΪÊä³ö/* Set SPI on UART 1 alternative 2 */PERCFG |= 0x02;//Ñ¡Ôñ´®¿Ú1£¬2Ϊ¿ÉÑ¡/* Configure clk, master out and master in lines */HAL_CONFIG_IO_PERIPHERAL(FLASH_CLK_PORT,FLASH_CLK_PIN);//******¶Ë¿ÚÉèÖÃΪÍâÉèHAL_CONFIG_IO_PERIPHERAL(FLASH_MOSI_PORT, FLASH_MOSI_PIN);HAL_CONFIG_IO_PERIPHERAL(FLASH_MISO_PORT, FLASH_MISO_PIN);/* Set SPI speed to 1 MHz (the values assume system clk of 32MHz)* Confirm on board that this results in 1MHz spi clk.*/baud_exponent = 15;baud_mantissa = 0;/* Configure SPI */U1UCR = 0x80; /* Flush and goto IDLE state. 8-N-1. */U1CSR = 0x40; /* SPI mode, master. */U1GCR = HAL_SPI_TRANSFER_MSB_FIRST | HAL_SPI_CLOCK_PHA_0 |HAL_SPI_CLOCK_POL_LO | baud_exponent;U1BAUD = baud_mantissa;}void Read_JEDECID(char *ID){FLASH_SPI_BEGIN(); //HAL_IO_SET(FLASH_CS_PORT, FLASH_CS_PIN,0); /* chip select */ CSƬѡÖУ¬µÍµçƽѡÔñ¡¢asm("NOP");asm("NOP");asm("NOP");FLASH_SPI_TX (0x9F ); // ¶ÁJEDEC ID { U1CSR &= ~(BV(2) | BV(1));U1DBUF = (x); while( !(U1CSR & BV(1)) ); }FLASH_SPI_RX(ID[0]); // ½ÓÊÕÈý¸öIDFLASH_SPI_RX(ID[1]);FLASH_SPI_RX(ID[2]);FLASH_SPI_END();}//***************************************************************************//// ////º¯Êý£ºvoid Byte_Program(unsigned long, unsigned char) ////˵Ã÷: ×Ö½ÚдÈë ////²ÎÊý£ºDst¡ª¡ªÊý¾ÝµØÖ· //// byte ¡ª¡ªÐ´ÈëÊý¾Ý //// ////***************************************************************************//void Byte_Program(addr_ch sDst, unsigned char cbyte){FLASH_SPI_BEGIN();asm("NOP");FLASH_SPI_TX(0x02);//дÃüÁî×ÖFLASH_SPI_TX(sDst.cbyte[2]);//ÏÈдµØÖ·FLASH_SPI_TX(sDst.cbyte[1]);FLASH_SPI_TX(sDst.cbyte[0]);FLASH_SPI_TX(cbyte);//дÈëÊý¾ÝFLASH_SPI_END();}//***************************************************************************//// ////º¯Êý£ºunsigned char Read_Status_Register(void) ////˵Ã÷: ¶Áȡ״̬¼Ä´æÆ÷////·µ»Ø£º×´Ì¬¼Ä´æÆ÷Öµ//// ////***************************************************************************//unsigned char Read_Status_Register(void){unsigned char cbyte = 0 ;FLASH_SPI_BEGIN();asm("NOP");FLASH_SPI_TX(0x05);//дÈë¡°¶Áȡ״̬¡±ÃüÁîFLASH_SPI_RX(cbyte);//½ÓÊÜ״̬Êý¾ÝFLASH_SPI_END();return cbyte;}//***************************************************************************//// ////º¯Êý£ºvoid EWSR(void)////˵Ã÷: ״̬¼Ä´æÆ÷дʹÄÜ //// ////***************************************************************************//void EWSR(void){FLASH_SPI_BEGIN();asm("NOP");asm("NOP");asm("NOP");FLASH_SPI_TX(0x50);FLASH_SPI_END();}//***************************************************************************//// ////º¯Êý£ºvoid WRSR(unsigned char byte) ////˵Ã÷: ״̬¼Ä´æÆ÷дÈë ////²ÎÊý£ºbyte ¡ª¡ªÐ´ÈëÊý¾Ý //// ////***************************************************************************//void WRSR(unsigned char cbyte){FLASH_SPI_BEGIN();asm("NOP");asm("NOP");asm("NOP");FLASH_SPI_TX(0x01);FLASH_SPI_TX(cbyte);FLASH_SPI_END();}//***************************************************************************//// ////º¯Êý£ºvoid WREN(void) ////˵Ã÷: оƬдʹÄÜ//// ////***************************************************************************//void WREN(void){FLASH_SPI_BEGIN();asm("NOP");asm("NOP");asm("NOP");FLASH_SPI_TX(0x06);FLASH_SPI_END();}//***************************************************************************//// ////º¯Êý£ºvoid WRDI(void) ////˵Ã÷: оƬд½ûÖ¹//// ////***************************************************************************//void WRDI(void){FLASH_SPI_BEGIN();asm("NOP");asm("NOP");asm("NOP");FLASH_SPI_TX(0x04);FLASH_SPI_END();}//***************************************************************************//// ////º¯Êý£ºvoid Wait_Busy(void) ////˵Ã÷: оƬæ¼ì²â//// ////***************************************************************************//void Wait_Busy(void){while(Read_Status_Register()&0x01)Read_Status_Register() ;}/***************************************************************** ****************************************** Function name: SPIFlashChipErase** Descriptions: ²Á³ýÕû¿éоƬ** Input parameters: none** Output parameters: none** Returned value: none** Note: Èç¹ûsectorAaddr****************************************************************** ***************************************/void SPIFlashEraseAll(void){WREN();Init_SSTSPI() ;EWSR();WRSR(0x00) ;WREN() ;FLASH_SPI_BEGIN();asm("NOP");asm("NOP");asm("NOP");FLASH_SPI_TX(0x60);FLASH_SPI_END();Wait_Busy();WREN() ;FLASH_SPI_BEGIN();asm("NOP");asm("NOP");asm("NOP");FLASH_SPI_TX(0xC7);FLASH_SPI_END();Wait_Busy();}void FlashReadCNT(addr_ch sDst, unsigned long no_bytes,char *Buffer) {unsigned char i ;FLASH_SPI_BEGIN();asm("NOP");asm("NOP");asm("NOP");FLASH_SPI_TX(0x03);FLASH_SPI_TX(sDst.cbyte[2]);FLASH_SPI_TX(sDst.cbyte[1]);FLASH_SPI_TX(sDst.cbyte[0]);for(i=0;i<no_bytes;i++){FLASH_SPI_RX(Buffer[i] );}FLASH_SPI_END();}/**************************************************************** Ö÷º¯Êý****************************************************************/ const char HEX_char[] = "0123456789ABCDEF";void main(void){uchar i;uchar j;P1DIR = 0x03; //P1¿ØÖÆLEDRLED = 1;GLED = 0; //¹ØLEDaddr_ch lDst;initUARTSEND();UartTX_Send_String(Txdata,25); //FEIBIT ElectronicsInit_SSTSPI();for(j=0;j<2;j++){//-----------------------Erase------------------SPIFlashEraseAll();//²Á³ýÐèÒªÒ»¶¨µÄʱ¼ä2ÃëUartTX_Send_String("\r\nSPI Erase OK!\r\n",17);//-----------------------Read ID---------------Read_JEDECID(Txdata);//*******¶ÁÈ¡µØÖ·********UartTX_Send_String("\r\nFeibit Flash ID:", 18);//***************flashµØÖ·ÊÇ×Ô¶¯ÏÔʾ**************UartTX_Send_String( (char *)&HEX_char[Txdata[0]>>4], 1);UartTX_Send_String( (char *)&HEX_char[Txdata[0]&0x0f], 1);UartTX_Send_String( (char *)&HEX_char[Txdata[1]>>4], 1);UartTX_Send_String( (char *)&HEX_char[Txdata[1]&0x0f], 1);UartTX_Send_String( (char *)&HEX_char[Txdata[2]>>4], 1);UartTX_Send_String( (char *)&HEX_char[Txdata[2]&0x0f], 1);UartTX_Send_String("\r\n",2);//---------------------Write Data----------------lDst.cvalue=0x10;//ֵΪ¡°16¡±£»for(i=0;i<16;i++){//ÏÈÏû³ý±£»¤Î»£¬ÔÙÔÊÐíдλWREN();//******оƬдʹÄÜ******Byte_Program(lDst,HEX_char[i]);//********16´ÎÑ-»·Ð´ÈëÊý¾Ý****** *****Wait_Busy();lDst.cvalue++;//******16¸ö1Dst.cvalueÖµ******** }lDst.cvalue=0x10;UartTX_Send_String("\r\nSPI Write OK!\r\n",17);//--------------------Read Data---------------FlashReadCNT(lDst,0x10,Txdata);//******¶ÁоƬµÄÊý¾Ý£¬·ÅÈëµ½TxdataÖÐ*******¶ÁÊý¾ÝµÄʱºò£¬µØÖ·Ñ°ÕÒÊǴӸߵØÖ·ÏòµÍµØÖ·Ñ°ÕÒµÄUartTX_Send_String("\r\nSPI Read OK! \r\n",17);//UartTX_Send_String(Txdata,0x10);//´®¿Ú·¢ËÍÊý¾ÝDelay(50000); //ÑÓʱGLED=!GLED; //±êÖ¾·¢ËÍ״̬ RLED=!GLED;Delay(50000);Delay(50000);}}。
TinyOS在CC2530下的移植及AODV路由协议的实现曾志宏;汤碧玉;杨琦【期刊名称】《现代电子技术》【年(卷),期】2012(035)009【摘要】In this paper, the implementation of the node hardware which takes the TI wireless sensor network chip CC253O as a core component is introduced. The operation mechanism of the TinyOS operating system and the transplant process on the CC253O platform are described. On this basics* we implement AODVCAd hoc On-demand Distance Vector) routing protocol by nesC. Finally, this system s network is tested, the results show that the platform running correctly and the AODV basic function is achieved.%首先介绍了以TI的无线传感器网络芯片CC2530为核心部件的节点硬件实现,接着介绍TinyOS操作系统的运行机制及其在CC2530平台下的移植过程;并在此基础上以nesC语言实现了AODV路由协议,最后对系统进行组网测试,测试结果表明平台各功能正常运行并且实现AODV协议的基本功能.【总页数】4页(P41-44)【作者】曾志宏;汤碧玉;杨琦【作者单位】厦门大学,福建厦门361005;厦门大学,福建厦门361005;厦门大学,福建厦门361005【正文语种】中文【中图分类】TN711-34【相关文献】1.TinyOS在CC2530上的移植 [J], 林语;张金榜;何秀春;刘军2.TinyOS在CC2530下的移植研究 [J], 张明华3.基于TinyOS的无线传感器网络AODV路由协议的实现与优化 [J], 张贝贝;王婷婷4.TinyOS在CC2530下的移植研究 [J], 张明华5.基于CC2530和TinyOS的无线通信MAC协议实现 [J], 高承志;许道峰;何纬因版权原因,仅展示原文概要,查看原文内容请购买。
CC2530开发板硬件资源详解前言进行ZigBee无线传感器网络开发,首先,需要有相应的硬件支持(尤其是需要支持ZigBee协议栈的硬件);此外还需要相应的软件支持(最好是相应的支持ZigBee协议的软件协议栈),当然,还需要下载器将程序下载到相应的硬件。
本章主要讲解硬件电路方面的设计方法。
为了让大家能够更方便地学习Zigbee,佳杰科技打造了一套本土化的高性价比学习套件。
我们的学习平台是IAR8.1 + Z-stack 2007 PRO,采用TI 公司的CC2530F256芯片。
也是目前国内最流行的且资料最全的Zigbee 学习和应用方案。
配套有《ZigBee入门与实战演练》该教程每章一个文件夹,文件夹内有教程提到的图片,程序代码,工具软件、原理图、HEX文件。
配套面上的例程也是基于本学习平台开发的,所以可以直接下载使用,有16个基础实验,以及26个组网实验。
网上所谓最全的教程资料其实更本不到我的内容的1/5. 该教程包含如下内容:第一章、Zigbee简介第二章、IAR开发环境的搭建以及一个工程的建立实例一些工具软件的安装第三章、开发板硬件资源详细介绍第四章、16个基础实验掌握CC2530第五章、Zigbee无线网络入门每个实验都有协调器终端节点的编程有些有路由器的编写,从0开始编写指的是从新建立一个.C .H一个简单的无线传输组网实验从0开始编写数据收发无线组网实验从0开始编写无线开关灯实验组网实现从0开始编写OSAL详细分析之NV操作实验从0开始编写无线串口,无线聊天程序从0开始编写与讲解无线数据采集网络从0开始编写实现空余时间睡眠功能Zigbee无线点对点组网实验Zigbee群发信息组网实验Zigbee组发信息组网实验Zigbee获得IEEE地址段地址PAN组网实验无线传感网络通用系统设计组网实验太阳能供电无线传感网络组网实验无线温度采集实验无线电灯实验基于基本的无线收发非组网信道质量检测实验非组网实验串口控制LED灯组网实验终端自动发送数据实验TI官方实验GenericAppTI官方实验SampleLight SampleSwitchTI官方实验GenericAppTI官方实验SampleAppTI官方实验SensorDemoTI官方实验SimpleAppTI官方实验SerialAppTI官方实验Transmit项目实战教程目录CC2530开发板硬件资源详解 (1)前言 (1)3.1.1 核心板硬件资源 (2)3.1.1 CC2530简介 (3)3.1.1 天线及巴伦配置电路设计 (4)3.1.2 晶振电路设计 (4)3.1.3 核心板原理图 (5)3.4.2 ZigBee模块天线选型 (12)3.1核心板硬件资源RF2530A核心板主要包括CC2530单片机、天线接口、晶振以及I/O扩展接口,RF2530A 核心板如图3-1所示。