文档库 最新最全的文档下载
当前位置:文档库 › NRF24L01多通道通信

NRF24L01多通道通信

NRF24L01多通道通信
NRF24L01多通道通信

无线抢答系统

本系统用到4个NRF24L01模块,最多可以加到7个NRF24L01(其中一个用作主机另外的六个用作从机)。显示用的是诺基亚的5110,MCU用的是52单片机。经亲测发送和接收都很好。在此给上原理图加程序。

附上成品图

主机代码

可下载到开发板上也可以自己做一个可以串口通信的最小系统或者去掉主机代码中的串口通信部分下载到上图做的板中(记得修改引脚)

#include

#include

typedef unsigned char uchar;

typedef unsigned char uint;

/*****************NRF24L01端口定义*****************************************/

sbit MISO =P0^4;

sbit MOSI =P0^3;

sbit SCK =P0^2;

sbit CE =P0^0;

sbit CSN =P0^1;

sbit IRQ =P0^5;

/*************LCD5110 I/O定义***********************************************/

sbit LCD_RST =P1^4;

sbit LCD_CE =P1^3;

sbit LCD_DC =P1^2;

sbit LCD_SCLK =P1^0;

sbit LCD_Din =P1^1;

/******************按键****************************************************/

sbit KEY1=P3^6;

sbit KEY2=P3^7;

/******************发光二极管*********************************************/ sbit led1=P1^6;

sbit led2=P1^7;

/******************NRF24L01地址宏定义*************************************/

#define TX_ADR_WIDTH 5 // 5 uints TX address width

#define RX_ADR_WIDTH 5 // 5 uints RX address width

#define TX_PLOAD_WIDTH 20 // 20 uints TX payload

#define RX_PLOAD_WIDTH 20 // 20 uints TX payload

uint const TX_ADDRESS[TX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01}; //本地地址uint const RX_ADDRESS[RX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01}; //接收地址0

uint const RX_ADDRESS1[RX_ADR_WIDTH]={0xf1,0xb3,0xb4,0xb5,0xb6}; //接收地址1

uint const RX_ADDRESS2[RX_ADR_WIDTH]={0xcd,0xb3,0xb4,0xb5,0xb6}; //接收地址2

uint const RX_ADDRESS3[RX_ADR_WIDTH]={0xa3,0xb3,0xb4,0xb5,0xb6}; //接收地址

3

uint const RX_ADDRESS4[RX_ADR_WIDTH]={0x0f,0xb3,0xb4,0xb5,0xb6}; //接收地址4

uint const RX_ADDRESS5[RX_ADR_WIDTH]={0x05,0xb3,0xb4,0xb5,0xb6}; //接收地址5

/********************NRF24L01寄存器指令*************************************/

#define READ_REG 0x00 // 读寄存器指令

#define WRITE_REG 0x20 // 写寄存器指令

#define RD_RX_PLOAD 0x61 // 读取接收数据指令

#define WR_TX_PLOAD 0xA0 // 写待发数据指令

#define FLUSH_TX 0xE1 // 冲洗发送FIFO指令

#define FLUSH_RX 0xE2 // 冲洗接收FIFO指令

#define REUSE_TX_PL 0xE3 // 定义重复装载数据指令

#define NOP 0xFF // 保留

/**********************SPI(nRF24L01)寄存器地址*******************************/

#define CONFIG 0x00 // 配置收发状态,CRC校验模式以及收发状态响应方式

#define EN_AA 0x01 // 自动应答功能设置

#define EN_RXADDR 0x02 // 可用信道设置

#define SETUP_AW 0x03 // 收发地址宽度设置

#define SETUP_RETR 0x04 // 自动重发功能设置

#define RF_CH 0x05 // 工作频率设置

#define RF_SETUP 0x06 // 发射速率、功耗功能设置

#define STATUS 0x07 // 状态寄存器

#define OBSERVE_TX 0x08 // 发送监测功能

#define CD 0x09 // 地址检测

#define RX_ADDR_P0 0x0A // 频道0接收数据地址

#define RX_ADDR_P1 0x0B // 频道1接收数据地址

#define RX_ADDR_P2 0x0C // 频道2接收数据地址

#define RX_ADDR_P3 0x0D // 频道3接收数据地址

#define RX_ADDR_P4 0x0E // 频道4接收数据地址

#define RX_ADDR_P5 0x0F // 频道5接收数据地址

#define TX_ADDR 0x10 // 发送地址寄存器

#define RX_PW_P0 0x11 // 接收频道0接收数据长度

#define RX_PW_P1 0x12 // 接收频道0接收数据长度

#define RX_PW_P2 0x13 // 接收频道0接收数据长度

#define RX_PW_P3 0x14 // 接收频道0接收数据长度

#define RX_PW_P4 0x15 // 接收频道0接收数据长度

#define RX_PW_P5 0x16 // 接收频道0接收数据长度

#define FIFO_STATUS 0x17 // FIFO栈入栈出状态寄存器设置

/******************ASCII数组区**********************************/

code unsigned char font6x8[92][6] = //数字和字母

{

{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },

{ 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00 },

{ 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 },

{ 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 },

{ 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12 },

{ 0x00, 0x62, 0x64, 0x08, 0x13, 0x23 },

{ 0x00, 0x36, 0x49, 0x55, 0x22, 0x50 },

{ 0x00, 0x00, 0x05, 0x03, 0x00, 0x00 },

{ 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00 },

{ 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00 },

{ 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14 },

{ 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08 },

{ 0x00, 0x00, 0x00, 0xA0, 0x60, 0x00 },

{ 0x00, 0x08, 0x08, 0x08, 0x08, 0x08 },

{ 0x00, 0x00, 0x60, 0x60, 0x00, 0x00 },

{ 0x00, 0x20, 0x10, 0x08, 0x04, 0x02 },

{ 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E },

{ 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00 },

{ 0x00, 0x42, 0x61, 0x51, 0x49, 0x46 },

{ 0x00, 0x21, 0x41, 0x45, 0x4B, 0x31 },

{ 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10 },

{ 0x00, 0x27, 0x45, 0x45, 0x45, 0x39 },

{ 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30 },

{ 0x00, 0x01, 0x71, 0x09, 0x05, 0x03 },

{ 0x00, 0x36, 0x49, 0x49, 0x49, 0x36 },

{ 0x00, 0x06, 0x49, 0x49, 0x29, 0x1E },

{ 0x00, 0x00, 0x36, 0x36, 0x00, 0x00 },

{ 0x00, 0x00, 0x56, 0x36, 0x00, 0x00 },

{ 0x00, 0x08, 0x14, 0x22, 0x41, 0x00 },

{ 0x00, 0x14, 0x14, 0x14, 0x14, 0x14 },

{ 0x00, 0x00, 0x41, 0x22, 0x14, 0x08 },

{ 0x00, 0x02, 0x01, 0x51, 0x09, 0x06 },

{ 0x00, 0x32, 0x49, 0x59, 0x51, 0x3E },

{ 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C },

{ 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36 },

{ 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22 },

{ 0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C },

{ 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41 },

{ 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01 },

{ 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A },

{ 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F },

{ 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01 }, { 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41 }, { 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40 }, { 0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F }, { 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F }, { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E }, { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06 }, { 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E }, { 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46 }, { 0x00, 0x46, 0x49, 0x49, 0x49, 0x31 }, { 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01 }, { 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F }, { 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F }, { 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F }, { 0x00, 0x63, 0x14, 0x08, 0x14, 0x63 }, { 0x00, 0x07, 0x08, 0x70, 0x08, 0x07 }, { 0x00, 0x61, 0x51, 0x49, 0x45, 0x43 }, { 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00 }, { 0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55 }, { 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00 }, { 0x00, 0x04, 0x02, 0x01, 0x02, 0x04 }, { 0x00, 0x40, 0x40, 0x40, 0x40, 0x40 }, { 0x00, 0x00, 0x01, 0x02, 0x04, 0x00 }, { 0x00, 0x20, 0x54, 0x54, 0x54, 0x78 }, { 0x00, 0x7F, 0x48, 0x44, 0x44, 0x38 }, { 0x00, 0x38, 0x44, 0x44, 0x44, 0x20 }, { 0x00, 0x38, 0x44, 0x44, 0x48, 0x7F }, { 0x00, 0x38, 0x54, 0x54, 0x54, 0x18 }, { 0x00, 0x08, 0x7E, 0x09, 0x01, 0x02 }, { 0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C }, { 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78 }, { 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00 }, { 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00 }, { 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00 }, { 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00 }, { 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78 }, { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78 }, { 0x00, 0x38, 0x44, 0x44, 0x44, 0x38 }, { 0x00, 0xFC, 0x24, 0x24, 0x24, 0x18 }, { 0x00, 0x18, 0x24, 0x24, 0x18, 0xFC }, { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08 }, { 0x00, 0x48, 0x54, 0x54, 0x54, 0x20 }, { 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20 },

{ 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C },

{ 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C },

{ 0x00, 0x44, 0x28, 0x10, 0x28, 0x44 },

{ 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C },

{ 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44 },

{ 0x14, 0x14, 0x14, 0x14, 0x14, 0x14 }

};

