RF无线收发模块设计
2.4G无线数传模块电路

2.4G无线数传模块电路2.4G无线模块概述2.4G无线模块(英文:2.4Ghz RF transceiver ,receiver module)工作在全球免申请ISM频道2400M-2483M范围内,实现开机自动扫频功能,共有50个工作信道,可以同时供50个用户在同一场合同时工作,无需使用者人工协调、配置信道。
同时,可以根据成本考虑,选择50米内、150米、600 米多种类型无线模块。
接收单元和遥控器单元具有1键自动对码功能,数字地址编码,容量大,避免地址重复。
VT-CC2510-M1 无线模块采用TI chipcon高性能无线SOC芯片CC2510开发。
是一种完整的低成本、高度集成2.4GHz收发器,专为低功耗无线应用设计。
基本特点·高性能和低功耗的8051微控制器核·2400-2483.5MHz 低成本低功耗无线收发模块·SMD元件24mm×29mm×2.2 mm,内置PCB天线,体积小·支持2-FSK/GFSK/MSK·可编程控制的输出功率,对所有的支持频段可达+1dBm·可灵活配置多种通讯信道,快速频点切换特点,可满足跳频系统的需要·可编程配置传输数率1.2k - 500 kbps·低功耗3.3V 供电·RSSI输出和载波侦听指示几种2.4G无线数传模块介绍无线数传按传输速率区分,分为低速数传模块和高速数传模块两大类,低速数传模块使用的载频均较低,一般都在315MHz,433MHz和915MHz这几个频段,所以一般最高传输速率均不大于150kB/s。
但这些使用在UHF频段无线设备,载波仍具有一定的穿透和绕射能力,传送距离相对较远,最大可达数百米,这是它的优势,但同时也有其固存的缺点,因为工作频率低,工业干扰大,同时大量的汽车无线遥控(锁)均使用这个频段,干扰相对严重,这在技术上严。
UHF/FM/FSK无线电收发电路设计

电 子工程 师
D 8ⅣO 3 20 2 . 0 2
UHF FM / S 无 线 电 收 发 电 路 设 计 F K
De i n o sg fUHF F / S Ra i r n mi e n e ev r M F K d oT a s t ra d R c ie t
3 3 使 能模 式 .
在 发 射 电 路 中 , 开 关 S l和 S 2处 于 断 开 当 W W 状 态时, CMxO 1 7处 于 “ 眠 模 式 ” 芯 片 电 流 消 耗 睡 ,
5 结 束 语
实 验 表 明 , 用 C X0 7和 C X0 8芯 片 构 成 使 M 1 M 1
0 时 , 益 被 减 少 2 d m V 增 0B 在 接 收 电 路 中, CM X0 8 的 低 噪 声 放 大 器 l
( NA) 增 益 利 用 开 关 S 2控 制 , 开 关 断 开 时 , I 的 W 当 I A 处 于 高 增 益 模 式 . 开 关 导 通 时 当 I NA 处 于 低
脚 、 号 和 功 能 如 表 l所 示 符
表 1 CMO 芯 片各 引 脚 、 号 和 功 能 l 7 符
j脚 l 1
3
符号 V c c3 GAI N
GNI ]
功 能 第 一 缓 功 率 放 大 器 电 源 增 益 控 制
地
l 脚 1 5 1 6
2 5
2 6 2 7
V CC 1
W ADEC GA【 El NS
低 噪音 放 大 器 输 ^
输 ^ 放 大 器 去 耦 增 益 设 置
1 4
RS I S
接 收 信 号 强度 指 示 器
2 8
采用RF401的嵌入式信息家电无线通信接口设计

