CC2530——点对点通信
点对点通信
- 内容简介
- 代码分析
- 全部代码
- 全部头文件
内容简介
申明:下面用到的方法为basicrf封装好的,在网上下载好之后,之间include导入即可
通过ZIGBBE自组网,将俩个ZIGBBE盒进行连接,下面简称A和B
通信:A将采集到的数据通过无线发送给B,B接收后在发送给PC端模拟串口软件
代码分析
采集光照数据,将采集到的模拟量转成数字量,然后在解析数据量,转成可视化光照数据
void hal_adc_Init1(void)
{APCFG |=1; P0SEL |= (1 << (0)); P0DIR &= ~(1 << (0)); }
uint16 get_adc1(void)
{uint32 value;hal_adc_Init1(); // ADC初始化ADCIF = 0; //清ADC 中断标志ADCCON3 = (0x80 | 0x10 | 0x00); //采用基准电压AVDD5:3.3V,通道0,启动A/D转化while ( !ADCIF ){; //等待A/D转化结束}value = ADCH;value = value<< 8;value |= ADCL;// A/D值转化成电压值// 0 表示 0V ,32 768 表示 3.3V// 电压值 = (value*3.3)/32768 (V)value = (value * 330);value = value >> 15; // 除以32 768// 返回分辨率为0.01V的电压值return (uint16)value;
}
void Get_val()
{uint16 sensor_val;sensor_val=get_adc1();s[0]=sensor_val/100+'0';s[1]=sensor_val/10%10+'0';s[2]=sensor_val%10+'0';s[3]=' ';}
人体红外串口器是一个已经封装好了的,在板子上为一个引脚采集数据,如果检测到有人返回1,无人返回0
#define DATA_PIN P0_4 //定义P0_4口为传感器的输入端
int Judge(){if(DATA_PIN == 1){return 1;} return 0;}
此方法为发送数据通过无线方法
第一个参数为发送地址
第二个参数为发送数据
第三个为发送数据长度
basicRfSendPacket(SEND_ADDR,pdata,16);
此方法为判断是否接收到新的数据
basicRfPacketIsReady()
此方法为接收来自A的数据
basicRfReceive(rxbufdat,128,NULL);
此方法为将数据发送给串口
halUartWrite(rxbufdat,20);
全部代码
#include "hal_defs.h"
#include "hal_cc8051.h"
#include "hal_int.h"
#include "hal_mcu.h"
#include "hal_board.h"
#include "hal_led.h"
#include "hal_rf.h"
#include "basic_rf.h"
#include "hal_uart.h"
#include "sensor_drv/sensor.h"
#include <stdio.h>
#include <string.h>
#include <stdarg.h>/*****点对点通讯地址设置******/
#define RF_CHANNEL 17 // 频道 11~26
#define PAN_ID 0x1826 //网络id //#define MY_ADDR 0x2222 //本机模块地址
//#define SEND_ADDR 0x1111 //发送地址
#define MY_ADDR 0x1111 //本机模块地址
#define SEND_ADDR 0x2222 //发送地址
#define DHT11_DATA_IN st(P1DIR &= ~(DHT11_DAT_BV);)
#define DHT11_DATA_OUT st(P1DIR |= DHT11_DAT_BV;)
#define DHT11_DATA P1_7
#define DHT11_DAT_BV BV(7)/**************************************************/
static basicRfCfg_t basicRfConfig;
// 无线RF初始化
void ConfigRf_Init(void)
{basicRfConfig.panId = PAN_ID;basicRfConfig.channel = RF_CHANNEL;basicRfConfig.myAddr = MY_ADDR;basicRfConfig.ackRequest = TRUE;while(basicRfInit(&basicRfConfig) == FAILED);basicRfReceiveOn();
}#define D3 P1_0
#define D4 P1_5
#define D5 P1_3
#define D6 P1_4
#define DATA_PIN P0_4 //定义P0_4口为传感器的输入端
uint8 buff[10],rxbuf[10],rxbufdat[16];
char Txdata[1];
char s[6];//定义一个数组的大小为6
char TipsString[10];
void hal_adc_Init1(void)
{APCFG |=1; P0SEL |= (1 << (0)); P0DIR &= ~(1 << (0)); }
uint16 get_adc1(void)
{uint32 value;hal_adc_Init1(); // ADC初始化ADCIF = 0; //清ADC 中断标志ADCCON3 = (0x80 | 0x10 | 0x00); //采用基准电压AVDD5:3.3V,通道0,启动A/D转化while ( !ADCIF ){; //等待A/D转化结束}value = ADCH;value = value<< 8;value |= ADCL;// A/D值转化成电压值// 0 表示 0V ,32 768 表示 3.3V// 电压值 = (value*3.3)/32768 (V)value = (value * 330);value = value >> 15; // 除以32 768// 返回分辨率为0.01V的电压值return (uint16)value;
}
void Get_val()
{uint16 sensor_val;sensor_val=get_adc1();s[0]=sensor_val/100+'0';s[1]=sensor_val/10%10+'0';s[2]=sensor_val%10+'0';s[3]=' ';}
int Judge(){if(DATA_PIN == 1){return 1;} return 0;}
uint8 pdata[16] = {0};
extern uint8 DHTStr[4];
extern void Read_DHT11(void);
/********************MAIN************************/
void main(void)
{//波特率115200halBoardInit();//选手不得在此函数内添加代码ConfigRf_Init();//选手不得在此函数内添加代码P1SEL&=~0x39;P1DIR|=0x39;D3=D5=D6=0;D4=0;uint16 count = 0;uint16 sensor_val;int FlagStatus = 0;//需要手动更改,以此来改变节点A的状态while(1){ if(FlagStatus == 1){//接收来自串口的数据/************温湿度数据***************/Read_DHT11();pdata[0] = (char)(DHTStr[0]/10)+0x30;pdata[1] = (char)(DHTStr[1]%10)+0x30;pdata[2] = '-';pdata[3] = (char)(DHTStr[2]/10)+0x30;pdata[4] = (char)(DHTStr[3]%10)+0x30;pdata[5] = ' ';/************光照加人体***************/ sensor_val=get_adc1();pdata[6]=sensor_val/100+'0';pdata[7]=sensor_val/10%10+'0';pdata[8]=sensor_val%10+'0';pdata[9]=' ';pdata[10] = '-';pdata[11] = ' ';if(Judge() == 1){pdata[12] = 'y';pdata[13] = 'e';pdata[14] = 's';pdata[15] = '\n';}else{pdata[12] = 'n';pdata[13] = 'o';pdata[14] = 't';pdata[15] = '\n';}basicRfSendPacket(SEND_ADDR,pdata,16); }else if(FlagStatus == 0){if(basicRfPacketIsReady()){halMcuWaitMs(1000);basicRfReceive(rxbufdat,128,NULL); halUartWrite(rxbufdat,20);}} } halMcuWaitMs(1000);}
全部头文件
|---common
| |---hal_cc8051.h --- MCU 输入输出宏定义
| |---hal_defs.h --- 通用定义
| |---hal_mcu.c --- MCU函数库
| |---hal_mcu.h --- MCU函数库定义
| |---hal_clock.c --- 函数库
| |---hal_clock.h --- MCU函数库定义
| |---hal_digio.c --- 输入输出中断函数库
| |---hal_digio.h --- 输入输出中断函数库定义
| |---hal_adc.c --- ADC函数库
| |---hal_adc.h --- ADC函数库定义
| |---hal_int.c --- 中断函数库
| |---hal_int.h --- 中断函数库定义
| |---hal_rf.c --- 无线函数库
| |---hal_rf.h --- 无线函数库定义
| |---hal_rf_security.c --- 无线加密函数库
| |---hal_rf_security.h --- 无线加密函数库定义
| |---hal_rf_util.c --- 无线通用函数库
| |---hal_rf_util.h --- 无线通用函数库定义
| |---hal_timer_32k.c --- 32K定时器函数库
| \---hal_timer_32k.h --- 32K定时器函数库定义
|
|---basicrf
| |---basic_rf.c --- 基本无线函数库
| |---basic_rf.h --- 基本无线函数库定义
| |---basic_rf_security.c --- 基本无线加密函数库
| \---basic_rf_security.h --- 基本无线加密函数库定义
|
\---utils
| |---util.c --- 工具函数库
| \---util.h --- 工具函数库定义
|
\---board
| |---hal_board .c --- ZIGBEE模块上的资源初始化函数
| |---hal_board .h --- ZIGBEE模块上的资源初始化函数库的定义
| |---hal_led.c --- ZIGBEE模块上关于LED的函数
| |---hal_led.h --- ZIGBEE模块上关于LED的函数库的定义
|
\--- module
| |--- dma_ad590.c --- 模拟温度传感器函数库
| |--- dma_ad590.h --- 模拟温度传感器函数库的定义
| |--- dma_bma.c --- 重力传感器函数库
| |--- dma_bma.h --- 重力传感器函数库的定义
| |--- dma_dc.c --- 直流电机函数库
| |--- dma_dc.h --- 直流电机函数库的定义
| |--- dma_eeprom.c --- eeprom函数库
| |--- dma_eeprom.h --- eeprom函数库的定义
| |--- dma_imc.c --- 人体传感器函数库
| |--- dma_imc.h --- 人体传感器函数库的定义
| |--- dma_m4.c --- 光敏/光电传感器函数库
| |--- dma_m4.h --- 光敏/光电传感器函数库的定义
| |--- dma_tc72.c --- 数字温度传感器函数库
| |--- dma_tc72.h --- 数字温度传感器函数库的定义
| |--- dma_tgs.c --- 酒精传感器函数库
| |--- dma_tgs.h --- 酒精传感器函数库的定义
| |--- dma_sht.c --- 温湿度传感器函数库
| |--- dma_sht.h --- 温湿度传感器函数库的定义
| |--- dma_itg.c --- 陀螺仪传感器函数库
| |--- dma_itg.h --- 陀螺仪传感器函数库的定义
| |--- dma_kr.c --- 可燃气体传感器函数库
| |--- dma_kr.h --- 可燃气体传感器函数库的定义
| |--- dma_tgs2602.c --- 气体质量传感器函数库
| |--- dma_tgs2602.h --- 气体质量传感器函数库的定义
CC2530——点对点通信相关推荐
- cc2530点对点通信c语言,CC2530 RF部分使用 ——实现点对点收发
__interrupt void rf_isr(void) { EA =0; // 接收到一个完整的数据包 if(RFIRQF0&(1<<6)) { rf_receive_isr( ...
- 纳维斯托克方程_托克如何检验其网络安全性
纳维斯托克方程 The global commodities trading firm replicated the NotPetya worm, strengthened it and then u ...
- 黑客入侵 应用程序无法启动_被黑客入侵如何启动我的网络安全职业
黑客入侵 应用程序无法启动 I've always been fascinated by how other Cybersecurity professionals ended up in their ...
- Instant Contiki 安装笔记——SDCC和CC2530
1.前言 [更多contiki和物联网笔记请参考--物联网学习笔记--索引博文] [如果您使用的Instant Contiki版本为2.7 请忽略此文,Instant Coniti2. ...
- ZigBee(CC2530)最小系统PCB设计(AD18开发软件)
CC2530最小系统的PCB图,可以直接打样的,经过测试无障碍点对点通信距离100m+. 效果图如下: PCB下载地址: https://download.csdn.net/download/m0_3 ...
- CC2530学习路线-基础实验-串口通讯发送字符串(4 未完待续)
目录 1. 前期预备知识 1.1 串口通讯电路图 1.2 实验相关寄存器 1.2 常用波特率设置 本章未完待续..... 原来写的文章已经丢失了,只能找到这一小部分,看什么时候有时间再补上. 1. 前 ...
- ZigBee TI ZStack CC2530 2.4 IAR软件版本
(配套源码.软件.开发板等资源,可移步博客同名QQ群/TB店铺:拿破仑940911) 一.IAR IAR,全称IAR Systems.公司总部位于北欧的瑞典,在美国.日本.英国.德国.比利时.巴西和中 ...
- CC2530中常用的控制寄存器
CC2530中常用的控制寄存器 https://wenku.baidu.com/view/e14376dc5fbfc77da269b1cc
- CC2530的串口实验
CC2530的串口实验主要有编程主要有一下几个步骤: 一.串口初始化函数(设置时钟频率-->选择用来当做串口的IO-->设置波特率-->发送中断设为0) 二.字符串发送函数(U0DB ...
- TI CC2530的BasicRF与Zstack的同与异(重点讲了MAC层)
TI CC2530的BasicRF与Zstack的同与异 博主我研究了BasicRF与Zstack协议栈的底层,现将其相同点与区别总结如下,以方便大家选择BasicRF还是Zstack进行研究与开发. ...
最新文章
- Linux netstat查看网络连接信息
- 网络安全:HTTP Host 头攻击相关知识介绍
- 使用dubbo后尽量不用要@Reference可能引起冲突
- 使用ORACLE生成随机数
- arraylist扩容是创建新数组吗 java_Java集合干货——ArrayList源码分析
- 吴恩达机器学习总结四:Octave语法
- MATLAB实现三边定位
- 入门神经网络优化算法(五):一文看懂二阶优化算法Natural Gradient Descent(Fisher Information)
- simulink 快捷键 运行_高效使用simulink
- 【Python入门教程】第45篇 集合的并集
- Markdown 全文检索
- eclipse IED的优化(gc.log)
- mysql对比时间段百分比_如何使用MySQL计算每日最高价格变化百分比?
- LDA的python实现之模型参数训练
- mathtype免费版下载及序列号获取地址
- MongoDB同步到ES
- VPC对等连接(VPC Peering)
- HashMap和Hashtable中的hash值是怎么计算的
- xilinx 账户申请以及vivado 安装
- 【云盒子企业网盘】安全又便捷的桌面书签你想拥有吗?
热门文章
- spring security中A granted authority textual representation is required
- 1.17英文题面翻译
- 新浪短连接(t.cn)在线生成工具
- AR和VR,有哪些知名的开源平台
- android 手机 用短信发pdf文件,iPhone如何将PDF通过短信邮件发给别人【仅限iPhone6/6s】...
- java excel 密码,Java 加密、解密Excel文档
- Excel VBA为表格设置“打开文件密码”
- Python中Oracle的连接、增删改查
- python怎么更新sp2_GitHub - Sp2-Hybrid/Python-100-Days: Python - 100天从新手到大师
- 程序猿生存指南-63 贪心姑娘