/***********标志位**********************************************/

/***************************************************************/

/***************函数声明区*****************************************************************/ void LCD_write_byte(unsigned char dat, unsigned char command); //SPI写入数据函数void LCD_init(void); //LCD5110初始化函数

void LCD_set_XY(unsigned char X, unsigned char Y); //设置显示指针函数

void LCD_write_char(unsigned char c); //写一个字符到LCD5110

void LCD_clear(void); //LCD初始化函数

void inerDelay_us(unsigned char n); //延时函数

void LCD_write_english_string(unsigned char X,unsigned char Y,char *s); //写字符串到LCD函数

void LCD_write_english_char(unsigned char X,unsigned char Y,unsigned char ch); //写一个字符到LCD函数

void Delay(unsigned int s); //场延时函数

void NRF24L01_init(void);

//NRF24L01初始化

uint NRF24L01_SPI_RW(uint uchar); //SPI写入和读出

uchar NRF24L01_SPI_Read(uchar reg); //读寄存器reg

void NRF24L01_SetRX_Mode(void); //设置接收模式

uint NRF24L01_SPI_RW_Reg(uchar reg, uchar value); //向寄存器reg中存入数据

uint NRF24L01_SPI_Read_Buf(uchar reg, uchar *pBuf, uchar uchars); //读取寄存器reg 的数据,存到pBuf中

uint NRF24L01_SPI_Write_Buf(uchar reg, uchar *pBuf, uchar uchars); //向寄存器reg 中写入数据pBuf

unsigned char NRF24L01_RxPacket(unsigned char* rx_buf); //由MCU 读取NRF24L01接收到的数据

void NRF24L01_TxPacket(unsigned char * tx_buf,unsigned char xindaoji); //由NRF24L01 发送数据tx_buf

void USART_init(void); //串口的初始化

void USART_TxPacket_char(uchar f_data); //通过串口发送一个字节数据函数

void USART_TxPacket_buf(uchar *f_data); //通过串口发送一个字符串的数据函数/************************************************************************** ***************/

/*****************************************长延时*****************************************/

void Delay(unsigned int s)

{

unsigned int i,j;

for(i=0; i<1000; i++);

for(j=0; j

}

/************************************************************************** ****************/

/***************************NRF2401*************************************** ****************/

uint bdata sta; //状态标志

sbit RX_DR =sta^6; //接收终端标示

sbit TX_DS =sta^5; //发送中断标志

sbit MAX_RT =sta^4; //重发次数中断标志,当重发次数超过了最发充许的重发次数该中断产生

/************************************************************************** ***************/

/************************************************************************** ****************

/*延时函数

/************************************************************************** ****************/

void inerDelay_us(unsigned char n)

{

for(;n>0;n--)

_nop_();

}

/************************************************************************** ****************/

/*********************************************************** 函数名称:LCD_write_byte

函数功能:模拟SPI接口时序写数据/命令LCD

入口参数:data :写入的数据;

command :写数据/命令选择;

出口参数:无

备注:

***********************************************************/ void LCD_write_byte(unsigned char dat, unsigned char command)

{

unsigned char i;

LCD_CE = 0; //5110片选有效,允许输入数据if (command==0) //写命令

LCD_DC = 0;

else

LCD_DC=1;

for(i=0;i<8;i++) //传送8bit数据

{

if(dat&0x80)

LCD_Din= 1;

else

LCD_Din = 0;

LCD_SCLK = 0;

dat = dat << 1;

LCD_SCLK = 1;

}

LCD_CE = 1; //禁止5110

}

/*********************************************************** 函数名称:LCD_init

函数功能:5110初始化

入口参数:无

出口参数:无

备注:

***********************************************************/ void LCD_init(void)

{

LCD_RST = 0; // 产生一个让LCD复位的低电平脉冲

inerDelay_us(1);

LCD_RST = 1;

LCD_CE = 0; // 关闭LCD

inerDelay_us(1);

LCD_CE = 1; // 使能LCD

inerDelay_us(1);

LCD_write_byte(0x21, 0); // 使用扩展命令设置LCD模式

LCD_write_byte(0xc8, 0); // 设置液晶偏置电压

LCD_write_byte(0x06, 0); // 温度校正

LCD_write_byte(0x13, 0); // 1:48

LCD_write_byte(0x20, 0); // 使用基本命令,V=0,水平寻址

LCD_clear(); // 清屏

LCD_write_byte(0x0c, 0); // 设定显示模式,正常显示

LCD_CE = 0; // 关闭LCD

}

/*********************************************************** 函数名称:LCD_set_XY

函数功能:设置LCD坐标函数

入口参数:X :0-83

Y :0-5

出口参数:无

备注:

***********************************************************/ void LCD_set_XY(unsigned char X, unsigned char Y)

{

LCD_write_byte(0x40 | Y, 0); // column

LCD_write_byte(0x80 | X, 0); // row

}

/*********************************************************** 函数名称:LCD_write_char

函数功能:显示英文字符

入口参数:c : 显示的字符

出口参数:无

备注:

***********************************************************/ void LCD_write_char(unsigned char c)

{

unsigned char line;

c -= 32; //数组的行号

for (line=0; line<6; line++)

LCD_write_byte(font6x8[c][line], 1);

}

/*------------------------------------------

LCD_clear: LCD清屏函数

编写日期:20080918

--------------------------------------------*/

void LCD_clear(void)

{

unsigned int i;

LCD_write_byte(0x0c, 0);

LCD_write_byte(0x80, 0);

for (i=0; i<504; i++)

LCD_write_byte(0, 1);

}

/*-------------------------------------------------------------------------------

函数名称:void LCD_write_english_string(unsigned char X,unsigned char Y,char *s)

函数功能:写字符串函数

入口参数:X、Y :位图绘制的起始X、Y坐标;

*s :字符串;

出口参数:无

备注:

--------------------------------------------------------------------------------*/

void LCD_write_english_string(unsigned char X,unsigned char Y,char *s)

{

LCD_set_XY(X,Y);

while (*s)

{

LCD_write_char(*s);

s++;

}

}

/*-------------------------------------------------------------------------------

函数名称:void LCD_write_english_string(unsigned char X,unsigned char Y,char *s)

函数功能:写字符串函数

入口参数:X、Y :位图绘制的起始X、Y坐标;

*s :字符串;

出口参数:无

备注:

--------------------------------------------------------------------------------*/

void LCD_write_english_char(unsigned char X,unsigned char Y,unsigned char ch)

{

LCD_set_XY(X,Y);

LCD_write_char(ch);

}

/************************************************************************** *******/

/************************************************************************** **************/

/*NRF24L01初始化

//************************************************************************* **************/

void NRF24L01_init(void)

{

inerDelay_us(100);

CE=0; // 芯片使能

CSN=1; // (Spi disable)SPI 失能,即禁止2401芯片的SPI功能

SCK=0; // 初始化SPI时钟

NRF24L01_SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH); // 设置本地地址

NRF24L01_SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS, RX_ADR_WIDTH); // 设置接收端地址0

NRF24L01_SPI_Write_Buf(WRITE_REG + RX_ADDR_P1, RX_ADDRESS1, RX_ADR_WIDTH); // 设置接收端地址1

NRF24L01_SPI_RW_Reg(WRITE_REG + RX_ADDR_P2,RX_ADDRESS2[0]); // 设置接收端地址2

NRF24L01_SPI_RW_Reg(WRITE_REG + RX_ADDR_P3,RX_ADDRESS3[0]); // 设置接收端地址3

NRF24L01_SPI_RW_Reg(WRITE_REG + RX_ADDR_P4,RX_ADDRESS4[0]); // 设置接收端地址4

NRF24L01_SPI_RW_Reg(WRITE_REG + RX_ADDR_P5,RX_ADDRESS5[0]); // 设置接收端地址5

NRF24L01_SPI_RW_Reg(WRITE_REG + EN_AA,0x3f); // 频道0,1,2,3,4,5自动ACK应答允许

NRF24L01_SPI_RW_Reg(WRITE_REG + EN_RXADDR,0x3f); // 允许接收地址有频道0,1,2,3,4,5,如果需要多频道可以参考Page21

NRF24L01_SPI_RW_Reg(WRITE_REG+SETUP_RETR,0x1a); //设置自动重发的延时和次数,延时大小为4000+86us,次数5次

NRF24L01_SPI_RW_Reg(WRITE_REG + RF_CH,0); // 设置信道工作为2.4GHZ,收发必须一致

NRF24L01_SPI_RW_Reg(WRITE_REG + RX_PW_P0,RX_PLOAD_WIDTH); //设置接收数据长度,本次设置为32字节

NRF24L01_SPI_RW_Reg(WRITE_REG + RX_PW_P1, RX_PLOAD_WIDTH); //设置接收数据长度,本次设置为32字节

NRF24L01_SPI_RW_Reg(WRITE_REG + RX_PW_P2, RX_PLOAD_WIDTH); //设置接收数据长度,本次设置为32字节

NRF24L01_SPI_RW_Reg(WRITE_REG + RX_PW_P3, RX_PLOAD_WIDTH); //设置接收数据长度,本次设置为32字节

NRF24L01_SPI_RW_Reg(WRITE_REG + RX_PW_P4, RX_PLOAD_WIDTH); //设置接收数据长度,本次设置为32字节

NRF24L01_SPI_RW_Reg(WRITE_REG + RX_PW_P5, RX_PLOAD_WIDTH); //设置接收数据长度,本次设置为32字节

NRF24L01_SPI_RW_Reg(WRITE_REG + RF_SETUP,0x07); //设置发射速率为2MHZ,发射功率为最大值0dB

NRF24L01_SPI_RW_Reg(WRITE_REG+CONFIG,0x0f); //IRQ收发完成中断响应,16为CRC,主接收

}

/************************************************************************** **************************

/*函数:uint SPI_RW(uint uchar)

/*功能:NRF24L01的SPI写时序

/************************************************************************** **************************/

uint NRF24L01_SPI_RW(uint uchar) //发送uchar数据,并返回接收到的数据{

uint bit_ctr; //位计数器,用于确定接收或者发送的位数,这里是一个字节即8位

for(bit_ctr=0;bit_ctr<8;bit_ctr++)

{

MOSI = (uchar & 0x80); // (output 'uchar', MSB to MOSI)输出数据,MSB to MOSI,即先送高位后送低位

uchar = (uchar << 1); // (shift next bit into MSB..)右移一位,准备传送下一个数据

SCK = 1; // (Set SCK high..)设置SCK为高

uchar |= MISO; // (capture current MISO bit )接收24L01传出的数据,他是先先送高位后送低位

SCK = 0; // (..then set SCK low again)拉低SCK时钟产生下降沿,从MSOI送出数据,在下一次SCK为高时读入MISO

}

return(uchar); // return read uchar

}

/************************************************************************** **************************

/*函数:uchar SPI_Read(uchar reg)

/*功能:NRF24L01的SPI时序

/************************************************************************** **************************/

uchar NRF24L01_SPI_Read(uchar reg)

{

uchar reg_val;

CSN = 0; // (CSN low, initialize SPI communication...)CSN拉低,启动SPI通信

NRF24L01_SPI_RW(reg); // (Select register to read from..)设置读取的寄存器

reg_val = NRF24L01_SPI_RW(0); // (..then read registervalue)读出寄存器中的数据

CSN = 1; // (CSN high, terminate SPI communication)CSN拉高,

终止SPI通信

return(reg_val); // (return register value)返回接收到的数据}

/************************************************************************** **************************/

/*功能:NRF24L01读写寄存器函数

/************************************************************************** **************************/

uint NRF24L01_SPI_RW_Reg(uchar reg, uchar value)

{

uint status;

CSN = 0; // (CSN low, init SPI transaction)SCN拉低,启动SPI通信

status = NRF24L01_SPI_RW(reg); // (select register)选择要操作的寄存器

NRF24L01_SPI_RW(value); // (..and write value to it..)向选择的寄存器中写入数据

CSN = 1; // (CSN high again)CSN拉高,终止SPI通信

return(status); // (return nRF24L01 status uchar)返回2401 reg寄存器的状态

}

/************************************************************************** **************************/

/*函数:uint SPI_Read_Buf(uchar reg, uchar *pBuf, uchar uchars)

/*功能: 用于读数据,reg:为寄存器地址,pBuf:为待读出数据地址,uchars:读出数据的个数

/************************************************************************** **************************/

uint NRF24L01_SPI_Read_Buf(uchar reg, uchar *pBuf, uchar uchars)

{

uint status,uchar_ctr;

CSN = 0; // Set CSN low, init SPI tranaction

status = NRF24L01_SPI_RW(reg); // Select register to write to and read status uchar

for(uchar_ctr=0;uchar_ctr

pBuf[uchar_ctr] = NRF24L01_SPI_RW(0); //

CSN = 1;

return(status); // return nRF24L01 status uchar

}

/************************************************************************** *******************************

/*函数:uint SPI_Write_Buf(uchar reg, uchar *pBuf, uchar uchars)

/*功能: 用于写数据,reg:为寄存器地址,pBuf:为待写入数据地址,uchars:写入数据的个数

/************************************************************************** *******************************/

uint NRF24L01_SPI_Write_Buf(uchar reg, uchar *pBuf, uchar uchars)

{

uint status,uchar_ctr;

CSN = 0; //SPI使能

status = NRF24L01_SPI_RW(reg);

for(uchar_ctr=0; uchar_ctr

NRF24L01_SPI_RW(*pBuf++);//指向下一个数据

CSN = 1; //关闭SPI

return(status); //返回24L01的状态

}

/************************************************************************** **************************/

/*函数:void SetRX_Mode(void)

/*功能:数据接收配置

/************************************************************************** **************************/

void NRF24L01_SetRX_Mode(void)

{

CE=0; //片选使能

NRF24L01_SPI_RW_Reg(WRITE_REG + CONFIG, 0x0f); // IRQ收发完成中断响应,16位CRC ,主接收

CE = 1; //片选失能

inerDelay_us(130);

}

/************************************************************************** ****************************/

/*函数:unsigned char nRF24L01_RxPacket(unsigned char* rx_buf)

/*功能:数据读取后放如rx_buf接收缓冲区中

/************************************************************************** ****************************/

unsigned char NRF24L01_RxPacket(unsigned char* rx_buf)

{

unsigned char RX_P_NO; //接收通道号

NRF24L01_SetRX_Mode();

Delay(1000);

sta=NRF24L01_SPI_Read(STA TUS); // 读取状态寄存其来判断数据接收状?

RX_P_NO=sta&0x0e; //获取通道号!!!!!!!!!!!!!!!

if(RX_DR) // 判断是否接收到数据

{

CE = 0; //SPI使能

NRF24L01_SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);// (read receive payload from RX_FIFO buffer)从接收缓冲器中读出数据

led2=0; //用发光二极管显示收没收到数据

}

NRF24L01_SPI_RW_Reg(WRITE_REG+STA TUS,sta); //接收到数据后RX_DR,TX_DS,MAX_PT都置高为1,通过写1来清除中断标志

CSN=0;

NRF24L01_SPI_RW(FLUSH_RX); //用于清空FIFO !!关键!!防止接收先前的数据!

CSN=1;

Delay(100);

led2=1;

return RX_P_NO; //没有接收到数据RX_P_NO则为0x0e即寄存器RX_FIFO为空

}

/************************************************************************** *********************************

/*函数:void nRF24L01_TxPacket(unsigned char * tx_buf)

/*功能:发送tx_buf中数据

/************************************************************************** ********************************/

void NRF24L01_TxPacket(unsigned char * tx_buf,unsigned char xindaoji)

{

CE=0; //(StandBy I模式)待机I模式

CSN=0;

NRF24L01_SPI_RW(FLUSH_TX); //用于清空FIFO !!关键!!防止发送先前的数据!

CSN=1;

switch(xindaoji)

{

case 0:

NRF24L01_SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH); // 装载本地地址0

NRF24L01_SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS, RX_ADR_WIDTH); // 装载接收端地址0

break;

case 1:

NRF24L01_SPI_Write_Buf(WRITE_REG + TX_ADDR, RX_ADDRESS1, TX_ADR_WIDTH); // 装载接收端地址1

NRF24L01_SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS1, RX_ADR_WIDTH); // 装载接收端地址1

break;

case 2:

NRF24L01_SPI_Write_Buf(WRITE_REG + TX_ADDR, RX_ADDRESS2, TX_ADR_WIDTH); // 装载接收端地址2

NRF24L01_SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS2, RX_ADR_WIDTH); // 装载接收端地址2

break;

case 3:

NRF24L01_SPI_Write_Buf(WRITE_REG + TX_ADDR, RX_ADDRESS3, TX_ADR_WIDTH); // 装载接收端地址3

NRF24L01_SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS3, RX_ADR_WIDTH); // 装载接收端地址3

break;

case 4:

NRF24L01_SPI_Write_Buf(WRITE_REG + TX_ADDR, RX_ADDRESS4, TX_ADR_WIDTH); // 装载接收端地址4

