⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 新建 文本文档.txt

📁 PTR4000模块的源文件
💻 TXT
字号:
3  软件设计
 
按照硬件电路设计,系统软件编程的基本思路是,系统上电时初始配置nRF2401 状态字,随后进入激活方式。本系统只需对状态字后的120 bit 进行配置,其值为0x500800d0dddddd00dddddddd836f05。配置后nRF2 401 的通道1 数据段长度8 bit , 地址段长度32 bit ,通道1 硬件地址0xdddddddd ,使能位16 校验段,单通道接收,突发传递模式,通信速率1 Mbit/ s ,晶振频率16 MHz ,输出功率0 dBm ,工作频段2 402 MHz ,
接收状态。控制器循环监测系统状态,当有数据要发送,控制nRF2401 发送数据;当接收数据就绪,从nRF2401 读出数据。接收数据时,为确认数据的正确性,在使能位16 校验段的同时,增加程序数据软校验功能。
nRF2401 初始配置函数定义如下:
void nRF2401-powerup-config(void)
{
 int i ,j ;
 unsigned char config- data[15 ] ,variable1 ;
 D1 = 0 ;
 D2 = 0 ;
 D3 = 0 ;  / / 3 个指示灯全亮
 config- data[0 ] = 0x50 ;
 config- data[1 ] = 0x08 ;
 config- data[2 ] = 0x0 ;
 config- data[3 ] = 0xd0 ;
 config- data[4 ] = 0xdd ;
 config- data[5 ] = 0xdd ;
 config- data[6 ] = 0xdd ;
 config- data[7 ] = 0x0 ;
 config- data[8 ] = 0xdd ;
 config- data[9 ] = 0xdd ;
 config- data[10 ] = 0xdd ;
 config- data[11 ] = 0xdd ;
 config- data[12 ] = 0x83 ;
 config- data[13 ] = 0x6f ;
 config- data[14 ] = 0x05 ;  / / 状态字配置值
 PWR-UP = 1 ;
 CE = 0 ;
 CS = 1 ;  / / nRF2401 进入配置方式
 for (i = 0 ;i < 10 ;i + + )
 {
  Delay500ns( ) ;
 }  / / CS 到DATA 至少延迟5μs
 DATA = 0 ;
 for (i = 0 ;i < 15 ;i + + )
 {
 variable1 = config- data[ i ] ;
 for (j = 0 ;j < 8 ;j + + )
 {
  CLK1 = 0 ;
  DATA = variable1 &0x80 ;  / / 配置时先写入MSB
  SomeNOP( ) ;SomeNOP( ) ;  / / 延迟
  CLK1 = 1 ;
  Delay500ns( ) ;  / / 时钟信号高电平保持至少500 ns
  CLK1 = 0 ;  / / 数据在CLK1 上升沿写入nRF2401
  variable1 = variable1 < < 1 ;
 }
}
 CS = 0 ;  / / CS 置低使配置有效
 D1 = 1 ;
 D2 = 1 ;
 D3 = 1 ;  / / 3 个指示灯全暗
}
nRF2401 数据发送函数定义如下:
void Transmit- data(unsigned char number)
{
 int i ,j ;
 unsigned char variable2 ;
 unsigned char transmit- data[5 ] ;
 transmit- data[0 ] = 0xdd ;
 transmit- data[1 ] = 0xdd ;
 transmit- data[2 ] = 0xdd ;
 transmit- data[3 ] = 0xdd ;  / / 接收方通道硬件地址
 transmit- data[4 ] = number ;
 TXEN( ) ;  / / nRF2401 进入发送状态
 for (i = 0 ;i < 10 ;i + + )
·19 ·
第30 卷第8 期           王 博,等:基于nRF2401 的无线数据传输系统           ·通信技术·
? 1994-2007 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
 {
  Delay500ns( ) ;
  }  / / CE到DATA 至少延迟5μs
 for (i = 0 ;i < 5 ;i + + )
 {
  variable2 = transmit- data[ i ] ;
  for (j = 0 ;j < 8 ;j + + )
  {
   CLK1 = 0 ;
   DATA = variable2 &0x80 ;  / / 发送时先输入MSB
   SomeNOP( ) ; SomeNOP( ) ;  / / 延迟
   CLK1 = 1 ;
   Delay500ns ( ) ;  / / 时钟信号高电平保持至少为
500ns
   CLK1 = 0 ;  / / 数据在CLK1 上升沿写入nRF2401
   variable2 < < = 1 ;
  }
 }
 CE = 0 ;  / / CE置低使发送有效
 nRF2401-actting-config( ) ;  / / nRF2401 进入激活方式,接
收状态
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -