基于ARM的仓库温湿度无线监控系统_第1页
基于ARM的仓库温湿度无线监控系统_第2页
基于ARM的仓库温湿度无线监控系统_第3页
基于ARM的仓库温湿度无线监控系统_第4页
基于ARM的仓库温湿度无线监控系统_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

I 摘 要 在仓库的货物的管理中 防潮 防霉 防腐 防爆是衡量仓库管理质量的重 要指标 它直接影响到储备物资的使用寿命和工作可靠性 为保证日常工作的顺 利进行 我们需要实时知道温湿度的具体变化 因此首要问题就是加强仓库内温 度和湿度的监测工作 人工测试方法费时费力 效率低 测试的温度湿度误差大 随机性大 而且库区的面积越来越大 因此我们需要一种造价低廉 使用方便 测量准确 传输能力强和通信距离远的监控系统来有效地对仓库货物进行监管 本课题是在 ARM 控制系统的基础上 利用 DS18B20 温度传感器 HS1101 湿度 传感器 AY nRF905 和 S3C44B0 通过 SPI 总线方式进行 AY nRF905 与 S3C44B0 的 数据通信 同时 通过 DS18B20 温度传感器和 HS1101 湿度传感器在嵌入式系统的 控制下来实现工业现场温度和湿度数据的采集 将该温度和湿度数据送到 AY nRF905 无线收发模块予以发射出去 在远程进行接收并实现报警 显示温度和湿 度以及被送到上位机 关键词 ARM DS18B20 HS1101 NRF905 监控系统 II Abstract In the management of warehouse goods moisture mildew corrosion explosion are important indicators to measure the quality of warehouse management They directly affect the life and reliability of the stockpile In order to ensure the daily work is carried out smoothly we need to know the real time and specific changes of temperature and humidity So the first problem is to strengthen the monitoring of temperature and humidity inside the warehouse Manual testing method is time consuming and low efficiency large randomness of the test temperature and humidity errors and the area of the reservoir area is more and more large Therefore we need a low cost easy to use accurate measurement transmission capability and the communication distance monitoring system to effectively regulate the storage of goods This topic is about how to use the DS18B20 temperature sensor the HS1101 humidity sensor the AY nRF905 and S3C44B0 and AY nRF905 S3C44B0 data communication through SPI bus based on the ARM control system DS18B20 emperature sensor and HS1101 humidity sensor in the control of embedded systems down industrial site temperature and humidity data collection the temperature and humidity data to the AY nRF905 wireless transceiver module to be transmitted out Receive and display the temperature and humidity as well as being sent to the host computer in the remote Keywords ARM DS18B20 HS1101 NRF905 Monitoring system III 目 录 摘要 I Abstract II 绪论 1 1 温湿度采集系统的硬件设计 2 1 1 S3C44B0X 2 1 1 1 S3C44B0X 硬件资源 2 1 1 2 I O 功能概述 3 1 2 温度传感器部分 5 1 2 1 DS18B20 简介 5 1 2 2 DS18B20 的主要特性及引脚功能 6 1 2 3 DS18B20 的内部结构及工作原理 6 1 3 湿度传感器部分 8 1 3 1 HS1101 的特点 8 1 3 2 HS1101 的参数特性 9 1 4 无线传输技术 10 1 4 1 AY nRF905 无线收发模块简介 10 1 4 2 AY nRF905 的管脚排列 11 1 4 3 AY nRF905 的工作模式 12 1 4 4 AY nRF905 的配置过程 14 2 温湿度采集系统软件设计 17 2 1 DS18B20 程序的设计 17 2 1 1 DS18B20 初始化程序设计 17 2 1 2 DS18B20 读程序设计 17 2 1 3 DS18B20 的写程序设计 18 2 2 nRF905 控制程序 19 2 2 1 nRF905 寄存器配置程序 19 IV 2 2 2 SPI 写操作代码 19 2 2 3 SPI 读操作代码 20 2 2 4 主机与 nRF905 通信 21 2 2 5 使用 nRF905 发送数据 21 3 调试部分 24 3 1 使用 CodeWarrior 建立工程并进行编译 24 3 2 使用超级终端进行测试 26 结论 28 致谢 29 参考文献 30 1 绪 论 嵌入式系统是指操作系统和功能软件集成于计算机硬件系统之中 简单的说就 是系统的应用软件与系统的硬件一体化 类似与 BIOS 的工作方式 具有软件代码 小 高度自动化 响应速度快等特点 特别适合于要求实时的和多任务的体系 嵌入式系统技术具有非常广阔的应用前景 其应用领域可以包括 工业控制 交通管理 信息家电 家庭智能管理系统 POS 网络及电子商务 环境工程与自然 等 本课题就是把嵌入式系统的优势利用到仓库的温湿度监控系统中 在仓库的货物的管理中 防潮 防霉 防腐 防爆是衡量仓库管理质量的重 要指标 它直接影响到储备物资的使用寿命和工作可靠性 为保证日常工作的顺 利进行 我们需要实时知道温湿度的具体变化 因此首要问题就是加强仓库内温 度和湿度的监测工作 传统的方法是用与湿度表 毛发湿度表 双金属式测量计 和湿度试纸等测试器材 通过人工进行监测 对不符合温度和湿度要求的库房进 行通风 去湿和降温等工作 这种人工测试方法费时费力 效率低 测试的温度 湿度误差大随机性大 而且库区的面积越来越大 因此我们需要一种造价低廉 使用方便 测量准确 传输能力强和通信距离远的监控系统来有效地对仓库货物 进行监管 本课题的目的就是利用 ARM 控制器来实现工业现场温度 湿度的采集和无线传 输 在远程可以显示温度和被送到上位机 2 1 温湿度采集系统的硬件设计 本系统以嵌入式系统为核心即 S3C44B0X 组成一个集温度的采集 处理 无线 传输 显示 远程报警为一体的温度采集系统 系统硬件主要由温度传感器 DS18B20 湿度传感器 HS1101 嵌入式系统 S3C44B0X AY nRF905 模块组成 其系 统框图见下图 图 1 1 系统框图 该系统的工作流程是 通过 DS18B20 温度传感器在嵌入式系统的控制下采集温 度数据 将该温度数据送与 AY nRF905 无线收发模块予以发射出去 这个过程是温 度数据的发射 同时 该无线数据采集系统也具备接收并显示温度数据的功能 通 过 AY nRF905 无线收发模块接收数据 并送显示 2 1 1 S3C44B0X S3C44B0 微处理器片内集成 ARM7TDMI 核 采用 0 25um CMOS 工艺制造 ARM7TDMI 是 ARM 公司最早为业界普遍认可且得到了广泛应用的处理器核 特别是在 手机和 PDA 中 随着 ARM 技术的发展 它已是目前最低端的 ARM 核 ARM7TDMI 是从 最早实现了 32 位地址空间编程模式的 ARM6 核发展而来的 可稳定地在低于 5V 的 电源电压下可靠的工作 增加了 64 位乘法指令 支持片上调试 Thumb 指令集和 EmbededICE 片上断点和观察点 此开发板在如上功能的基础上集成了丰富的外围功 能模块 便于低成本设计嵌入式应用系统 1 1 1 1 S3C44B0X 硬件资源 1 在 ARM7TDMI 基础上增加 8KB 的 Cache 2 外部扩充存储器控制器 FP EDO SDRAM 控制 片选逻辑 DS18B20 温度采集 HS1101 湿度采集 S3C44B0X AY NRF905 数码管显示 3 3 LCD 控制器 最大支持 256 色的 DSTN 并带有 1 个 LCD 专用 DMA 通道 4 2 个通用 DMA 通道 2 个带外部请求引脚的 DMA 通道 5 2 个带有握手协议的 UART 1 个 SIO 6 1 个多主的 IIC 总线控制器 7 1 个 IIS 总线控制器 8 5 个 PWM 定时器及一个内部定时器 9 看门狗定时器 10 71 个通用可编程 I O 口 8 个外部中断源 11 功耗控制模式 正常 低 休眠和停止 12 8 路 10 位 ADC 13 具有日历功能的 RTC 实时时钟 14 PLL 时钟发生器 1 1 2 I O 功能概述 三星开发板 44B0 拥有 71 个通用可编程多功能输入 输出引脚 可分为以下 7 类端口 1 两个 9 位输入 输出端口 PortE 和 PortF 2 两个 8 位输入 输出端口 PortD 和 PortG 3 一个 16 位输入 输出端口 PortC 4 一个 10 位输出端口 PortA 5 一个 11 位输出端口 PortB 每个端口都可通过软件设置来满足各种各样的系统设置和设计要求 每个端口 的功能通常都要在主程序开始前被定义 3 如果一个引脚的多功能没有使用 那么 这个引脚将被设置为 I O 端口 在引脚配置之前 需要对引脚的初始化状态进行设 定 以避免一些问题的出现 I O 端口的各种功能主要是通过对端口各个寄存器进行设置而实现的 下面通 过对各个寄存器的说明来分别介绍 I O 端口所能实现的功能 1 端口配置寄存器 PCONA G 4 在 44B0 中 大多数引脚都是多功能引脚 因此 应为每个引脚选择功能 端 口控制寄存器 PCONn 决定了每一个引脚的功能 如果 PG0 PG7 在掉电模式下被用作唤醒信号 则在中断模式下这些端口必须 被设定 2 端口数据寄存器 PDATA G 如果这些端口被设定为输出端口 则输出数据可被写入 PDATn 相应位 如果 被设定为输入端口 则输入数据可被独到 PDATn 相应位 3 端口上拉寄存器 PUPC G 端口上拉寄存器控制着每一个端口组的上拉寄存器的使能端 当相应的位被设 为 0 时 引脚接上拉电阻 当相应的位被设为 1 时 引脚不接上拉电阻 4 特殊的上拉电阻控制寄存器 SPUCR 数据线 D 15 0 引脚的上拉电阻能够通过 SPUCR 寄存器来控制 在 STOP SL IDLE 模式 数据线 D 31 16 或 D 15 0 处于高阻状态 Hi zState 由于 I O 端口的特征 在 STOP SL IDLE 模式 数据在线拉电阻可降低功耗 D 31 16 引脚的上拉电阻能够通过 PUPC 寄存器来控制 D 15 0 引脚的上拉电阻能 够通过 SPUCR 寄存器来控制 在 STOP 模式 为使寄存器不出现错误功能 Mal function 存储器控制信号 通过在特殊的上拉电阻控制寄存器里设置 HZ STOP 区域来选择高阻状态 Hi zState 或先前的状态 外部中断控制寄存器 8 个外部中断可用各种信号来请求 外部中断寄存器为外部中断设置了信号触 发方法选择位 也设置了触发信号的极性选择位 外部中断请求信号触发的方法有 以下几种 低电平触发 高电平触发 下降沿触发 上升沿触发及双沿触发 因为每个外部中断引脚都有一个数字滤波器 这使中断控制器能够识别长于 3 个时钟周期的请求信号 外部中断挂起寄存器 EXTINTPND 外部中断请求 4 5 6 7 对于中断控制器来说是 或 的关系 EINT4 EIN5 EIN6 EIN7 共享在中断控制器里同一个中断请求队列 如果外部 5 中断请求的 4 位中的任何一位被启动 那么 EXTINTPNDn 将会被设置为 1 外部挂 起条件清除以后 中断服务程序必须清除中断挂起状态 可通过 EXTINTPND 对应 位写 1 来清除挂起条件 1 2 温度传感器部分 图1 2 S3C44B0X与DS18B20的接口电路图 DS18B20的I O口是数据输入输出端它属于漏极开路输出 外接上拉电阻后 常 态下呈高电平 它与S3C44B0X的GPF4相连 DS18B20的接地端 GND 和VDD分别与 S3C44B0X的接地端和VDD相连接 1 2 1 DS18B20简介 DS18B20 是美国半导体公司继之后最新推出的一种数字化单总线器件 属于 新一代适配微处理器的改进型智能温度传感器 与传统的热敏电阻相比 它能够直 接读出被测温度 并且可根据实际要求通过简单的编程实现9 12位的数字值读数方 式 可以分别在93 75ms和750ms内完成9位和12位的数字量 并且从DS18B20读出 的信息或写入DS18B20的信息仅需要一根口线 单线界面 读写 温度变换功率来 源于数据总线 总线本身也可以向所挂接的DS18B20供电 而无需额外电源 因而 使用DS18B20可使系统结构更趋简单 可靠性更高 同时其 一线总线 独特而且 经济的特点 使用户可轻松地组建传感器网络 为测量系统的构建引入了全新的概 念 DS18B20 一线总线 数字化温度传感器支持 一线总线 界面 测量温度范 围为 55 125 在 10 85 范围内 精度为 0 5 现场温度直接以 一线总线 的数字方式传输 用符号扩展的16位数字量方式串行输出 大大提高 了系统的抗干扰性 因此 数字化单总线器件DS18B20适合于恶劣环境的现场温度 测量 如环境控制 设备或过程控制 测温类消费电子产品等 它在测温精度 转 换时间 传输距离 分辨率等方面较都有了很大的改进 给用户带来了更方便和更 令人满意的效果 可广泛用于工业 民用 军事等领域的温度测量及控制仪器 测 6 控系统和大型设备中 10 11 1 2 2 DS18B20的主要特性及引脚功能 1 DS18B20的主要特性 全数字温度转换及输出 先进的单总线数据通信 最高12位分辨率 精度可达 0 5摄氏度 可选择寄生工作方式 检测温度范围为 55 125 67 257 内置EEPROM 限温报警功能 64位光刻ROM 内置产品序列号 方便多级挂接 多样封装形式 适应不同硬件系统 负压特性 即具有电源反接保护电路 当电源电压的极性反接时 能保护 DS18B20不会因为发热而烧毁 但此时芯片无法正常工作 2 DS18B20引脚功能 DS18B20采用两种封装结构分别为PR 35封装和SOS封装 I O为数据输入输出 端 即单线总线 它属于漏极开路输出 外接上拉电阻后 常态下呈高电平 GND 电压地 DQ 单数据总线 VDD 电源电压 NC 空引脚 DS18B20的封装图 如下图1 3所示 图 1 3 DS18B20 封装图 1 2 3 DS18B20的内部结构及工作原理 DS18B20的内部结构框图见下图1 4 它主要包括7个部分 1 寄生电源 2 温度传感器 3 64 位激光 loser ROM 与单线界面 4 高速暂存器 即便筏式 7 RAM 用于存放中间数据 5 TH 触发寄存器和TL 触发寄存器 分别用来存储用 户设定的温度上下限值 6 存储和控制逻辑 7 8 位循环冗余校验码 CRC 发 生器 图 1 4 DS18B20 的内部结构框图 DS18B20 的测温原理如下图 1 5 所示 图 1 5 DS18B20 的内部测温原理图 图中低温度系数晶振的振荡频率受温度的影响很小 用于产生固定频率的脉冲 信号送给减法计数器1 高温度系数晶振的振荡频率随温度变化而明显改变 所产 生的信号作为减法计数器2 的脉冲输入 图中还隐含着计数门 当计数门打开时 DS18B20 就对低温度系数振荡器产生的时钟脉冲进行计数 进而完成温度测量 8 计数门的开启时间由高温度系数振荡器来决定 每次测量前 首先将 55 所对应的 基数分别置入减法计数器1 和温度寄存器中 减法计数器1 和温度寄存器被预置在 55 所对应的一个基数值 减法计数器1 对低温度系数晶振产生的脉冲信号进行减 法计数 当减法计数器1 的预置值减到0 时温度寄存器的值将加1 减法计数器1 的预置将重新被装入 减法计数器1 重新开始对低温度系数晶振产生的脉冲信号进 行计数 如此循环直到减法计数器2 计数到0 时 停止温度寄存器值的累加 此时 温度寄存器中的数值即为所测温度 图2 3 中的斜率累加器用于补偿和修正测温过 程中的非线性 其输出用于修正减法计数器的预置值 只要计数门仍未关闭就重复 上述过程 直至温度寄存器值达到被测温度值 这就是DS18B20 的测温原理 1 3 湿度传感器部分 测量空气湿度的方式很多 其原理是根据某种物质从其周围的空气吸收水分后 引起的物理或化学性质的变化 间接地获得该物质的吸水量及周围空气的湿度 电 容式 电阻式和湿涨式湿敏元件分别是根据其高分子材料吸湿后的介电常数 电阻 率和体积随之发生变而进行湿度测量的 12 15 下面介绍 HS1101 湿度传感器及其应用 图 1 6 S3C44B0X 与 HS1101 的接口电路图 HS1101 的 I O 口只进行读操作 不进行写操作 也就是将采集到的湿度读出并 通过 S3C44B0X 的 GPF3 口送入 CPU 中进行处理 1 3 1 HS1101 的特点 图 1 7 HS1101 实物图 不需要校准的完全互换性 高可靠性和长期稳定性 快速响应时间 专利设计 9 的固态聚合物结构 有顶端接触 HS1100 和侧面接触 HS1101 两种封装产品 适用于线性电压输出和频率输出两种电路 适宜于制造流水线上的自动插件和自动 装配过程等 1 3 2 HS1101 的参数特性 相对湿度在 0 100 RH 范围内 电容量由 162pF 变到 200pF 其误差不大于 2 RH 响应时间小于 5s 温度系统为 0 04pF 可见其精度是较高的 其湿度 电容响应曲线如图 1 8 200 190 180 170 电容电容 F 图 1 8 HS1101 湿度 电容响应曲线 电容拟和曲线公式 C PF C 55 RH 1 25 10 7 RH 3 1 36 10 5 RH 2 2 19 10 3 RH 9 0 10 1 频率影响 参数表中 所有数据均在 10KHz 下取得 HS1100 1101 可以工作在 5KHz 到 100KHz 之间 频率对电容值的影响如下 C fKHz 1 027 1 01185 1n fKHz 极性 测量中 为得到更好的重复性 将管脚 2 接地 管脚 2 在帽头远端 20 40 60 80 100 相对湿度相对湿度 10 表 1 1 HS1101 常用参数 参数符号参数值单位 工作温度Ta 40 100 储存温度Tstg 40 125 供电电压Vs10Vac 湿度范围RH0 100 RH 焊接时间 260 t10S 拟和曲线公式如下 F mes Hz F 55 Hz 1 1038 1 9368 10 3 RH 3 0114 10 6 RH 2 3 4403 10 8 RH 3 1 4 AY NRF905无线收发模块部分 随着我国国际地位和科研水平的不断提高 无需导线连接的无线数据系统对用 户有着极大的吸引力 无线数据系统采用了能在局域范围内无线传输信息的数字网 络 在不改动原有设施的前提下 将有效的数据信息准确 快速和安全地传送给与 会者 因此 无线数据系统设备的设计得到了国内外相关领域厂商的广泛关注 未 来 无线数据系统很有可能代替现有的有线数据系统 成为今后数据传输的主流 NRF905与S3C44B0X的接口电路图如图1 9所示 图1 9 NRF905与S3C44B0X的接口电路图 1 4 1 AY nRF905无线收发模块简介 nRF905是一种单片射频收发器 工作电压为1 9 3 6V 工作于 11 433 868 915MHz三个ISM 工业 科学和医学 频道 频道之间的转换时间小于 650us nRF905由频率合成器 接收解调器 功率放大器 晶体振荡器和调制器组 成 不需外加声表滤波器 ShockBurst工作模式 自动处理字头和CRC 循环冗余 码校验 使用SPI界面与微控制器通信 配置非常方便 此外 其功耗非常低 以 10dBm的输出功率发射时电流只有11mA 工作于接收模式时的电流为12 5mA 内建空闲模式与关机模式 易于实现节能 1 4 2 AY nRF905的管脚排列 AY nRF905的管脚排列如下图1 10所示 图 1 10 nRF905 的管脚排列 1 VCC 脚接电压范围为 3 3 3 6V 之间 不能在这个区间之外 超过 3 6V 将会烧毁模块 推荐电压 3 3V 左右 2 除电源 VCC 和接地端 其余脚都可以直接和普通的 5V 单片机 I O 口直 接相连 无需电平转换 当然对 3V 左右的单片机更加适用了 3 硬件上面没有 SPI 的单片机也可以控制本模块 用普通单片机 I O 口模拟 SPI 不需要单片机 SPI 模块介入 只需添加代码模拟 SPI 时序即可 4 13 脚 14 脚为接地脚 需要和母板得逻辑地连接起来 5 排列间距为 100mil 标准 DIP 插针 6 与 51 系列单片机 P0 口连接时候 需要外加 10K 的上拉电阻 与其余口 连接不需要 具体管脚说明见下表 表 1 2 nRF905 管脚说明 管脚名称管教说明说明 1VCC电源电源 3 3 3 6V DC 2TX EN数字输入TX EN 1 TX 模式 TX EN 0 RX 模式 12 3TRX CE数字输入使能芯片发射或接收 4PWR UP数字输入芯片上电 5uCLK时钟输出本模块该脚废弃不用 向后兼容 6CD数字输出载波检测 7AM数字输出地址匹配 8DR数字输出接收或发射数据完成 9MISOSPI 界面SPI 输出 10MOSISPI 界面SPI 输入 11SCKSPI 时钟SPI 时钟 12CSNSPI 使能SPI 使能 13GND地接地 14GND地接地 1 4 3 AY nRF905 的工作模式 AY nRF905 一共有四种工作模式 其中有两种活动 RX TX 模式和两种节电模 式 分别为活动模式 ShockBurst RX 和 ShockBurst TX 节电模式 掉电和 SPI 编 程 Standby 和 SPI 模式 其工作模式由 TRX CE TX EN PWR UP 的设置来设 定 具体见下表 表 1 3 nRF905 的工作模式 PWR UPTRX CETX EN工作模式 0XX掉电和 SPI 编程 10XStandby 和 SPI 编程 110ShockBurst RX 111ShockBurst TX 1 ShockBurst 模式 ShockBurstTM 收发模式下 使用片内的先入先出堆栈区 数据低速从微控制 器送入 但高速发射 这样可以尽量节能 因此 使用低速的微控制器也能得到很 高的射频数据发射速率 与射频协议相关的所有高速信号处理都在片内进行 这种 做法有三大好处 尽量节能 低的系统费用 低速微处理器也能进行高速射频发送 数据在空停留时间短 抗干扰性高 ShockBurstTM 技术同时也减小了整个系统 的平均工作电流 在 ShockBurstTM 收发模式下 RF905 自动处理字头和 CRC 校验 码 在接收数据时 自动把字头和 CRC 校验码移去 在发送数据时 自动加上字 头和 CRC 校验码 当发送过程完成后 DR 引脚通知微处理器数据发送完毕 ShockBurstTX 发送流程 典型的 RF905 发送流程分以下几步 13 A 当微控制器有数据要发送时 通过 SPI 界面 按时序把接收机的地址和要 发送的数据送传给 RF905 SPI 界面的速率在通信协议和器件配置时确定 B 微控制器置高 TRX CE 和 TX EN 激发 RF905 的 ShockBurstTM 发送模式 C RF905 的 ShockBurstTM 发送 1 射频寄存器自动开启 2 数据打包 加字头和 CRC 校验码 3 发送数据包 4 当数据发送完成时 数据准备好引脚被置高 D AUTO RETRAN 被置高 RF905 不断重发 直到 TRX CE 被置低 E 当 TRX CE 被置低 RF905 发送过程完成 自动进入空闲模式 注意 ShockBurstTM 工作模式保证 一旦发送数据的过程开始 无论 TRX EN 和 TX EN 引脚是高或低 发送过程都会被处理完 只有在前一个数据包 被发送完毕 RF905 才能接受下一个发送数据包 ShockBurstRX 接受流程 接收流程分以下几步 A 当 TRX CE 为高 TX EN 为低时 RF905 进入 ShockBurstTM 接收模式 B 650us 后 RF905 不断监测 等待接收数据 C 当 RF905 检测到同一频段的载波时 载波检测引脚被置高 D 当接收到一个相匹配的地址 AM 引脚被置高 E 当一个正确的数据包接收完毕 RF905 自动移去字头 地址和 CRC 校验位 然后把 DR 引脚置高 F 微控制器把 TRX CE 置低 RF905 进入空闲模式 G 微控制器通过 SPI 口 以一定的速率把数据移到微控制器内 H 当所有的数据接收完毕 RF905 把 DR 引脚和 AM 引脚置低 I nRF905 此时可以进入 ShockBurstTM 接收模式 ShockBurstTM 发送模式或 关机模式 14 注意 当正在接收一个数据包时 TRX CE 或 TX EN 引脚的状态发生改变 RF905 立即把其工作模式改变 数据包则丢失 当微处理器接到 AM 引脚的信号之 后 其就知道 RF905 正在接收数据包 其可以决定是让 RF905 继续接收该数据包 还是进入另一个工作模式 2 节能模式 RF905 的节能模式包括关机模式和节能模式 在关机模式 RF905 的工作电流最小 一般为 2 5uA 进入关机模式后 RF905 保持配置字中的内容 但不会接收或发送任何数据 空闲模式有利于减小工 作电流 其从空闲模式到发送模式或接收模式的启动时间也比较短 在空闲模式下 RF905 内部的部分晶体振荡器处于工作状态 1 4 4 AY nRF905 的配置过程 所有配置字都是通过 SPI 界面送给 RF905 SPI 界面的工作方式可通过 SPI 指 令进行设置 当 RF905 处于空闲模式或关机模式时 SPI 界面可以保持在工作状态 1 SPI 界面寄存器配置 SPI 界面由状态寄存器 射频配置寄存器 发送地址寄存器 发送数据寄存器 和接收数据寄存器 5 个寄存器组成 状态寄存器包含数据准备好引脚状态信息和地 址匹配引脚状态信息 射频配置寄存器包含收发器配置信息 如频率和输出功能等 发送地址寄存器包含接收机的地址和数据的字节数 发送数据寄存器包含待发送的 数据包的信息 如字节数等 接收数据寄存器包含要接收的数据的字节数等信息 SPI 界面由 5 个内部寄存器组成执行寄存器的回读模式来确认寄存器的内容 其 SPI 界面和内部结构图如下图 1 11 所示 15 图 1 11 SPI 界面和 5 个内部寄存器 状态寄存器 Status Register 寄存器包含数据就绪 DR 和地址匹配 AM 状态 RF 配置寄存器 RF Configuration Register 寄存器包含收发器的频率 输出功率等配置信息 发送地址 TX Address 寄存器包含目标器件地址 字节长度由配置寄存器设置 发送有效数据 TX Payload 寄存器包含发送的有效 ShockBurst 数据包 数据字节长度由配置寄存器设置 接收有效数据 TX Payload 寄存器包含接收到的有效 ShockBurst 数据包 数据字节长度由配置寄存器设置 在寄存器中的有效数据由数据准备就绪 DR 指示 2 SPI 指令设置 当 CSN 为低时 SPI 界面开始等待一条指令 任何一条新指令均由 CSN 的由 高到底的转换开始 用于 SPI 界面的有用命令见下表 表 1 4 SPI 串行界面占领设置 指令名称指令格式操作 W CONFIG WC 0000AAAA写配置寄存器 AAAA 指出写操作的开始 字节 字节数量取决于 AAAA 指出的开 始地址 16 CONFIG RC 0001AAAA读配置寄存器 AAAA 指出读操作的开始 字节 字节数量取决于 AAAA 指出的开 始地址 W TX PAYLOA D WTP 00100000写 TX 有效数据 1 32 字节 写操作全部 从字节 0 开始 R TX PAYLOA D RTP 00100001读 TX 有效数据 1 32 字节 读操作全部 从字节 0 开始 W TX ADDRES S WTA 00100010写 TX 地址 1 4 字节写操作全部从字节 0 开始 R TX ADDRES S RTA 00100011读 TX 地址 1 4 字节读操作全部从字节 0 开始 R RX PAYLOA D RRP 00100100读 RX 有效数据 1 32 字节 读操作全部 从字节 0 开始 CHANNEL CONFIG CC 1000pphc cccccccc 快速设置配置寄存器中 CH NO HFREQ PLL 和 PA PWR 的专用命令 CH NO cccccccc HFREQ PLL h PA PWR pp 2 温湿度采集系统软件设计 2 1 DS18B20 程序的设计 2 1 1 DS18B20 初始化程序设计 主机总线 t0 时刻发送一复位脉冲 最短为 480us 的低电平信号 接着在 tl 时 刻释放总线并进入接收状态 DSl8B20 在检测到总线的上升沿之后 等待 15 60us 接 着 DS18B20 在 t2 时刻发出存在脉冲 低电平持续 60 240us 程序 Init DS18B20 void 初始化 ds1820 DQ 1 DQ 复位 DQ 0 将 DQ 拉低 发出复位脉冲 要求 480us 960us Delay 70 精确延时 566us DQ 1 拉高总线 要求 16 60us Delay 5 延时 46us presence DQ 如果 0 则初始化成功 1 则初始化失败 Delay 25 17 DQ 1 return presence 返回信号 0 presence 1 no presence 2 1 2 DS18B20 读程序设计 主机总线 t0 时刻从高拉至低电平时总线只须保持低电平 15us 之后也就是说 t2 时刻前主机必须完成读位并在 t2 后的 60us 一 120us 内释放总线读位子程序 程序 ReadOneChar void unsigned char i 0 unsigned char dat 0 for i 8 i 0 i DQ 0 给脉冲信号 dat 1 DQ 1 给脉冲信号 if DQ dat 0 x80 delay 4 return dat 2 1 3 DS18B20的写程序设计 当主机总线 t0 时刻从高拉至低电平时就产生写时间隙从 t0 时刻开始 15us 之内 应将所需写的位送到总线 DSl8B20 在 t1 为 15 60us 间对总线采样 若低电平写入的 位是 0 见若高电平写入的位是连续写 2 位间的间隙应大于 1us 程序 void write uchar dat 写一个字节到 DS18B20 18 int i char j bit testb for j 1 j 1 if testb 写 1 部分 DS 0 i i DS 1 i 8 while i 0 i else DS 0 写 0 部分 i 8 while i 0 i DS 1 i i 2 2 nRF905控制程序 2 2 1 nRF905寄存器配置程序 在前面 已经介绍了nRF905的寄存器设置 这里给出程序设置 完成nRF905 的寄存器配置 typedef struct RFConfig uchar n uchar buf 10 19 RFConfig code RFConfig RxTxConf 10 0 x4c 0 x0c 0 x44 0 x20 0 x20 0 xcc 0 xcc 0 xcc 0 xcc 0 x58 2 2 2 SPI写操作代码 SPI写操作的步骤如下 步骤一 MOSI 线准备好需要发送的数据位 步骤二 SCK 置高 器件读取 MOSI 在线的数据 步骤三 SCK 置低 准备发送数据的下一位 以上步骤循环执行 8 次 通过 SPI 向器件发送数据完成 void SpiWrite uchar byte uchar i DATA BUF byte 将需要发送的数据写入缓存 for i 0 i 8 i 循环 8 次发送一个字节的数据 if flag flag DATA BUF 7 MOSI 1 else MOSI 0 SCK 1 SCK 高电平 DATA BUF DATA BUF 1 左移一位 为下一位的发送做准备 SCK 0 SCK 低电平 2 2 3 SPI 读操作代码 SPI 读操作如下 步骤一 MISO 线准备好需要发送的数据位 20 步骤二 SCK 置高 主机读取 MISO 在线的数据 步骤三 SCK 置低 准备接收数据的下一位 以上步骤循环执行 8 次 通过 SPI 从器件上读数据完成 uchar SpiRead void uchar i for i 0 i 8 i 循环 8 次发送一个字节的数据 DATA BUF DATA BUF 1 左移一位 准备接收下一位数据 SCK 1 SCK 高电平 if MISO flag1 1 flag1 DATA BUF 0 else flag1 0 SCK 0 SCK 低电平 return DATA BUF DATA BUF 为接收到的完整数据 2 2 4 主机与 nRF905 通信 主机通过 SPI 界面向 nRF905 配置寄存器写入信息 步骤如下 步骤一 CSN 置低电平 SPI 界面开始等待第一条指令 步骤二 调用 SpiWrite 函数 向器件发送 WC 信号 准备写入配置信息 步骤三 反复调用 SpiWrite 函数 向器件配置寄存器写入配置信息 步骤四 CSN 置高电平 结束 SPI 通讯 nRF905 配置完成 void Config905 void uchar i CSN 0 CSN 片选信号 SPI 使能 21 SpiWrite WC 向 905 芯片写配置命令 for i 0 i 650us 然后经过如下步骤 完成发送 步骤一 通过 SpiWrite 函数发送 WTP 命令 准备写入 TX 有效数据 步骤二 循环调用 SpiWrite 向 TX Payload 寄存器写入 TX 有效数据 中间 夹有 CSN 电平变化 步骤三 延时 步骤四 通过 SpiWrite 函数发送 WTA 命令 准备写入 TX 地址 步骤五 循环调用 SpiWrite 向 TX Address 寄存器写入 TX 地址 步骤六 TRX

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论