NRF24L01_SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS4, RX_ADR_WIDTH); // 装载接收端地址4

break;

case 5:

NRF24L01_SPI_Write_Buf(WRITE_REG + TX_ADDR,RX_ADDRESS5, TX_ADR_WIDTH); // 装载接收端地址5

NRF24L01_SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS5, RX_ADR_WIDTH); // 装载接收端地址5

break;

}

NRF24L01_SPI_Write_Buf(WR_TX_PLOAD, tx_buf, TX_PLOAD_WIDTH); // 装载数据

NRF24L01_SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e); // IRQ收发完成中断响应,16位CRC,主发送

CE=1; //置高CE,激发数据发送

inerDelay_us(10);

NRF24L01_SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH); // 装载本地地址0

NRF24L01_SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS, RX_ADR_WIDTH); // 装载接收端地址0

}

/************************************************************************** **************************/

/************************************************************************** *********************************

/*函数:void USART_init(void)

/*功能:串口的初始化

/************************************************************************** ********************************/

void USART_init()

{

TMOD=0x20; //设置定时器1的工作方式为2

TH1=0xfd;

TL1=0xfd;

TCON=0x40; //开定时器1

SCON=0x50; //SMOD的设置在PCON寄存器的最高位,SMOD的默认设置为0

IE=0x90;

}

/************************************************************************** *********************************

/*函数:void USART_TxPacket_char(uchar f_data)

/*功能:通过串口发送一个字节的函数(即向上位机发送数据)

/************************************************************************** ********************************/

void USART_TxPacket_char(uchar f_data)

{

ES=0;

SBUF=f_data;

while(!TI);

TI=0;

ES=1;

}

/************************************************************************** *********************************

/*函数:void USART_TxPacket_buf(uchar *f_data)

/*功能:通过串口发送字符串的函数(即向上位机发送数据)

/************************************************************************** ********************************/

void USART_TxPacket_buf(uchar *f_data)

{

while(*f_data!=0) //判断是不是字符串的结束符

{

USART_TxPacket_char(*f_data); //不是传人一个该字节

f_data++; //字符指针向下移一位

}

}

/************************************************************************** *********************************/

void main()