1 R 4 l 线 通 信 模 块 F0 无
R 41 F 0 无线 通 信 ( 收发 ) 模块 是 哈尔 滨 迅 通 电子 公 司 代理 开 发 的产 品 , 核 心 是 挪 威 N ri 司推 出 的 其 od c公 n F 0 芯 片 .R 4 1 一个 2 R 41 n F0 在 0脚 的 芯 片 中集 成 了高 频 发 射/ 收 、 L 接 P L合 成 、 S F K调 制/ 调 和 多 频 道 切 换 解 等 功能 , 在低 成 本数 字 无线 通信 应 用 中具有 突 出的技 术 优 势 , 主要 技 术 特 点 有 :1 工作 在 国际 通 用 的 I S 其 ) M 数传 频 段 的两个 频 道 ( 3 .2MH 4 3 9 z和 4 4 3 z , 用 高 接 收灵 敏度 ( 0 B 和 小 发射 功 率 ( B 3 .2MH ) 采 一15d m) 5d m~ 1 B 设 计 策 略 . 0d m) 在发射 功 率 为 8d m时 , 内通 信距 离 >2 室外 开 阔地 >10 m, 环 境 影 响 极 小 , B 室 0 m, 0 对 无 须进 行 频道 申请 即可使 用 . ) 2 采用 D S L S +P L频率 合 成技 术 , 接元 件 仅 1 晶振 和 几个 阻 容 、 外 个 电感 , 本 无 基 需调 试 就能 工作 , 稳 定性 良好 . ) 字通 信采 用 具 有高 抗 干扰 能 力 的 F K调 制 方式 , 且 3数 S 支持 直 接数 据 输 入 输 出操 作 , 直接 与 MP 可 U的 U R A T串行 口连接 . ) 2个可 选 择 的工 作 频 道 , 用 半 双 工 工 作 模 式 , 高 数 据 4有 采 最 传输 速 率 可达 2 b s 5 工作 电压 为 2 7V~5V, 机状 态耗 电仅 为 8 , 满 足低 功耗 设 备 的要求 . 0K / . ) . 待 能 采 用 了 n F 0 芯 片 的 R 4 1 T R 0 0 线 通 信 模 块 把 引 线 减 少 到 7根 , 分 别 设 计 了棒 形 和 环 形 天 R41 F0/P 20无 并 线. 使用 该 无线 通信 模 块 时无须 进行 复 杂 的射 频线 路 设计 和 调试 , 无 线 通信 产 品 的开 发应 用 更 为便捷 . 使
基于nRF24L01的无线通信模块设计报告正文

1前言本次我们三人小组设计的是无线通信模块,根据设计要求我们选择了无线收发模块nRF24L01、单片机STC89C52、LCD1602和键盘模块等作为本次设计的硬件需求。
首先我们与老师一起讨论了一些设计的相关事宜和设计思路。
接下来我们一起画好了模拟电路图,在老师的帮助下我们对电路图进行了补充和完善。
完成这些基本工作后,在老师和同学的帮助下我们买回了自己所需的元器件。
接着我们变分工完成了元器件的焊接连接和程序的编写,然后便是模块的上电调试,设计的答辩和设计报告的完善。
我们本次之所以会选择无线通信模块的设计,是我们觉得无线通信技术是现代社会中一门很重要的技术,我们掌握好了这门技术对以后我们的工作生活都有很大的帮助。
我们本次设计的无线通信模块虽然只是我们的一次小小的体验,但我们都知道无线通信在我们现在所处的信息时代是多么的重要,如今我们生活的方方面面无不与无线通信息息相关。
我们所熟悉的手机、电脑、电视等等都与无线通信有着直接的联系。
甚至在某些高端领域方面无线通信技术能反映一个国家的科技水平和综合国力。
我们国家的无线通信技术虽然在世界上排在了前面的位置,但与一些发达国家相比我们任然有很大差距,如太空中有差不多80%的通信卫星是美国的。
当然我们本次设计的无线通信模块只是很基础的无线通信模块,我们所达到的效果就是两个模块间能相互发送一些简单的字符和数字。
2总体方案设计本次设计我们考虑用C语言和汇编去实现模块的无线通信功能,但我们编写程序时发现汇编语言较难写且可读性差,因此我们选择了用C语言作为本次的软件实现。
要实现无线通信功能,我们选择了小巧轻便的无线收发模块nRF24L01。
在单片机方面考虑到52系列优于51系列且很好购买,我们选择了STC89C52单片机。
在液晶显示上,我们只要求能显示一些简单的数字和字母,我们选择了LCD1602。
键盘输入方面我们选择的是4×4矩阵键盘。
以上各模块的功能信息在后面都有更为具体的介绍。
WiFi产品的一般射频电路设计

