基于nrf2401的rfid读卡系统的设计与实现(编辑修改稿)内容摘要:

,依次送入 nRF2401。 在 CS引脚的下降沿,新送入的配置字开始工作。 —— AT89S52 图 24 AT89S52功能模块图 AT89S52是一种低功耗、高性能 CMOS8位微控制器,具有 8K 在系统可编程 Flash 存储器。 使用 Atmel 公司高密度非易失性存储器技术制造,与工业 80C51产品指令和引脚完全兼容。 片上 Flash 允许程序存储器在系统可编程,亦适于常规编程器。 在单芯片上,拥有灵巧的 8位 CPU 和在系统可编程 Flash,使得 AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 考虑到本设计中控制器要求不是很高,而且对于 AT89系列也比较熟悉,所以这里我们 选择 AT89S52单片机作为控制器。 AT89S52具有以下标准功能 : 8k 字节 Flash, 256字节 RAM, 32位 I/O 口线,看门狗定时器 , 2个数据指针,三个 16位定时器 /计数器,一个 6向量 2级中断结构 , 全双工串行口,片内晶振及时钟电路。 另外, AT89S52可降至 0Hz 静态逻辑操作 , 支持 2种软件可选择节电模式。 空闲模式下, CPU 停止工作,允许 RAM、定时器 /计数器、串口、中断继续工作。 掉电保护方式下, RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。 串口电平转换器 —— MAX232 由于设计的读卡器是要与计算机连接,所以必须考虑到单片机的电平和计算机电平的转换,这里我们 选择 MAX232 作接口电路设计。 MAX232 芯片是美信公司专门为电脑的RS232 标准串口设计的接口电路 ,使用 +5v 单电源供电。 内部结构基本可分三个部分: 第一部分是电荷泵电路。 由 6 脚和 4 只电容构成。 功能是产生+12v 和 12v 两个电源,提供给 RS232 串口电平的需要。 第二部分是数据转换通道。 由 1 1 1 14 脚构成两个数据通道。 其中 13 脚( R1IN)、 12 脚( R1OUT)、 11 脚( T1IN)、 14 脚( T1OUT)为第一数据通道 ; 8 脚( R2IN)、 9 脚( R2OUT)、 10 脚( T2IN)、 7 脚 ( T2OUT)为第二数据通道。 TTL/CMOS 数据从 T1IN、 T2IN 输入转换成 RS232 数据从 T1OUT、 T2OUT送到电脑 DP9 插头; DP9 插头的 RS232 数据从 R1IN、 R2IN 输入转换成 TTL/CMOS数据后从 R1OUT、 R2OUT 输出。 第三部分是供电。 15 脚 DNG、 16 脚 VCC( +5v)。 图 25 MAX232 引脚和功能模块图 三、 有源式电子标签的设计 硬件部分 电路原理图 图 31 电子标签 电路图 标签部分采用 nrf24e1,外围电路可参考 Nordic 公司的 nAN2401 nRF2401A RF Layout Application Notes 绘制。 其中 DIO0~ DIO2 和 DIN0 引脚作为 SPI 接口与外部存储器相接,上电后存储器中的程序通过 SPI 口进入 nRF24e1,其引脚具体功能分配如下表 31: 引脚 功能 作用 DIO0 串行时钟引脚 提供外部存储器时钟信号 DIO1 串行数据输出口 SPI 数据输出,与外部存储器输入相接 DIO2 片选 CS GPIO 口,控制外部存储器是否 工作 DIN0 串行数据输入口 SPI 数据输入,与外部存储器输出相接 表 31 SPI 引脚功能表 软件部分 发送流程图 电子标签初始化 启动定时器,并进入配置模式 配置好进入发送模式,开始发送标签信息 检验发送是否超时,到规定时间继续下一发送周期 配置字设定 根据之前的介绍, nRF2401/24e1 的 ShockBurstTM 模式的配置字如下配置: int8u RFConfig[15] ={ 0x80, //接收频道二有效数据长度 0x80, //接收频道一有效数据长度 0x00,0x00,0x00,0x00,0x00, //接收频道二地址 0x00,0xaa,0xbb,0x12,0x34, //接收频道一地址 0x82, //32 位地址, 16 位 CRC,不使能 CRC //bit7~2: ADDR_W,最大 40 位 //bit1: CRC_L,( 0: 8 bit CRC; 1: 16 bit CRC) //bit0: CRC_EN //Logic 0: Onchip CRC generation/checking disabled //Logic 1: Onchip CRC generation/checking enabled 0x4f, //ShockBurst 模式, 250 kbps, 16M 晶振, 0dBm 最大功率 //Bit 15: RX2_EN //Logic 0: One channel receive //Logic 1: Two channels receive //Bit 14: Communication Mode //Logic 0: nRF2401 operates in direct mode. //Logic 1: nRF2401 operates in ShockBurst. mode //Bit 13: RF Data Rate( 0: 250 kbps; 1: 1 Mbps) //Bit 1210: nRF2401 crystal frequency //D12 D11 D10 Crystal Frequency [MHz] // 0 0 0 4 // 0 0 1 8 // 0 1 0 12 // 0 1 1 16 // 1 0 0 20 //Bit 98: Sets nRF2401 RF output power in transmit mode // D9 D8 P [dBm] // 0 0 20 // 0 1 10 // 1 0 5 // 1 1 0 0x04 //2400+2*1=2402MHZ=,发送模式 //Bit 7~1: Sets the frequency channel the nRF2401 operates on //Channelrf = 2400MHZ + RF_CH * //Bit 0: Set active mode //Logic 0: transmit mode; Logic 1: receive mode }。 具体实现 本节将具体描述电子标签驱动程序的几个主要基本函数: nRF24e1 初始化函数 Init( ),数据读写函数 SpiReadWrite(b),发射模式设置函数 SetTxMode( ),标签数据包发送函数 TransmitPacket(b),有了这几个函数,按照 流程图,电子标签驱动即可基本实现。 Nrf24e1 数据读写函数 SpiReadWrite(b), nRF24e1 初始化函数 Init( ),发射模式设置函数SetTxMode( )虽然简单,但很 关键,其代码如下: unsigned char SpiReadWrite(unsigned c。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。