{

unsigned char TxBuf[TX_PLOAD_WIDTH]="answer";//定义发送的数据数组

unsigned char RxBuf[RX_PLOAD_WIDTH]={0}; //定义接收数据的数组

unsigned char tf=0; //清除显示标志

unsigned char number=0; //记录接收的是第几个发送机

LCD_init(); //5110的初始化

LCD_clear(); //5110的清屏函数

NRF24L01_init(); //NRF24L01的初始化

USART_init(); //串口初始化

LCD_write_english_string(3*6,0,"acceptor"); //字符串显示

USART_TxPacket_buf(" 桂林电子科技大学");

USART_TxPacket_buf(" 三院科协");

while(1)

{

while(1)

{

number=NRF24L01_RxPacket(RxBuf);

number=number>>1; //寄存器STATUS的1-3位中存的才是通道号所有右移1使通道号变为低3位好处理

Delay(1000);

switch(number)

{

case 0:

if(RxBuf[0]==0)

{

LCD_write_english_string(2*6,1,"0 answer");

USART_TxPacket_buf("

0回答");

tf=1; //清除回答模式标志位

}

else

{

LCD_write_english_string(0*6,2,"jury 0:");

LCD_write_english_char(7*6,2,' ');

LCD_write_english_char(8*6,2,RxBuf[1]+0x30);

if(RxBuf[1]==10)

{

LCD_write_english_char(7*6,2,1+0x30);

LCD_write_english_char(8*6,2,0+0x30);

USART_TxPacket_buf("评委0:10");

USART_TxPacket_buf("

");

}

else

{

USART_TxPacket_buf("评委0:");

USART_TxPacket_char(RxBuf[1]+0x30);

USART_TxPacket_buf("

");

}

}

break;

case 1:

if(RxBuf[0]==0)

{

LCD_write_english_string(2*6,1,"1 answer");

USART_TxPacket_buf("

1回答");

tf=1; //清除回答模式标志位

}

else

{

LCD_write_english_string(0,3,"jury 1:");

LCD_write_english_char(7*6,2,' ');

LCD_write_english_char(8*6,3,RxBuf[1]+0x30);

if(RxBuf[1]==10)

{

LCD_write_english_char(7*6,2,1+0x30);

LCD_write_english_char(8*6,2,0+0x30);

USART_TxPacket_buf("评委1:10");

USART_TxPacket_buf("

");

}

else

{

USART_TxPacket_buf("评委1:");

USART_TxPacket_char(RxBuf[1]+0x30);

USART_TxPacket_buf("

");

}

}

break;

case 2:

if(RxBuf[0]==0)

{

LCD_write_english_string(2*6,1,"2 answer");

USART_TxPacket_buf("

2回答");

tf=1; //清除回答模式标志位

}

else

{

LCD_write_english_string(0*6,4,"jury 2:");

LCD_write_english_char(7*6,2,' ');

LCD_write_english_char(8*6,4,RxBuf[1]+0x30);

if(RxBuf[1]==10)

{

LCD_write_english_char(7*6,2,1+0x30);

LCD_write_english_char(8*6,2,0+0x30);

USART_TxPacket_buf("评委2:10");

USART_TxPacket_buf("

");

}

else

{

USART_TxPacket_buf("评委2:");

USART_TxPacket_char(RxBuf[1]+0x30);

USART_TxPacket_buf("

");

}

}

break;

case 3:

if(RxBuf[0]==0)

{

LCD_write_english_string(2*6,1,"3 answer");

USART_TxPacket_buf("

3回答");

tf=1; //清除回答模式标志位

}

else

卫星通信技术在智能交通中的应用

卫星通信技术在智能交通中的应用

卫星通信技术在智能交通中的应用 姓名:李泽宇学号:100740318 专业:交通3班 摘要:本文卫星通信系统的组成及功能以及其在智能交通中的应用,就卫星通信技术中的卫星定位系统在智能交通中的应用作简要分析,并简单介绍了现代卫星通信技术在智能交通中的应用案例,提出了个人对智能交通系统未来发展的建议和祝愿,希望智能交通为人民带来便捷的出行。 关键字:卫星通信系统;智能交通;应用 前言:卫星通信是一种利用人造地球卫星作为中继站来转发无线电波而进行的两个或多个地球站之间的通信。卫星通信技术服务于人类的各个角落,为人类的生活,交流带来了方便。现代卫星通信技术在智能交通中的应用涉及到了多个方面,如全球卫星定位系统GPS 及其在智能交通系统ITS 中的应用;基于卫星定位和无线通信技术的道路电子收费系统;卫星通信技术将在交通运输领域深入应用等。 正文:1 卫星通信系统 1.1 卫星系统的组成卫星通信系统是由通信卫星和经该卫星连通的地球站两部分组成。静止通信卫星是目前全球卫星通信系统中最常用的星体,是将通信卫星发射到赤道上空35860 公里的高度上,使卫星运转方向与地球自转方向一致,并使卫星的运转周期正好等于地球的自转周期(24 小时),从而使卫星始终保持同步运行状态。故静止卫星也称为同步卫星。静止卫星天线波束最大覆盖面可以达到大于地球表面总面积的三分之一。因此,在静止轨道上,只要等间隔地放置三颗通信卫星,其天线波束就能基本上覆盖整个地球(除两极地区外),实现全球范围的通信。目前使用的国际通信卫星系统,就是按照上述原理建立起来的,三颗卫星分别位于大西洋、太平洋和印度洋上空。 1.2 卫星系统的功能 1.2.1 卫星系统功能方框图示于下图: 1.2.2 位置与姿态控制系统从理论上讲,静止卫星的位置相对于地球说是静止不动的,但是实际上它并不是经常能够保持这种相对静止的状态。这是因为地球并不是一个

一种卫星导航接收机多通道联合捕获方法

(10)申请公布号 CN 102590833 A (43)申请公布日 2012.07.18C N 102590833 A *CN102590833A* (21)申请号 201210063538.8 (22)申请日 2012.03.12 G01S 19/24(2010.01) G01S 19/29(2010.01) G01S 19/30(2010.01) (71)申请人航天恒星科技有限公司 地址100086 北京市海淀区知春路82号院 (72)发明人庞羽佳 李烨 蒋勇 叶扬 李东俊 刘洋 万祥 (74)专利代理机构中国航天科技专利中心 11009 代理人 安丽 (54)发明名称 一种卫星导航接收机多通道联合捕获方法 (57)摘要 一种卫星信号多通道捕获方法,特别是卫星 导航接收机多通道联合捕获方法,属于卫星导航 技术领域。该方法,包括在卫星导航接收机上建立 两个信号捕获系统;采用通用异步串口UART 进行 通信连接,两个信号捕获系统分别收集不同导航 星信号捕获信息数据,并将有效信息进行交换。本 发明提供了一种信号搜索范围广、捕星速度快、计 算量少且资源耗费少的多通道联合捕获方法;接 收机盲捕(冷启)时间缩短;两个信号捕获系统 互为备份,增加了系统可靠性;某个信号捕获系 统复位或者重启后,可通过接收另一系统的可用 星信息实现快速恢复。 (51)Int.Cl. 权利要求书2页 说明书7页 附图2页 (19)中华人民共和国国家知识产权局(12)发明专利申请 权利要求书 2 页 说明书 7 页 附图 2 页

1.一种卫星导航接收机多通道联合捕获方法,其特征在于包括下列步骤: (1)在卫星导航接收机上建立两个信号捕获系统,每个信号捕获系统中最多捕获12颗GPS导航星,其中一个信号捕获系统对N颗不同星号的导航星进行捕获,N=1~12,另一个信号捕获系统对另外M颗不同星号的导航星进行捕获,M=1~12; (2)采用通用异步串口UART将步骤(1)中建立的两个信号捕获系统进行通信连接; (3)在两个信号捕获系统中分别采用二维搜索策略对卫星信号进行捕获,收集信号捕获信息数据,并将收集到的数据封装进数据帧,设置数据帧头和校验和; (4)两个信号捕获系统将己方在步骤(3)封装好的数据帧发送给对方; (5)两个信号捕获系统接收到对方发送来的数据帧后,对数据帧进行处理,辅助完成卫星定位;处理过程包括: 5.1首先根据数据帧中的帧头和校验和对数据的有效性进行判断,如果数据有效则进入步骤5.2,否则进入步骤(3); 5.2从数据帧提取导航星信息,根据己方情况判断是否需要将有效导航星置入,需要置入时,选择性地将有效导航星信息置入通道相关器,并对选定导航星进行捕获和跟踪。 2.根据权利要求1所述的一种卫星导航接收机多通道联合捕获方法,其特征在于:步骤1)中每个信号捕获系统均包括处理器、存储器、12路通道相关器以及串口通信UART模块,处理器对通道相关器、存储器和串口通信UART模块进行控制并与其三者进行数据交换; 12个通道相关器为并行结构,即可同时对相同或不同的卫星信号进行捕获和跟踪; 12个通道相关器中的每个通道相关器同一时间只能对一颗导航卫星信号进行搜索和跟踪; 12个通道相关器中的每个通道相关器完成一颗导航卫星信号搜索后,若没有对该卫星信号完成捕获和跟踪,则该通道更换搜索卫星,即对另一颗导航卫星的信号进行捕获和跟踪。 3.根据权利要求1所述的一种卫星导航接收机多通道联合捕获方法,其特征在于:步骤(2)中通信方式设为全双工模式,并分别设置通信双方为相同的波特率和发送、接收模式。 4.根据权利要求1所述的一种卫星导航接收机多通道联合捕获方法,其特征在于:步骤 5.2中选择性地将有效导航星信息置入通道相关器的过程为: 5.2.1首先根据导航星信息判断并提取接收到的可用于定位解算的导航卫星集合,并从步骤(3)己方信号捕获系统所得到的信息数据提取可用于定位解算的导航卫星集合,判断上述两部分集合的并集不小于4个,则进入步骤5.2.2,否则返回步骤3); 5.2.2判断己方是否已处于定位状态,即已捕获到4颗以上导航星且成功进行定位解算,若未处于定位状态,则进入步骤5.2.3,否则返回步骤(3); 5.2.3将接收到的可用于定位解算的导航卫星置入本地通道相关器中,其中每个卫星的置入过程为: 如果该卫星已经存在于本地12个通道相关器中,则判断该卫星是否在本地被捕获,如果已捕获则返回步骤(3),否则在包含该卫星的通道相关器中更新该卫星的多普勒信息;如果该卫星未存在于本地12个通道相关器中,则判断本地通道相关器中是否存在有未捕

GEO多波束卫星通信网络关键技术研究

2009年第05期,第42卷 通 信 技 术 Vol.42,No.05,2009 总第209期Communications Technology No.209,Totally GEO多波束卫星通信网络关键技术研究 杨巧丽①②, 陆锐敏②, 马刈非① (①解放军理工大学 通信工程学院,江苏 南京 210007;②总参第63研究所,江苏 南京 210007) 【摘 要】文章对GEO多波束卫星通信网络的体系结构进行了分析研究;提出了一种集中式与分布式相结合的天地一体化无线资源管理模式;针对QoS保证和特殊的抗干扰应用需求,对其呼叫准入控制、波束切换管理、分组调度策略等关键技术给出了初步的研究建议。 【关键词】GEO卫星通信网络;服务质量(QoS);无线资源管理(RRM) 【中图分类号】TN927.23【文献标识码】A【文章编号】1002-0802(2009)05-0158-03 Key Technologies of GEO Multi-beam Satellite Communications Network YANG Qiao-li①②, LU Rui-min②, MA Yi-fei① (①Institute of Communication Engineering, PLA University of Science & Technology, Nanjing Jiangsu 210007, China; ②No.63 Research Institute of PLA General Staff Headquarters, Nanjing Jiangsu 210007, China) 【Abstract】The network structure of GEO Multi-beam satellite communications network is analyzed. The model of integrated space-ground radio resource management in combination of centralized mode and distributed mode is proposed. For the quality of service (QoS) support and the special requirement of anti-jamming, some research suggestions on call admission control, beam handoff management and packet scheduling are given. 【Key words】GEO satellite communications network;quality of Service (QoS);radio resource management (RRM) 0 引言 GEO多波束卫星通信系统以其覆盖范围广、星座和网络控制简单等诸多优点一直都是军事领域研究和应用的重点[1]。为了满足未来国家多方面安全利益的需求,未来军事卫星通信系统将由3-5颗GEO卫星星座组成,采用更高的频段、多波束天线、宽带跳频、星上处理、星上交换、星上网络控制、星际链路等先进技术,能够实现与地面其他网络内任何用户的互连互通,同时还将满足从低速到高速的话音、数据、视频、Internet数据传输等多媒体业务需求,实现抗干扰并可应对复杂的电磁环境,提供受保护的动中通服务能力。 1 天地一体化网络体系结构 随着星上处理和交换技术的发展,鉴于军事应用抗干扰、抗摧毁能力的特殊需求,未来军事GEO卫星通信系统将采用多星全球覆盖有星际链路组网应用模式[2],采用星际链路方式时,卫星无需地面站中转就可直接互连,不仅降低了通信时延,而且还会显著地改善通话质量;另外,为了保证在地面网络管理中心受到打击时整个卫星通信系统的自主运行能力,还应该考虑星上网络控制设计方案[3]。 如下页图1所示,给出了多星全球覆盖有星际链路天地一体化网络体系结构示意图。在军事应用背景下,应用Ka或更高频段为系统提供了足够大的带宽,可调多波束主要是为了空间隔离以提高系统的抗干扰能力,必要时可能还需要波束重叠使用以增强特殊覆盖区域内的用户容量和通话质量,所以一般不进行频率复用。同其它卫星通信系统类似,GEO多波束卫星通信网络也可划分为空间段、用户段和地面段[4]。 空间段由3-5颗多波束GEO卫星通过星际链路组成一个+/- 65°纬度带内的准全球覆盖卫星星座,每颗卫星均具备 收稿日期:2008-09-22。 作者简介:杨巧丽(1979-),女,工程师,博士生,主要研究方向为卫星通信抗干扰;陆锐敏(1963-),男,高级工程师,硕导,主要研究方向为卫星通信抗干扰;马刈非(1947-),男,教授,博导,主要研究方向为卫星通信网络。 158

卫星通信知识点

卫星通信 卫星通信:是指利用人造地球卫星作为终极辗转发或发射无线电信号,在两个或多个地球站之间进行的通信。(特点:它覆盖面积大、不受地理条件的限制、通信频带宽、容量大、机动灵活,因而在国际和国内通信领域中,成为不可缺少的通信手段) 卫星通信系统:由空间分系统、通信地球站、跟踪遥测及指令分系统、监控管理分系统四大功能部分组成。(①跟踪遥测及指令系统对卫星进行跟踪测量控制其准确进入静止轨道上的指定位置,并对在轨卫星的轨道位置及姿态进行监视和校正。②监控管理分系统对在轨卫星的通信性能及参数进行业务开通前的监测和业务开通后的例行监测和控制,以便保证通信卫星的正常运行和工作。③空间分系统指通信卫星) 卫星转发器:装在卫星上的收、发系统称为转发器,作用是接受由各地面站发来的信号,经变换频率和放大后,再发给各收端站。它主要是由天线、接收设备、发射设备和双工器组成。(主要的功能收到地面发来的信号(上行信号)后,进行低噪声发大,然后混频,混频后的信号再进行功率放大,然后发射回地面(下行信号)。上行信号和下行信号的频率是不同的,这是为了避免在卫星天线中产生同频率信号干扰) 卫星通信频率选择中考虑的损耗(电波传播的特点) 工作频段的选择主要考虑电离层的反射、吸收;对流层的吸收、散射损耗等因数与频率的关系。常用波段:L波段(1.6/1.5GHz)C波段(6.0/4.0GHz )Ku波段(14.0/12.0GHz 14.0/11.0GHz)Ka波段30/20GHz)一般工作频率选择在1-10GHz,最理想为4-6GHz。 考虑的传播损耗:1.自由空间的传播损耗。2.大气损耗(对流层的影响和电离层的影响) 3.移动卫星通信电波的衰落现象(多径传播和多径衰落) 4.多普勒频移(由于通信双方相对位置在移动时,由多普勒效应引起的附加频移) 同步卫星:如果卫星的轨道是圆形且在赤道轨道上,卫星离地面约35860km时,其飞行的方向与地球自转的方向相同,则从地面上任何一点看去,卫星都是相对静止的,这种对地静止的同步卫星简称为静止卫星。(利用静止卫星作为中继站的通信系统,称为静止卫星通信系统。) 信道:目前常用的多址方式有FDMA/TDMA/CDMA/SDMA在信道分配技术中,信道的含义,在FDMA中是指各地球站占用的频段;在TDMA中指各地球站占用的时隙;在CDMA中是指各地球站使用的码型。 信道利用率问题 编码方式选择的原则:①保证话音质量-数码率越高越好②有较高的信道利用率-数码率越低越好 两类编码技术:①波形编码(将时域信号直接编为数字代码如PCM、ADPCM等。)②参量编码(抽取频域特征参量或其它参量进行数字编码的方式,如线性预测声编码器 LPC 等。一般常用 ADPCM 方式) 卫星通信中的差错控制与扰码 差错控制 (1)前向纠错(FEC)码是一种无反馈的差错控制方式,依靠在编码过程中选用适当的纠错码,在接收端进行识别纠错。特点:不需要重发,适合于传输时延大的白噪声信道。 前向纠错码(FEC)分为分组码和卷积码两大类。①分组码主要采用:循环冗长校验(CRC)码和循环(BCH)码②卷积码主要采用:代数译码和概率译码两种方法。 (2)重传技术 是一种反馈差错控制方式,采用双向信道,当接收端收到信号被判有误时,反NAK信号要求重发,直到信号被确认,反馈ACK(acknowledge)信号时,再发送下一组信号。 特点:由于卫星信道时延太长(单边时延为0.27秒),重传方式适合于非实时的数据信息传输。重传技术(ARQ)分三种类型(停止与等待ARQ/连续ARQ/有选择的ARQ) 信道的分配方式:①预分配方式(PA)②按需分配方式(DAMA)③随机分配方式(RA) 多径传播和多径衰落:①高频电波在传播过程中,往往经过了反射、散射、绕射等途径,最后以合成波的形式到达接收天线,这种传输方式称为多径传播。 ②在多径传播的过程中,由于传播途径变化引起的衰落现象称为多径衰落。 信道的预分配方式(PA):每个地球站预先分配一个专用的上行和下行载波频率,其他地球站要接收某一地球站信号时,必须具备接收该站频率的条件。 优点:技术成熟、工作可靠等,适合用于站少而容量大的场合。 缺点:转发器同时放大多个载波,存在互调干扰。①采用最多的方式:模拟制—频分多路复用—调频—频分多址—预分配(FDM/FM/FDMA/PA)②当前发展最快的一种方式为:数字制—时分多路复用—数字调相—频分多址—预分配(TDM/PSK/FDMA/PA) 卫星通信体制:是指卫星通信系统的工作方式(即采用的信号传输方式,信号处理方式和信号交换方式等)指以下两方面内容:①卫星通信采用的信号传输方式-多路复用方式②信号处理和交换方式(调制方式/编码方式/多址连接方式) 卫星通信采用的多路复用和调制方式 广泛采用的多路复用方式为频分多路(FDM)和时分多路(TDM)两种。 调制方式:由于不同的数字调制方式具有不同的功率利用率和频带利用率,综合两方面考虑,现在主要采用二相移相键控和四相移相键控调制方式。随着转发器线性技术的发展,也有采用正交调幅QAM方式,以提高频率利用率。 互调干扰:由于放大器存在非线性,在放大过程中不可避免地要产生谐波,而FDMA方式卫星转发器要同时

《卫星通信技术》完全

《卫星通信技术》 卫星通信:是指利用人造地球卫星作为中继站转发无线电波,在两个或多个地球站之间进行的通信 通信卫星:由一颗或多颗通信卫星组成,在空中对发来的信号起中继放大和转发作用。每颗通信卫星都由收发天线、通信转发器、跟踪遥测指令、控制和电源等分系统。 卫星轨道按卫星离地面的高度分为: ●HEO P14.高椭圆轨道,最近点为1000-21000km,最远点为39500-50600km ●MEO P14.中轨道,h≈10000km ●LEO P14.低轨道,700-1500km ●GEO P14.地球同步轨道,h≈35786km ●EIRP :(P115)把卫星和地球站发射天线在波束中心轴向上辐射的功率称为发送设备 的有效全向辐射功率(EIRP),即天线发射功率PT与天线增益GT的乘积,表征地球站或转发器的发射能力的重要指标 ●S-ALOHA:(P108)是以卫星转发器的输入端为参考点的埋在时间上等间隔的划分为 若干时隙,而每个站多发射的分组就必须进入指定的时隙,每个分组的持续时间将占满一个时隙。 ●P-ALOHA:(P107)纯ALOHA方式,在该系统中,各个地球站共用一个卫星转发器 的频段,各站在时间上随机地发射其数据分组。在发生碰撞,就会使数据分组丢失,各站将随机延迟一定时间后,再重发这个数据分组。 ●VSAT:即甚小口径天线终端,指一类具有甚小口径天线的小型地球站与一个大站协调 工作构成的卫星通信网 ●G/T :(P118)地面站性能指数(G:接收天线增益、T:等效噪声温度) ●GNSS :P213,即全球导航卫星系统,它是所有在轨工作的卫星导航定位系统的总称。 ●GMDSS:全球海上遇险与安全系统。该系统主要由卫星通信系统— INMARSAT (海事 卫星通信系统) 和COS-PAS/SARSAT(极轨道卫星搜救系统)、地面无线电通信系统(即海岸电台)以及海上安全信息播发系统三大部分构成 ●INMARSAT-A:(INMARSAT是国际移动通信卫星系统)P194,它属于模拟系统,其 终端通过直径大约为1m的抛物面天线提供话音,数据,电传,传真以及高速数据。提供一个话音和电传信道,可连接电传机或小型交换机等外设。

车载动中通卫星通信系统解析

车载动中通卫星通信系统 摘要:实现了一种全集成可变带宽中频宽带低通滤波器,讨论分析了跨导放大器-电容(OTA—C)连续时间型滤波器的结构、设计和具体实现,使用外部可编程电路对所设计滤波器带宽进行控制,并利用ADS软件进行电路设计和仿真验证。仿真结果表明,该滤波器带宽的可调范围为1~26 MHz,阻带抑制率大于35 dB,带内波纹小于0.5 dB,采用1.8 V电源,TSMC 0.18μm CMOS工艺库仿真,功耗小于21 mW,频响曲线接近理想状态。关键词:Butte 突发事件的空间不定性,导致其应对方法相对匮乏。特别处理突发事件通信方式的选择则显得尤为重要,建立完善综合应急响应指挥系统,提高部门协调联动水平。车载动中通产品在应急通信救援领域已广泛应用。汉华世讯科技推出的车载动中通系统采用H.264+优化压缩编码技术、Hanhsx多通道集群捆绑技术、网络编码自适应技术、车载语音整合调度系统(包括短波、超短波及手机和卫星电话的系统整合)、卫星通讯技术、Hanhsx卫星移动多媒体编解码设备、CDMA多通道图像传输设备、单兵作战超短波传输设备、GPS卫星定位设备。车载动中通系统可有效隔离通讯载体在运动过程中由于其状态和地理位置发生变化而导致的通信中断,具有多种通信方式并存、覆盖区域广、不受地形地域限制、传输线路稳定可靠等优点。在没有通讯网络覆盖地形复杂的偏远区域,甚至是在动态变化极其复杂的水上,“动中通”也能够迅速捕捉卫星方位,完成联络通讯。卫星利用其覆盖范围广,设备使用方便等优点得到大力推崇。 车载动中通卫星通信系统具有不受时间、地域、距离的限制、实现动态和静态条件下的实时双向传输等特点,并具有现场指挥、远程移动指挥、车顶摄像视频信息采集、无线摄像视频信息采集、移动电话电台调度、移动视频会议、实时图像切换、智能保护等多项功能。其创新的天线系统自动搜索捕获指定的卫星信号。并且在车辆运动过程中通过自动控制方位、仰角和极化角。自动跟踪保持指向,并支持车辆在时速300公里行驶条件下的双向2M传输速率。隐形动中通卫星天线是由安装于车顶的低轮廓相控阵天线和安装在车内的天线控制器等组成。天线控制器为天线提供动力并控制天线的运动。 系统功能 ○ 无需手动对星 ○ 采用GPS信号,自动捕获并跟踪卫星 ○ 运动中自动重新寻找最大值 ○ 内置陀螺仪使之可以快速从视线遮挡中恢复,天线使用机械和电子混合扫描,保持指向精度 ○ 邻星干扰保护 ○ 如果天线指向偏离大于0.5度,回传链路自动关闭,直接指向误差被天线的跟踪系统纠正 主要特点

卫星通信知识点

第1章 1.卫星通信:利用人造地球卫星作为中继站转发无线电破,在两个或多个地球站之间进行通信。它是宇宙通信形式之一。 2.卫星通信的特点:①覆盖面积大, 通信距离远。一颗静止卫星可最大覆盖地球表面三分之一, 三颗同步卫星可覆盖除两极外的全球表面, 从而实现全球通信。②设站灵活, 容易实现多址通信。③通信容量大, 传送的业务类型多。④卫星通信一般为恒参信道, 信道特性稳定。⑤电路使用费用与通信距离无关。⑥建站快, 投资省。 3.卫星通信的缺点:①卫星要求严格,要求有高可靠性、长寿命。②通信地球站设备较复杂、庞大。③存在日凌和星蚀现象。④卫星传输信号有延迟 4.非同步卫星系统按轨道分:1)低轨道卫星通信系统(LEO),如极轨道卫星, 当卫星通过赤道上空时卫星间的距离最大, 此时须多开放一些小区; 当卫星通过两极时, 卫星间的距离变小, 这时会出现小区重叠, 在切换时要关闭一些小区。 2)中轨道卫星通信系统(MEO)3)同步(静止)卫星通信系统(GEO):当卫星的运行轨道在赤道平面内,其高度大约为35800 km 时,它的运行方向与地球自转的方向相同. 5.地球卫星轨道分为:赤道轨道,极轨道,倾斜轨道。 6.卫星通信系统的组成:通信卫星,地球站,跟走遥测及指令系统和监控管理系统。 7.地球站的组成:天馈设备,收信机,发信机,终端设备,天线跟踪设备,以及电源设备。8.基本工作原理:当甲地一些用户要与乙地的某些用户通话时, 甲地首先要把本站的信号组成基带信号, 经过调制器变换为中频信号(70 MHz), 再经上变频变为微波信号, 经高功放放大后, 由天线发向卫星(上行线)。卫星收到地面站的上行信号,经放大处理, 变换为下行的微波信号。 9.影响同步卫星通信的因素:1)摄动:在空中运行的卫星, 受到来自地球、太阳、月亮的引力以及地球形状不均匀, 太阳辐射压力等影响, 使卫星运行轨道偏离预定理想轨道, 这种现象称为摄动。2)轨道平面倾斜效应3)星蚀与日凌中断4)卫星姿态的保持与控制 10.同步卫星通信卫星的组成:控制分系统,通信分系统,遥测指令分系统,电源分系统,温控分系统。 11.天线类型(按其覆盖面大小分):1)球波束天线: 覆盖地球表面面积最大。一般可达地球表面的1/3。2)覆形波束天线(区域波束天线): 覆盖的地球通信区域为一特定的区域, 如为一个国家国土等。3)半球波束天线: 是球波束天线覆盖的1/2。4)点波束天线: 此波束很窄, 覆盖地面某一限定的小区。 12.卫星通信的工作频段:1~10GHZ范围内较为适宜,而且最理想的频段是4~6GHZ附近。 第2章 1.窄带调频:NBFM 宽带调频:WBFM 2.调频波带宽公式(模拟):BFM=2(mf+1)fm=2(Δfp+fm) 3.CSSB/AM压扩单边带调幅 概念:压扩器是由在卫星通信发射端的“压缩器”和接收端的“扩展器”组成。 原理:如果一个36MHz带宽的转发器能容纳一个携带1100条话路的FDM/FM/FDMA载波,则在采用压扩器后。可使36MHz的转发器容纳2100条活路。另外,如果在转发器中可利用过频偏传输.则该转发器的容量还可进一步增至2900条话路。 4.CSSSB/AM/FDMA与FDM/FM/FDMA的不同:前者制式的卫星转发器的容量并不随着多址而减少。 5.QPSK解调方式:同步解调,非同步解调。 6.MSK调制与QPSK调制的区别:QPSK产生的相位模糊可以用DQPSK调制方式的 180(度)的载波相位变化消除,但不能改变其相位不连续;MSK(最小移频键控)就是相位连续频移键