WiFi产品的一般射频电路设计(General RF Design In WiFi Product)第1章. 射频设计框图图1-1 Wi-Fi产品的一般射频设计框图如图1-1所示,一般Wi-Fi产品的射频部分由五大部分组成,蓝色的虚线框内统一看成是功率放大器部分。
无线收发器(Radio Transceiver)一般是一个设计的核心器件之一,除了与射频电路的关系比较密切以外,一般还会与CPU有关,在这里,我们只关注其与射频电路相关的一些内容。
发送信号时,收发器本身会直接输出小功率的微弱的射频信号,送至功率放大器(Power Amplifier,PA)进行功率放大,然后通过收发切换器(Transmit/Receive Switch)经由天线(Antenna)辐射至空间。
接收信号时,天线会感应到空间中的电磁信号,通过切换器之后送至低噪声放大器(Low Noise Amplifier,LNA)进行放大,这样,放大后的信号就可以直接送给收发器进行处理,进行解调。
第2章. 无线收发器如图2-1中,有几个电源管脚,数字地,模拟地,射频输出,功率放大器增益控制,功率检测,温度检测,射频输入,低噪声放大器增益控制,发射、接收切换等管脚。
图2-1 一般的无线收发芯片(射频电路设计相关)2.2. 差分射频信号的处理2.2.1. 收发器本身具有的管脚图2-2 收发器的射频输入与输出管脚这里必须指出的是,Atheros的收发器一般会同时对输入与输出做差分处理。
但是Ralink 一般要求外部输入的信号是差分的,而自身输出的射频信号则不是差分的。
图2-3射频信号则不是差分的处理方式2.2.2. 收发器发送的差分信号平衡器通常用来处理差分信号的问题,电感和电容都能够改变信号的相位,从差分信号到单端信号,基本的方法就是用电感和电容组成两条不同的通路,这样,经过处理电路的两路信号就在相位上相差了180°,从而可以使原本相位相差180°的差分信号同相,得到单端信号。
MICERF007组成的无线接收电路图

MICERF007组成的无线接收电路图MICERF007组成的无线接收电路图无线接收电路如图所示,电路以MICRF007为核心。
MICRF007是Micrel公司推出的单片UHF ASK/OOK(导通-关断键控)超外差无线电接收芯片。
MICRF007采用SOP(M)-8封装,芯片内电路可分为UHF下变换器、OOK解调器和基准控制三部分。
UHF下变换器包含RF放大器、混频器、中频放大器、带通滤波器、峰值检波器、合成器、AGC控制电路;OOK解调器包含低通滤波器、比较器;基准控制电路包含基准振荡器和控制逻辑电路。
仅需外接2个电容器CAGC和CTH,1个晶振以及电源去耦电容即可构成1个UHF ASK接收器,所有的RF 和IF调谐都在芯片内自动完成,是一个真正"无线输入-数据输出"的单片器件。
MICRF007是标准的窄 RF带宽的超外差接收器,窄带宽接收器对RF干扰信号不敏感。
RF中心频率由完全集成的PLL/VCO频率合成器控制,与基准振荡器外接晶振有关。
中频带通滤波器的带宽为430 kHz,基带解调器的低通滤波器带宽为2.1 kHz。
接收数字ASK信号,接收器数据传输率为2 Kb/s。
使用中应注意的是:(1)MICRF007是一个窄带宽接收器,要求发射电路必须使用SAW或晶振稳频。
(2)如果接收器处于高噪声环境,在天线ANT 端和VSS之间可以连接一个固定数值的带通网络,以提供接收选择性和输入过载保护。
(3)基准振荡器可通过REFOSC端(引脚8)外接晶振或输入时钟信号。
基准振荡器的频率fT是外接晶振频率的64.5倍。
对于超外差接收器本机振荡频率fLO和发射频率fTX的差值必须等于中频的中心频率。
因此,发射器的频率fTX(即接收器接收频率)、基准振荡器频率fT和本机振荡器频率fLO的关系为:fT = fLO/64.5,fLO = fTX±(1.064fTX/390)。
(4)SHUT端(引脚6)控制接收器使能,当SHUT端电压VSHUT为高电平时,芯片进入低功耗待机模式,电流消耗仅为0.5μA;当VSHUT为低电平(下拉到地)时,芯片使能,为接收状态。
基于RF的智能家居无线通信网络系统设计

