2401发送+流程图+电路图.docx_第1页
2401发送+流程图+电路图.docx_第2页
2401发送+流程图+电路图.docx_第3页
2401发送+流程图+电路图.docx_第4页
2401发送+流程图+电路图.docx_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

电子系统设计创新与实践题目:简易无线磁感检测系统学院:信息学院 专业:通信工程 班级:通信12-1班 姓名:陈波 学号:3120731112 指导老师:邓建志(一)、任务 设计并制作 2.4Ghz 射频无线磁感检测发射机和接收机。 (二)、要求 (1)自制 2.4Ghz 无线磁感检测收发器,可以上电工作,(提供24L01 模块一对,磁感模块一个)。 (2)有显示功能 (3)能够检测传感器的磁感应情况,并通过无线发送。 (4)通信距离大于 3m 磁感应原理:1 磁感应传感器工作原理 电路中用到,磁感应传感器电路、信号放大电路、单片机系统、状态显示系统构成。其基本工作原理:经过信号放大电路,磁感应传感器电路将感受到磁场强度以高低电平形式输出至单片机系统, 由状态显示系统进行显示。 磁感应传感器工作框图如图5-1: 图5-1 电路工作框图 1 磁感应传感器(3144 霍尔传感器)介绍 原理: 当一块通有电流的金属或半导体薄片垂直地放在磁场中时,薄片的两端就会产生电位差,这种现象就称为霍尔效应。两端具有的电位差值称为霍尔电势U,其表达式为 U=KIB/d 其中K为霍尔系数,I为薄片中通过的电流,B为外加磁场(洛伦磁力Lorrentz)的磁感应强度,d是薄片的厚度。 由此可见,霍尔效应的灵敏度高低与外加磁场的磁感应强度成正比的关系。 霍尔开关就属于这种有源磁电转换器件,它是在霍尔效应原理的基础上,利用集成封装和组装工艺制作而成,它可方便的把磁输入信号转换成实际应用中的电信号,同时又具备工业场合实际应用易操作和可靠性的要求。 霍尔传感器霍尔开关集成电路应用霍尔效应原理,采用半导体集成技术制造的磁敏电路,它是由电压调整器、霍尔电压发生器、差分放大器、史密特触发器,温度补偿电路和集电极开路的输出级组成的磁敏传感电路,其输入为磁感应强度,输出是一个数字电压讯号。 分类: 单极霍尔效应开关(数字输出) 单极性霍尔开关它的正反面会各指定一个磁极感应才会有作用,一般情况单极霍尔开关的的正面(字面)会指定磁场S极有效,霍尔开关的反面靠近N极有效, 3144 磁感应传感器例程 知识准备 1 讯方公司 物联网开发终端实验指导书 2 霍尔传感器是单极性的。 双极霍尔效应开关(数字输出) 双极性霍尔具体又分双极性不带锁存型霍尔开关和双极性锁存型霍尔开关。 双极不锁存型霍尔效应开关通常在南极磁场强度足够的情况下打开,并在北极磁场强度足够的情况下关闭,但如果磁场被移除,则是随机输出,有可能是打开,也有可能是关闭。 双极锁存型霍尔效应开关通常在南极磁场强度足够的情况下打开,并在北极磁场强度足够的情况下关闭,但如果磁场被移除,不会更改输出状态。这些霍尔效应开关可使用南北交变磁场、多极环磁铁进行磁驱动。 全极霍尔效应开关(数字输出) 与其他霍尔效应开关不同,只要存在强度足够大的北极或南极磁场,这些器件就能打开;而在没有磁场的时候,输出会关闭。 线性霍尔效应传感器 IC(模拟输出) 线性霍尔效应传感器 IC 的电压输出会精确跟踪磁通密度的变化。在静态(无磁场)时,从理论上讲,输出应等于在工作电压及工作温度范围内的电源电压的一半。增加南极磁场将增加来自其静态电压的电压。相反,增加北极磁场将增加来自其静态电压的电压。这些部件可测量电流的角、接近性、运动及磁通量。它们能够以磁力驱动的方式反映机械事件。NRF2401功能描述概述: nRF24L01 是一款工作在 2.42.5GHz 世界通用 ISM 频段的单片无线收发器芯片。无线收发器包括:频率发生器、增强型 SchockBurstTM 模式控制器、功率放大器、晶体振荡器、调制器、解调器。输出功率、频道选择和协议的设置可以通过 SPI接口进行设置。 极低的电流消耗:当工作在发射模式下发射功率为-6dBm时电流消耗为 9mA,接收模式时为 12.3mA。掉电模式和待机模式下电流消耗更低。概述: nRF24L01 是一款工作在 2.42.5GHz 世界通用 ISM 频段的单片无线收发器芯片。无线收发器包括:频率发生器、增强型 SchockBurstTM 模式控制器、功率放大器、晶体振荡器、调制器、解调器。输出功率、频道选择和协议的设置可以通过 SPI接口进行设置。 极低的电流消耗:当工作在发射模式下发射功率为-6dBm时电流消耗为 9mA,接收模式时为 12.3mA。掉电模式和待机模式下电流消耗更低硬件电路:磁感应模块通过P26与单片机连起来,当感应到磁场变化,磁感应模块的D0口电平会由电平“1“变成电平”0“,也就是磁感应模块相当于一个开关。发送成功后,跟P27相连的LED灯闪烁。最小系统原理图Pcb图发送模块程序流程图:程序代码:发送模块程序代码:#include#define uchar unsigned char #define uint unsigned int/NRF24L01寄存器操作命令#define READ_REG 0x00 /读配置寄存器,低5位为寄存器地址#define WRITE_REG 0x20 /写配置寄存器,低5位为寄存器地址#define RD_RX_PLOAD 0x61 /读RX有效数据,132字节#define WR_TX_PLOAD 0xA0 /写TX有效数据,132字节#define FLUSH_TX 0xE1 /清除TX FIFO寄存器.发射模式下用#define FLUSH_RX 0xE2 /清除RX FIFO寄存器.接收模式下用#define REUSE_TX_PL 0xE3 /重新使用上一包数据,CE为高,数据包被不断发送.#define NOP 0xFF /空操作,可以用来读状态寄存器 /SPI(NRF24L01)寄存器地址#define CONFIG 0x00 /配置寄存器地址;bit0:1接收模式,0发射模式;bit1:电选择;bit2:CRC模式;bit3:CRC使能; /bit4:中断MAX_RT(达到最大重发次数中断)使能;bit5:中断TX_DS使能;bit6:中断RX_DR使能#define EN_AA 0x01 /使能自动应答功能 bit05,对应通道05#define EN_RXADDR 0x02 /接收地址允许,bit05,对应通道05#define SETUP_AW 0x03 /设置地址宽度(所有数据通道):bit1,0:00,3字节;01,4字节;02,5字节;#define SETUP_RETR 0x04 /建立自动重发;bit3:0,自动重发计数器;bit7:4,自动重发延时 250*x+86us#define RF_CH 0x05 /RF通道,bit6:0,工作通道频率;#define RF_SETUP 0x06 /RF寄存器;bit3:传输速率(0:1Mbps,1:2Mbps);bit2:1,发射功率;bit0:低噪声放大器增益#define STATUS 0x07 /状态寄存器;bit0:TX FIFO满标志;bit3:1,接收数据通道号(最大:6);bit4,达到最多次重发 /bit5:数据发送完成中断;bit6:接收数据中断;#define MAX_TX 0x10 /达到最大发送次数中断#define TX_OK 0x20 /TX发送完成中断#define RX_OK 0x40 /接收到数据中断#define OBSERVE_TX 0x08 /发送检测寄存器,bit7:4,数据包丢失计数器;bit3:0,重发计数器#define CD 0x09 /载波检测寄存器,bit0,载波检测;#define RX_ADDR_P0 0x0A /数据通道0接收地址,最大长度5个字节,低字节在前#define RX_ADDR_P1 0x0B /数据通道1接收地址,最大长度5个字节,低字节在前#define RX_ADDR_P2 0x0C /数据通道2接收地址,最低字节可设置,高字节,必须同RX_ADDR_P139:8相等;#define RX_ADDR_P3 0x0D /数据通道3接收地址,最低字节可设置,高字节,必须同RX_ADDR_P139:8相等;#define RX_ADDR_P4 0x0E /数据通道4接收地址,最低字节可设置,高字节,必须同RX_ADDR_P139:8相等;#define RX_ADDR_P5 0x0F /数据通道5接收地址,最低字节可设置,高字节,必须同RX_ADDR_P139:8相等;#define TX_ADDR 0x10 /发送地址(低字节在前),ShockBurstTM模式下,RX_ADDR_P0与此地址相等#define RX_PW_P0 0x11 /接收数据通道0有效数据宽度(132字节),设置为0则非法#define RX_PW_P1 0x12 /接收数据通道1有效数据宽度(132字节),设置为0则非法#define RX_PW_P2 0x13 /接收数据通道2有效数据宽度(132字节),设置为0则非法#define RX_PW_P3 0x14 /接收数据通道3有效数据宽度(132字节),设置为0则非法#define RX_PW_P4 0x15 /接收数据通道4有效数据宽度(132字节),设置为0则非法#define RX_PW_P5 0x16 /接收数据通道5有效数据宽度(132字节),设置为0则非法#define NRF_FIFO_STATUS 0x17 /FIFO状态寄存器;bit0,RX FIFO寄存器空标志;bit1,RX FIFO满标志;bit2,3,保留 /bit4,TX FIFO空标志;bit5,TX FIFO满标志;bit6,1,循环发送上一数据包.0,不循环;/sbit CE=P20;sbit CSN=P21;sbit SCK=P22;sbit MOSI=P23;sbit MISO=P24;sbit IRQ=P25;sbit D0=P26;sbit LED = P27;uchar tmp_buf5=0;uchar re_buf5=1;uint t=0;/24L01发送接收数据宽度定义#define TX_ADR_WIDTH 5 /5字节的地址宽度#define RX_ADR_WIDTH 5 /5字节的地址宽度#define TX_PLOAD_WIDTH 3 /32字节的用户数据宽度#define RX_PLOAD_WIDTH 3 /32字节的用户数据宽度const uchar TX_ADDRESSTX_ADR_WIDTH=0x34,0x43,0x10,0x10,0x01; /发送地址const uchar RX_ADDRESSRX_ADR_WIDTH=0x34,0x43,0x10,0x10,0x01; /发送地址void magnetic();void NRF24L01_Init(void);/初始化void NRF24L01_RX_Mode(void);/配置为接收模式void NRF24L01_TX_Mode(void);/配置为发送模式uchar NRF24L01_TxPacket(uchar *txbuf);/发送一个包的数据uchar NRF24L01_RxPacket(uchar *rxbuf);/接收一个包的数据#define P20=P2;/*/*函数 uchar SPI_RW(uchar uuchar)/*向NRF24L01写一个字节,同时读出一个字节/*/uchar SPI_RW(uchar uuchar)uchar bit_ctr;for(bit_ctr=0;bit_ctr8;bit_ctr+)MOSI=(uuchar&0x80);/输出uuchar的最高位uuchar=(uuchar0;c-)for (b=38;b0;b-)for (a=130;a0;a-); /*/*函数 uint SPI_Read_Buf(uchar reg,uchar *pBuf,uchar uchars)/*功能:用于读数据,reg:为寄存器地址/* pBuf:为等待读出数据地址/*uchars:读出数据的个数/*/uint SPI_Read_Buf(uchar reg,uchar *pBuf,uchar uchars)uchar status,uchar_ctr;CSN=0; /CSN置0,允许指令操作status=SPI_RW(reg);for(uchar_ctr=0;uchar_ctruchars;uchar_ctr+)pBufuchar_ctr=SPI_RW(0);CSN=1;return(status);/*/*函数 uint SPI_Write_Buf(uchar reg,uchar *pBuf,uchar uchars)/*功能:用于写数据,reg:为寄存器地址/* pBuf:为等待写入数据地址/*uchars:写入数据的个数/*/ uint SPI_Write_Buf(uchar reg,uchar *pBuf,uchar uchars)uchar status,uchar_ctr;CSN=0;status=SPI_RW(reg);for(uchar_ctr=0;uchar_ctruchars;uchar_ctr+)SPI_RW(*pBuf+);CSN=1;return(status);/*/*NRF24L01发射模式初始化/*/void NRF24L01_Init(void)CE=0;/射频停止工作CSN=1;/停止寄存器读写SCK=0;/时钟信号停止读写IRQ=1;/中断复位 SPI_RW_Reg(WRITE_REG+EN_AA,0x01);SPI_RW_Reg(WRITE_REG+EN_RXADDR,0x01);SPI_RW_Reg(WRITE_REG+RF_CH,0);SPI_RW_Reg(WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH);SPI_RW_Reg(WRITE_REG+RF_SETUP,0x07);/*void nRF24L01_TxPacket(uchar *tx_buf)/*NRF24L01发送tx_buf中数据/*/void nRF24L01_TxPacket(uchar *tx_buf)CE=0;SPI_Write_Buf(WRITE_REG+TX_ADDR,TX_ADDRESS,TX_ADR_WIDTH);SPI_Write_Buf(WRITE_REG+TX_ADDR_P0,TX_ADDRESS,TX_ADR_WIDTH);SPI_Write_Buf(WR_TX_PLOAD,tx_buf,TX_PLOAD_WIDTH); /写数据到TX BUF 32个字节SPI_RW_Rge(WRITE_REG+CONFIG,0x0e);CE=1;Delay10ms(1);uchar NRF24L01_TxPacket(uchar *txbuf)uchar sta; CE=0; SPI_Write_Buf(WR_TX_PLOAD,txbuf,TX_PLOAD_WIDTH);/写数据到TX BUF 32个字节CE=1;Delay10ms(1);while(IRQ!=0);/等待发送完成sta=SPI_Read(STATUS); /读取状态寄存器的值 SPI_RW_Reg(WRITE_REG+STATUS,sta); /清除TX_DS或MAX_RT中断标志if(sta&MAX_TX)/达到最大重发次数SPI_RW_Reg(FLUSH_TX,0xff);/清除TX FIFO寄存器 return MAX_TX; if(sta&TX_OK)/发送完成return TX_OK;return 0xff;/其他原因发送失败uchar NRF24L01_TxPacket1(uchar *txbuf)uchar sta;CE=0;SPI_Write_Buf(WR_TX_PLOAD,txbuf,TX_PLOAD_WIDTH);/写数据到TX BUF 32个字节CE=1;while(IRQ!=0);/等待发送完成sta=SPI_Read(STATUS); /读取状态寄存器的值 SPI_RW_Reg(WRITE_REG+STATUS,sta); /清除TX_DS或MAX_RT中断标志if(sta&TX_OK)/发送完成return TX_OK;/启动NRF24L01接收一次数据/txbuf:待接收数据首地址/返回值:0,接收完成;其他,错误代码uchar NRF24L01_RxPacket(uchar *rxbuf)uchar sta; sta=SPI_Read(STATUS); /读取状态寄存器的值SPI_RW_Reg(WRITE_REG+STATUS,sta); /清除TX_DS或MAX_RT中断标志if(sta&RX_OK)/接收到数据SPI_Read_Buf(RD_RX_PLOAD,rxbuf,RX_PLOAD_WIDTH);/读取数据SPI_RW_Reg(FLUSH_RX,0xff);/清除RX FIFO寄存器 return 1; return 0;/没收到任何数据/该函数初始化NRF24L01到RX模式/设置RX地址,写RX数据宽度,选择RF频道,波特率和LNA HCURR/当CE变高后,即进入RX模式,并可以接收数据了void NRF24L01_RX_Mode(void)CE=0; SPI_Write_Buf(WRITE_REG+RX_ADDR_P0,(uchar*)RX_ADDRESS,RX_ADR_WIDTH);/写RX节点地址 SPI_RW_Reg(WRITE_REG+EN_AA,0x01); /使能通道0的自动应答 SPI_RW_Reg(WRITE_REG+EN_RXADDR,0x01);/使能通道0的接收地址 SPI_RW_Reg(WRITE_REG+RF_CH,0); /设置RF通信频率/SPI_RW_Reg(WRITE_REG+SETUP_RETR,0x1a);/设置自动重发间隔时间:500us + 86us;最大自动重发次数:10次 SPI_RW_Reg(WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH);/选择通道0的有效数据宽度 SPI_RW_Reg(WRITE_REG+RF_SETUP,0x0f);/设置TX发射参数,0db增益,2Mbps,低噪声增益开启 SPI_RW_Reg(WRITE_REG+CONFIG, 0x0f);/配置基本工作模式的参数;PWR_UP,EN_CRC,16BIT_CRC,接收模式 CE = 1; /CE为高,进入接收模式 /该函数初始化NRF24L01到TX模式/设置TX地址,写TX数据宽度,设置RX自动应答的地址,填充TX发送数据,选择RF频道,波特率和LNA HCURR/PWR_UP,CRC使能/当CE变高后,即进入RX模式,并可以接收数据了 /CE为高大于10us,则启动发送. void NRF24L01_TX_Mode(void) CE=0; SPI_Write_Buf(WRITE_REG+TX_ADDR,(uchar*)TX_ADDRESS,TX_ADR_WIDTH);/写TX节点地址 SPI_Write_Buf(WRITE_REG+RX_ADDR_P0,(uchar*)RX_ADDRESS,RX_ADR_WIDTH); /设置TX节点地址,主要为了使能ACK SPI_RW_Reg(WRITE_REG+EN_AA,0x01); /使能通道0的自动应

温馨提示

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

评论

0/150

提交评论