动中通卫星通信系统解决方案

平板动中通通信系统方案 车载平板动中通天线是专为应急指挥通信市场开发,该产品已被军队、武警、公安、消防、应急、电力等多个行业采用,性能稳定可靠。该平板车载系统相比传统抛物面天线系统有如下特点: 系统可在静态、动态、斜坡等状况下实现上电全自动寻星、锁定; 系统采用高增益的平板波导阵列天线,使系统具有较高的增益,确保高清图像及数据的传输,并且降低了天线的整体高度(≤355mm),非常适合SUV 车,保证车辆行驶的通过性和美观性; 采用高精度惯性系统作为控制基础,使产品具有较高的跟踪精度和较长的遮蔽保持时间; 系统采用卫星信标跟踪技术与传感器误差修正技术相结合的闭环控制方式,提高系统的工作可靠性; 产品采用模块化设计,内部部件采用模具铸造,大大提高了生产效率和可维修性;

自动寻星:系统设置后,全部操作均可自动完成,并能够在静态或运动条件下进行上电初始化、初始对星等操作; 自动跟踪:在动态条件下,方位、俯仰、极化全自动跟踪,使天线始终对准所选目标卫星; 遮挡后再捕获:当天线长时间被遮挡而导致丢星,遮挡消除后系统可快速恢复(遮挡20分钟恢复时间<2s); 天线安装无方向要求,可随意方向安装,具有很高的平台安装适应性; 本系统对星时间短,冷启动在80秒内,热启动在50秒内。(无遮挡情况下); 天线系统高度集成,整机重量≤75Kg。 车载系统设计原则如下: 通得快。选用机动性好的平台,在各种恶劣条件下,以最快的速度达到任务地域,快速建立通信联络,保障现场应急指挥顺畅。 通得上。综合多种通信手段,针对不同保障需求,形成能力互补手段融合,确保在各种复杂环境下全方位、全天候通信。 通得好。根据应用需求,新研一些新技术通信装备,同时选用成熟、先进的民用新技术设备,确保通信效果和质量。 标准化。采用标准化的通用装备和民用成熟技术设备进行综合集成,确保技术体制统一,实现“军、警、民”各方通信互联互通。 组合化。采用模块化结构,搭建组合化的通用车载平台,便于升级和换装,以满足不同突发事件的保障需求。 1.动中通车载卫星天线