l i f e o f s ma r t h o me i n t h e e r a o f I n t e r n e t o f Th i n g s . K e y wo r d s :s ma r t r e s i d e n c e ; wi r e l e s s RF mo d u l e ; S P 1 i n t e r f a c e ;S i 4 4 2 1
人 可 以体 验 物 联 网智 能家 居 给 生活 带 来 的 乐趣 和便 利 。
和智能化程度要求越来越高 , 享 受 物 联 网 智 能 家居 生 活 已
成 为趋 势 。早 期 的 智 能 家 居 产 品通 过 综 合 布 线 等 方 式 实 现 家 庭 内部 各 种 电气 设 备 和 电子 系 统 的 连 接 口 ] , 来 达 到 对
1 无 线通 信 网络 系统 总 体 设 计
图 1为 基 于 R F 的 智 能 家 居 无 线 通 信 网 络 系 统 的 总
体结 构图 , 系统 主 要 分 为 两 部 分 , 即安 装 在 无 线 网 关 上 的
RF服务 器 和安 装 在各 家 电 设 备 上 的 RF终 端 设 备 。无 线 网关 可 以通 过 安 装 在 自身 的 W i Fi 模 块 接 收 由 平 板 电 脑 或 者 是 智 能 手 机 下 发 的功 能 控 制 或 状 态 查 询 命 令 编 码 , 再 按
家居 生 活 。
关 键 词 :智 能 家 居 ; 无 线 RF 模 块 ; S P I 接 口; S i 4 4 2 1
中 图分 类 号 :TWi r el es s Co m mu n i c a t i o n Net wor k Sy s t em Ba s ed o n RF i n Sm a r t Res i d e n c e
基于RF的无线数据传输系统的设计的开题报告