NRF24L01多通道通信

无线抢答系统 本系统用到4个NRF24L01模块,最多可以加到7个NRF24L01(其中一个用作主机另外的六个用作从机)。显示用的是诺基亚的5110,MCU用的是52单片机。经亲测发送和接收都很好。废话不多说,在此给上原理图加程序。 附上成品图 阅读NRF24L01那部分代码请结合nrf24L01中文资料中的寄存器介绍结合起来一起看,

能使你理解的更透彻。在此附上NRF24L01芯片的寄存器的作用和地址图片(下图的截图是在“nrf24L01中文资料”中截的图需要更完整的“nrf24L01中文资料”请自己百度搜索下载)

主机代码 可下载到开发板上也可以自己做一个可以串口通信的最小系统或者去掉主机代码中的串口通信部分下载到上图做的板中(记得修改引脚) #include #include typedef unsigned char uchar; typedef unsigned char uint; /*****************NRF24L01端口定义*****************************************/ sbit MISO =P0^4; sbit MOSI =P0^3; sbit SCK =P0^2; sbit CE =P0^0; sbit CSN =P0^1; sbit IRQ =P0^5; /*************LCD5110 I/O定义***********************************************/ sbit LCD_RST =P1^4; sbit LCD_CE =P1^3;

NRF24L01多通道通信

NRF24L01多通道通信

无线抢答系统 本系统用到4个NRF24L01模块,最多可以加到7个NRF24L01(其中一个用作主机另外的六个用作从机)。显示用的是诺基亚的5110,MCU用的是52单片机。经亲测发送和接收都很好。在此给上原理图加程序。 附上成品图

主机代码 可下载到开发板上也可以自己做一个可以串口通信的最小系统或者去掉主机代码中的串口通信部分下载到上图做的板中(记得修改引脚)#include #include typedef unsigned char uchar; typedef unsigned char uint; /*****************NRF24L01端口定义*****************************************

/ sbit MISO =P0^4; sbit MOSI =P0^3; sbit SCK =P0^2; sbit CE =P0^0; sbit CSN =P0^1; sbit IRQ =P0^5; /*************LCD5110 I/O定义***************************************** ******/ sbit LCD_RST =P1^4; sbit LCD_CE =P1^3; sbit LCD_DC =P1^2; sbit LCD_SCLK =P1^0; sbit LCD_Din =P1^1; /******************按键***************************************** ***********/ sbit KEY1=P3^6; sbit KEY2=P3^7; /******************发光二极管*****************************************

卫星通信网的组成和应用

卫星通信网组成及应用

内容提要 一、中国卫星通信集团有限公司 二、卫星通信概述 三、卫星通信网组成 四、卫星通信网应用

一、中国卫星通信集团有限公司 2009年4月重组并入中国航天科技集团公司 以成为亚洲第一、国际一流的卫星综合信息服务企业为目标 致力于构建天地一体卫星运营服务体系 重点发展卫星空间段运营、地理信息与位置服务、通信广播地面运营三大主营业务

在轨卫星 中星9号92.2E 中卫1号87.5E 中星5A 鑫诺1号110.5E 中星5B 鑫诺6号125E 中星6A 中星6B 115.5E 亚太ⅡR 76.5E 亚太Ⅴ138E 亚太Ⅵ134E 在轨卫星

技术保障 国内规模最大、功能最齐全的民用卫星地面站 沙河卫星地面站:负责鑫诺系列卫星的自主测控和通信业务的备份 东北旺卫星地面站:负责中星系列、中卫系列卫星的自主测控和通信业务管理 三大业务服务中心 卫星控制中心 业务运行中心 设备维护中心 中国航天拥有众多国内第一流的卫星制造、卫星应用方面的专家和网络维护方面经验丰富的工程师

技术保障 集合东北旺、沙河两地面测控站全部资源 18面6米以上天线组成大型天线阵 先进的通信载波监测和管理系统 先进的电视信号监视系统 具备全面的综合业务服务能力 多轨道位置卫星自主测控能力 多频段载波监测能力 多类型卫星业务服务能力 广播电视安全播出保障能力 稳定的卫星通信系统运行管理能力 7×24小时全天候服务响应能力 7×24小时全天候临时业务授理中心 与国家无线电监测中心良好的业务合作关系 CPI、MITEQ等国际著名卫星设备供应商的设备维修授权书

卫星通信系统的发展及其关键技术_罗文

卫星通信系统的发展及其关键技术 罗文 (中国民用航空中南地区空中交通管理局广西分局,广西南宁530048) 摘要:卫星通信技术中星上处理(OBP)和异步传输模式(ATM)被认为是未来通信的发展方向和核心技术,本文针对卫星通信技术目前的发展现状,通过分析其在当今通信行业中所处的地位、作用以及面临的挑战,总结其关键技术,给出未来通信的发展方向,这对以后的卫星通信研究具有重要意义。 关键词:星上处理;异步转移模式;宽带IP;卫星通信 中图分类号:TN927.2文献标识码:A文章编号:1673-1131(2013)01-0157-02 1卫星通信系统的发展现状及难点 1.1卫星通信发展现状 卫星通信技术发展十分迅速,20世纪60年代时,卫星通信只是在军事上得到了应用,到了70年代时,卫星通信的发展达到了顶峰,90年代时,光纤通信诞生了,这对卫星通信造成了一次冲击,但卫星有它自己独特的特点,如卫星具有多址连接方式、可以按需分配带宽等特点,这些是光纤通信所不能及的,所以卫星通信在偏远地区,越洋通信中被优先选用。星上交换作为卫星通信的核心部分,受到国内外学者的深度研究,星上技术结合ATM,使得卫星ATM技术成为卫星领域的一个研究热点。目前许多国家就卫星ATM已经展开了深入研究,期望在未来有一个质的飞跃。 1.2现今卫星通信遇到的难点 (1)卫星通信的成本因素。众所周知,在长距离通信中,最需要的技术就是卫星通信,因为卫星通信具有通信容量大、覆盖地域广、不受地理条件限制和通信方式机动灵活等优点。但是随着对通信资费的调整后,长途通信费用大幅下降,但卫星的转发器费用却并没有因此而改变,因此使得卫星通信成本还是很高。 (2)卫星通信中宽带IP问题。当前,宽带IP卫星通信中基本上都是采用ATM传输技术,因为ATM的性能可以满足欧美等地的性能指标要求。但当系统采用RS块编码、交织以及FEC技术时,虽然提高了卫星链路的传输质量,却也在无形中增加了卫星ATM实现的复杂度,这与现在运用的卫星通信技术是不相同的。 (3)卫星通信中数据速率问题。当前是信息时代,需要有更加快捷的方式来及时地传输信息,而传统的基于频分复用和码分复用技术已经无法满足卫星通信的需求,随之出现了分组交换技术;同时,长距离的传输也带来了延时问题,这就需要通过快而有效的方法来解决延时对实时数据的影响问题。2卫星通信系统中的关键技术 2.1数据压缩技术 随着科学技术的发展,数据压缩技术已经发展得很成熟,尤其是在数据处理相关领域。数据压缩可以给通信带来很大的方便,例如节约了时间、提高了频带利用率、节约了存储空间等。数据压缩标准有很多,但被人们广泛采用的标准主要是对静止图像压缩编码的ISO标准以及CCITT的H.26标准。而在卫星通信中主要采用的是MPEG62,该项技术主要是面向对象的,而且在多媒体同步方面发挥了很好的作用,同时它的实时交换、实施表现等方面也做得很完美。2.2智能天线系统 降雨以及大地对电磁波的吸收从很大程度上导致高频段的卫星ATM网络产生突发错误,而且卫星本身也存在各种限制和随机错误,这就需要通过智能天线的多波束来覆盖到更广的区域,例如,可以采用多波束快速跳变系统;同时在低轨道系统中采用蜂窝式天线来实现跟踪和同频复用功能;星上和同步轨道系统要想构成蜂窝式覆盖图就必须要采用相控阵列天线。 2.3多址接入技术 针对接入方式,ATM/TDMA多址接入方式比FDMA和CDMA更适合星上处理卫星对多址接入的要求,因为此种方式有较好的信息传输角度、网络应用灵活性好等特点。但是,TDMA方式对速率和发射功率要求很高,这在无形中就增加了解调器的实现难度,同时也增加了载波功率与噪声功率密度的比值的要求。为了克服上述问题,该领域专家提出了一种新的方式,采用多频质的TDMA,即MF-TDMA(Multiple Frequency-TDMA)多址接入技术,它是将FDMA于TDMA相结合,这样可以降低每个TDMA链路的接入速率和调制解调器的工作速率,同时对上行链路的值C/N0(C/N0=E/N0*Rb)的要求也减弱了。 2.4卫星激光通信技术 卫星通信要求速率很高,这就需要采用激光进行通信。卫星通信采用激光可以提升卫星的通信量和保密性,减轻了卫星的重量和大小;在大气层外,没有大气的干扰,通信更加准确,同时也降低了误码率;运用激光可以提升数据的传输速率以及系统的可靠性;同时卫星通信也互不干扰,最主要的是,采用激光通信可以大幅度地降低延时,使信息能够得到及时传输,激光的这些优点都被发挥得淋漓尽致。有专家预测,激光技术运用到卫星通信中将是很有前途的,对通信行业的发展起到不可替代的作用。 2.5信道纠错编码技术 众所周知,在卫星通信中难免会产生错误,尤其是在卫星通信的过程中。ATM信元在面对突发错误时会产生很大的错误。在ATM信元中,位于ATM信头的最后一个字节是信头差错控制(HEC),它主要是通过检测和纠正单比特错误以及检测是否有多比特来保护ATM信头。所以,在出现丢失信元或者信元误插现象时,主要是由于HEC在多比特发生错误时没有发生作用。因此提出了采用交织技术来降低信元丢失率和检测不出错误的概率来保护ATM信头、改善信息的传输质量。 采用MF-TDMA的多址接入方式的星上ATM系统可为不同的地球站提供不同的QoS服务,而不同的QoS需要不同 2013年第1期(总第123期) 2013 (Sum.No123)信息通信 INFORMATION&COMMUNICATIONS 157

相关文档