基于RF的无线数据传输系统的设计的开题报告一、课题背景及意义随着物联网、移动互联网等技术的快速发展,无线通信技术在各个领域都得到了广泛应用,特别是在智能家居、智能医疗、智能交通、农业监测等领域,更是需要具备低功耗、远距离传输、高速传输、抗干扰等特点的无线数据传输技术支持。
基于RF的无线数据传输系统满足了这些需求,因此在现代化生产生活中广泛应用,成为新一代无线通信技术的重要组成部分。
本课题旨在设计基于RF的无线数据传输系统,通过对系统的设计、实现及测试验证,为国内外企业提供可靠的基于RF的无线数据传输解决方案。
二、研究内容1. RF无线通信原理的研究;2. 基于RF的无线数据传输系统的设计;3. 系统硬件及软件的实现;4. 系统性能测试及数据分析。
三、研究方法1. 文献调研法:收集国内外RF无线通信技术的研究成果,深入了解基于RF的无线数据传输系统的技术原理、研究现状和发展趋势;2. 系统设计法:通过对基于RF的无线数据传输系统的功能和性能的要求,构建系统的功能模块、数据传输方式、数据地图等关键要素的设计方法;3. 系统实现方法:根据设计的模块,利用模块化设计原则和现有的通信模块、传感器等硬件元件,完成系统硬件及软件的实现;4. 系统测试方法:通过实验室里的测试设备,分别测试系统的数据传输速率、通信距离、稳定性等性能指标,并对测试数据进行分析。
四、预期成果1. 完成基于RF的无线数据传输系统的设计和实现;2. 验证系统在不同场景下的性能指标;3. 提供基于RF的无线数据传输解决方案,为厂商和企业提供参考。
五、进度安排1. 2月:完善开题报告,包括调研和系统设计;2. 3-5月:系统实现和功能测试;3. 6月:性能测试及数据分析;4. 7月:论文撰写和答辩准备。
六、存在的问题及后续建议本课题研究难度较大,需要投入大量的时间和精力。
其中如PCB设计以及不同硬件模块的连接互通等,都需要专业的硬件设计人员。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
无线收发模块的设计一、设计方案为了能实现数据通过无线方式进行传输的目的,采用hopeRF公司的无线单片收发IC RF12完成无线收发功能。
为了能对RF12进行控制,采用ATMEL公司单片机AVRMEGA48对RF12进行控制,为了与PC机连接方便,采用了沁恒公司的USB转串口电路CH340与单片机相连。
系统结构示意图如下:二、电路设计RF12电路设计2.1.1 RF12功能简介RF12是通用ISM频段的FSK发送接收集成单片电路,低功耗,多通道,可以工作在免许可的433,868和915MHz频段。
RF12首发电路为需要外部很少器件的集成电路,具有低成本,柔韧性好的高度集成的解决方案。
芯片集成所有射频要求功能,完整的模拟射频部分和数字基带收发部分,多频段PLL频率合成器,射频功率放大器PA,低噪声放大器LNA。
正交(I/Q)下变频混频器,基带滤波器和基带放大器,和正交(I/Q)解调器。
唯一需要的外部器件就是外部晶振和带同滤波器。
RF12具有一个全集成的PLL,便于射频设计,它的快速设定时间可以用于快速调频,对于多路径衰落信道可以获得强健的无线连接。
PLL的高分辨率允许在任一频段进行多信道应用。
接收部分的基带滤波带宽(BW)是可编程的,以可以包纳各种偏差,数据速率和晶振偏差的要求。
接收部分应用了零中频方法,该方法采用了正交解调技术。
同样在大多数应用中不需要外部器件(除了晶振和耦合电路)。
RF12通过集成的数字信号处理特性:数字滤波,时钟恢复,数字判决,集成的FIFO和发送数据寄存器(TX data register),显著的减小了微处理器的负担。
自动频率控制特性允许使用低精度(低成本)晶振。
对于低功耗应用,RF12支持基于内部唤醒定时器的小占空比的周期工作模式。
功能模块框图2.1.2RF12电路设计在设计中采用RF12接收部分采用片内数字滤波器来提取接收数据流的位时钟方案,通过SPI接口设置工作参数,发送数据和接收数据。
频带设计为433MHz,射频匹配滤波电路根据生产商提供的资料设计电路如下:、RF112与单片机Mega48接口设计Mega48单片机通过SPI接口与RF12相接,系统图如下:由于SPI接口是单片机在线编程的下载口,同时又是与RF12的通信接口,为了在下载时不受RF12的影响,特在SPI接口与RF12接口之间通过电阻进行隔离。
转传串口电路设计:CH340集成电路可以完成USB转串口的功能,PC机的驱动程序有沁恒公司提供,在PC上的界面与串口通信界面相同,根据厂家提供的参考电路设计如下:UART---USB射频参数计算、RF12的工作原理:RF12为单片无线收发芯片,接收部分为采用正交解调的零中频技术,片上集成有基带低通滤波器,其带宽可程序控制,达到减低噪声系数的目的,同时还具有频率自动控制功能,以离散步进方式使得本振频率与发射机的载波频率差最小。
对于RF12的应用需要根据接收信号的特性需要对基带滤波器的代换进行计算。
、正交零中频解调原理及低通滤波器带宽的计算:接收机结构如下图所示:设射频输入信号为:s(t)=Acos(ω0t+(-1)DΔωt);本振信号为:L(t)=cos(ωL t+φ)通过正交下变频器:I(t)=s(t)×L(t)=A{cos(ω0t+(-1)DΔωt-ωL t-φ)+ cos(ω0t+(-1)DΔωt+ωL t+φ)}/2Q(t)=s(t)×sin(ωL t+φ)=A{sin(ω0t+(-1)DΔωt-ωL t-φ)+ sin(ω0t+(-1)DΔωt+ωL t+φ)}/2通过低通滤波器有:Ib(t)=Acos(ω0t+(-1)DΔωt-ωL t-φ)/2Qb (t)=Asin(ω0t+(-1)DΔωt-ωL t-φ)/2当ω0=ωL,φ=0时有:Ib(t)=Acos((-1)DΔωt)/2Qb (t)=(-1)D Asin(Δωt)/2当D=0时Ib和Qb构成正方向旋转向量,标识为频偏大于零;判读为0或1当D=1 时Ib和Qb构成反方向旋转向量,标识为频偏小于零;判读为1或0.在这里对于码元宽度为T,频偏为Δω,那么低通滤波器的带宽不应小于:Δω+2∏/T当考虑到本振与信号载波的偏差,滤波器的带宽应包含:频偏,数据速率和频率误差。
RF12的命令RF12的命令通过SPI口发送,共有15条命令:对于部分命令说明如下: 频率设置命令12位参数F 取值在96到3903之间,当送入的F 值在范围之外,以前的F 数据任然被保留。
频率合成器的中心频率f0可以计算如下: f0 = 10 * C1 * (C2 + F/4000) [MHz] 常数C1和C2由所选择频段确定:数据速率命令在发射模式中发送数据的实际位速率和接收模式中接收数据期望的位速率通过7位参数R(bits r6 to r0)和cs 位确定。
BR = 10000 / 29 / (R+1) / (1+cs*7) [kbps] 在接收部分根据下面的函数设置R 参数:R= (10000 / 29 / (1+cs*7) / BR) – 1, 这里BR 是期望的位速率kbps 。
除了设定客户数值外,标准位速率可以很小的误差设定从600bps 到 数据数率精度要求:在慢模式恢复时钟:ΔBR/BR < 1/(29*Nbit)在快模式恢复时钟:ΔBR/BR < 3/(29*N bit )BR 是在接收机设置的位速率,ΔBR 是发射机与接收机之间的数率偏差。
Nbit 是在数据流中最大的连续1或0的个数。
建议在长数据包中要包含足够多的1/0或0/1的变换,并在接收机和发射机中小心应用相同的分频比。
发送设置命令:位8-4 (mp, m3 to m0):FSK 调制参数为:导致输出的频率为: fout = f 0+ (-1)SIGN * (M + 1) * (15 kHz) 这里:f0 为信道的中心频率(见频率设置命令)M is思维二进制数:<m3: m0>SIGN = (mp) XOR (Data bit)控制接口时序:对RF12的命令以串行方式发送。
只要当引脚nSEL信号为低逻辑电平,在SDI引脚上的数据在引脚SCK上的时钟信号的上升沿被移入器件。
当nSEL信号为高,接口被初始化。
所有命令由命令码,后跟可变数量的参数或数据位构成。
所有数据以高位先发送(例如对于16位命令的第15位)。
用X标识的位没有影响。
上电复位(POR)电路所有控制寄存器和命令寄存器设置默认值。
当下列事件发生,接收机通过将nIRQ引脚拉低对微处理机产生一个中断请求:TX寄存器准备接收下一个字节(RGIT)FIFO已经接收到程序设定的位数量(FFIT)上电复位(POR)FIFO溢出(FFOV)/TX寄存器覆盖(RGUR)唤醒定时器溢出(WKUP)在中断输出引脚nINT有负脉冲(EXT)电源电压低于设定的电压(LBD)当FIFO许可时FFIT和FFOV才能应用。
当TX寄存器许可时RGIT和RGUR才能应用。
通过读出状态位来识别中断源。
控制接口的时序图调试方法:对于发射功能调试的方法为采用频谱分析仪测量RF12的发射功率和频率,调试系统结构示意图如下:接口PC机通过USB口发送命令使无线模块工作在不同的通道上,连续发射,来观察整个频段的功率大小分布,频率精度等情况,以检验是否工作正常。
天线的制作:采用四分之一波长的天线,设计过程主要计算天线的尺寸,关键是调试其阻抗,调到50欧姆。
截取略长与四分之一波长硬铜线20CM,与50欧姆同轴电缆芯线焊接。
通过微波网络分析仪测量天线的驻波比,用手钳对天线顶端小心剪截,改变天线长度,使其驻波比最小即可。
单片机程序设计:两个模块分别通过USB口与PC机连接,PC机上运行串口调试程序,两台PC可以互相收发数据,下面是单片机程序:////////////////////////////////////////////////////// 芯片采用mega48,时钟采用外部晶振11.0592M ////连线图mega48 RFM12 //// (PB5)SCK ——> SCK// (PB3)MOSI ——> SDI// (PB4)MISO ——> SDO //// (PB2)SS ——> nSEL //// (PD2) ——> nIRQ// 编译器用CodeVisionAVR C Compiler //////////////////////////////////////////////////////#include<>#include<>typedef unsigned char uchar;typedef unsigned int uint;#define SDI#define SDO#define SCK#define nSEL#define nIRQ#define LEDvoid Init_RF12(void);void Write0(void);void Write1(void);void WriteCMD(uint CMD);void WriteFSKbyte(uchar *ptr,uchar num);void uart0_init(void);void INT0_init(void);uchar RF12_RDFIFO(void);//ucharmes[]={0xAA,0xAA,0x2D,0xD4,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C, 0x3D,0x3E,0x61,0xAA};//eeprom uchar mes1[25];uchar mes[50]={0xAA,0xAA,0x2D,0xD4};uchar RF_RXBUF[50];uchar i=0,j=0,t=0;uchar flag1=0,flag2=0;uchar tempdata;void Init_RF12(void){DDRB=0x2c;DDRD=0x42;=1;nSEL=1;SDI=1;SCK=0;WriteCMD(0x80D8);//EL,EF,433Mband,WriteCMD(0x82D8);//turn on crystal,!PAWriteCMD(0xA640);//434MHz// WriteCMD(0xAE10);//439M// WriteCMD(0xA9B0);//436.2MWriteCMD(0xC647);//WriteCMD(0x94A0);//VDI,FAST,134kHz,0dBm,-103dBm WriteCMD(0xC2AC);//AL,!ml,DIG,DQD4WriteCMD(0xCA80);//FIFO8,SYNC,!ff,DRWriteCMD(0xCA83);WriteCMD(0xC49B);//@PWR,NO RSTRIC,!st,!fi,OE,ENWriteCMD(0x9850);//!mp,9810=30kHz,MAX OUTWriteCMD(0xE000);//NOT USEWriteCMD(0xC80E);//NOT USEWriteCMD(0xC000);//,}void main(){Init_RF12();uart0_init();//INT0_init();delay_us(10);#asm("sei");while(1){if(flag1){#asm("cli");LED=0;flag1=0;WriteCMD(0x8228); //OPEN PAdelay_us(4);WriteCMD(0x8238);#asm("nop");#asm("nop");WriteFSKbyte(mes,i+4);delay_ms(10);WriteCMD(0x8208); //CLOSE PALED=1;i=0;#asm("sei");}WriteCMD(0x82D8);WriteCMD(0xCA83);if(!nIRQ){ LED=0;//WriteCMD(0xCA83);RF_RXBUF[t++]=RF12_RDFIFO();//tempdata=RF_RXBUF[t--];//if(tempdata=='a')if(RF_RXBUF[t-1]==0x61){flag2=0;WriteCMD(0xCA80);for(j=0;j<t-1;j++){while(!(UCSR0A&(0x20)));UDR0=RF_RXBUF[j];}t=0;LED=1;// #asm("sei");}} /**/// }//WriteCMD(0x82D8);}}void uart0_init(void){UCSR0A = 0x00; //使用波特率不倍增,不使用多从机模式UCSR0C = 0x06; //异步串口模式,禁止奇偶校验,1位停止位,8-bit帧模式UBRR0L = 51; //设置波特率,9600UBRR0H = 0;UCSR0B = 0x98; //允许接收发送允许接收中断}void Write0(void){SDI=0; //SDI=0#asm("nop");SCK=0; //SCK=0#asm("nop");#asm("nop");#asm("nop");#asm("nop");#asm("nop");#asm("nop");#asm("nop");#asm("nop");#asm("nop");#asm("nop");#asm("nop");#asm("nop");#asm("nop");#asm("nop");#asm("nop");#asm("nop");SCK=1; //SCK=1 #asm("nop");}void Write1(void){SDI=1; //SDI=1#asm("nop");SCK=0; //SCK=0#asm("nop");#asm("nop");#asm("nop");#asm("nop");#asm("nop");#asm("nop");#asm("nop");#asm("nop");#asm("nop");#asm("nop");#asm("nop");#asm("nop");#asm("nop");#asm("nop");#asm("nop");#asm("nop");SCK=1; //SCK=1 #asm("nop");}void WriteCMD(uint CMD){uchar n=16;SCK=0;nSEL=0;while(n--){if(CMD&0x8000)Write1();elseWrite0();CMD=CMD<<1;}SCK=0;nSEL=1;}void WriteFSKbyte(uchar *ptr,uchar num){uchar i=0;uchar RGIT=0;uint temp=0xB800;for(i=0;i<num;i++){temp=*(ptr++)+0xB800;Loop:SCK=0;nSEL=0;SDI=0;SCK=1;if(SDO){RGIT=1;}else{RGIT=0;}SCK=0;SDI=1;nSEL=1;if(RGIT==0){goto Loop;}else{RGIT=0;WriteCMD(temp);//while(!(UCSR0A&(0x20)));//UDR0=temp;}}}interrupt [USART_RXC] void usart_rx_isr(void) { uchar data;while(!(UCSR0A&(0x80)));data=UDR0;mes[(i++)+4]=data;if(data=='a'){flag1=1;}}// INT0/*interrupt [EXT_INT0] void ext_int0_isr(void) {flag2=1;}void INT0_init(void){EICRA=0x00; // INT0EIMSK=0x01; //int0EIFR=0x01; // INT0 0}*/uchar RF12_RDFIFO(void){uchar i,Result;SCK=0;SDI=0;nSEL=0;for(i=0;i<16;i++){ //skip status bitsSCK=1;#asm("nop");#asm("nop");SCK=0;#asm("nop");#asm("nop");}Result=0;for(i=0;i<8;i++){ //read fifo data byte Result=Result<<1;if(SDO){Result|=1;}SCK=1;#asm("nop");#asm("nop");SCK=0;#asm("nop");#asm("nop");}nSEL=1;return(Result);}。