基于adf7023的1瓦无线同步传输模块
基于adf7023的1瓦无线同步传输模块
N502FS基于ADI ADF7023射频收发器、PA和LNA开发的无线同步高功率模块,用于433M、868M和915MHz频段。无线同步模块使用ADF7023运动模式或分组模式。N502FS无线同步高功率模块支持1K至300Kbps的射频速率。无线同步高功率模块的最大输出功率为+30 dBm。支持AT命令。
N502FS无线同步传输模块集成了ADI ADF7023收发器芯片、PA、LNA和MCU,适用于433MHz/868MHz/915MHz频段。ADF7023收发器高功率模块具有成本低、功耗低、体积小的特点。无线同步传输高功率模块采用4层板设计,具有出色的阻抗匹配和抗干扰能力。该模块主要用于物联网、智能家居、无线抄表、科研和医疗以及中远程同步无线通信设备。ADF7023模块将UART、SPI、LED IO端口引出,用于二次开发或使用。
对于分组模式,N502FS高功率模块支持智能计量、IEEE 802.15.4g、无线MBUS、家庭自动化、过程和楼宇控制、无线传感器网络(WSN)。
对于运动模式,该模块支持专用数据无线同步传输。单个帧分组的长度可以自由设置。理论长度是无限的,并且受到DSP或MCU的存储空间的限制。单个帧数据的长度可以设置为3K字节。定制更大的单帧数据。
N502FS无线同步高功率模块功能
UART速率:115200
SPORT模式
低功率模式
频带:862 MHz至928 MHz,431 MHz至464 MHz
带宽:100 kHz、150 kHz、200 kHz、300 kHz
单个帧中的最大字节数:3072字节
VCC : 3 - 5V
SMD package
Size: 42 X 24 X 3 mm
RF port: ipex or RF pin
ADF7023无线同步收发器模块详细信息
ADF7023是ADI的射频收发器。射频速率从1 K到300 Kbps。它支持分组模式和 SPORT 模式。
对于分组模式,ADF7023收发器支持智能计量、IEEE 802.15.4g、无线MBUS、家庭自动化、过程和楼宇控制、无线传感器网络(WSN)。
对于 SPORT 模式,支持专用数据同步无线通信。单个帧分组的长度可以自由设置。理论长度是无限的,并且受到DSP或MCU的存储空间的限制。单个帧的长度可以设置为几个K字节。
ADF7023是一款非常低功率、高性能、高度集成的2FSK/GFSK/OOK/MSK/GMSK收发器,设计用于862 MHz至928 MHz和431 MHz至464 MHz频带,覆盖433 MHz、868 MHz和915 MHz的全球无许可ISM频带。它适用于在欧洲ETSI EN300-220、北美FCC(第15部分)、中国短程无线监管标准或其他类似地区标准下运行的电路应用。支持从1 kbps到300 kbps的数据速率。
发射RF合成器包含一个VCO和一个输出信道频率分辨率为400Hz的低噪声分数N PLL。VCO工作在2×或4×基频,以减少杂散发射。接收和发送合成器带宽自动且独立地配置,以实现最佳相位噪声、调制质量和稳定时间。变送器输出功率可从−20 dBm至+13.5 dBm,具有自动PA斜坡,以满足瞬态杂散规范。该部分具有单端和差分PA,允许Tx天线分集。
该接收机是非常线性的,达到IP3规格−12.2 dBm和−最大增益和最小增益分别为11.5 dBm,最大增益和最低增益的IP2规格分别为18.5dBm和27dBm。接收机在±2 MHz偏移处达到66 dB的干扰阻断规格,在±10 MHz偏移处实现74 dB的干扰抑制规格。因此,该部件对频谱噪声环境中存在的干扰具有极强的弹性。该接收机具有新颖、高速、自动频率控制(AFC)环路,允许PLL发现并纠正恢复包中的任何RF频率错误。
正在申请专利的图像抑制校准方案可通过程序下载获得。该算法不需要使用外部RF源,也不需要任何用户干预。校准的结果可以存储在非易失性存储器中,用于收发器的后续加电。
ADF7023引脚配置和功能说明
N502FS无线同步传输模块,单帧数据包最大长度为3K字节对于超过3K字节的单帧长度,需要定制。
SPORT模式软代码
void IRQ_Handler() __irq // this is a promgram for the receiver, when detected the sncywords , this used for receive the data.
{
unsigned char stop;
unsigned char temp=0;
unsigned char i;
Receive_Sign = 1;
Receive_bytes= 0;
stop=0;
while(!stop)
{
for(i=0; i<8; i++)
{
while(read_TxRxCLK()==0);
temp<<= 1 ;
temp+=read_RxDATA();
while(read_TxRxCLK()==1);
}
buff[Receive_bytes]=temp;
Receive_bytes++;
if(temp==0xFF) //if the data is 0xFF,stop receive, you change it and set your own stop word.
{
stop=1;
}
}
my_sent_cmd(CMD_PHY_ON); //back to the stutus of PHY_ON
// IRQCLR = IRQCLR|XIRQ0_BIT;
}
int main (void)
{
STMCU_Initiate(); //initial the ADuc7026
ADF7023_GPIO_config(); // config the GPIO ,both used for transmitter and receiver.
ADF7023BBRAM_TRANSMITTER_config(); // config the ADF7023 BBRAM, both used for transmitter and receiver.
my_delay(100);
Initialization();//initial the ADF7023
my_sent_cmd(CMD_PHY_OFF);//come to the stutus of PHY_OFF
put_string("Come to the Initialization: ");
my_delay(100000);
read_stutus(); //read the stutus
my_sent_cmd(CMD_PHY_ON);
put_string("Come to the ON: ");
my_delay(100000);
read_stutus();
//read_data();
TRANSMITTER(); //come to the transmitter, for the transmitter, you can delete the RECEIVER()
RECEIVER(); //come to the receiver, for the receiver, you can delete the TRANSMITTER()
}
void TRANSMITTER(void)
{
my_delay(100000);
my_sent_cmd(CMD_PHY_TX); //set the stutus to PHY_TX
my_delay(100000);
put_string("Come to the TRANSMITTER: ");
my_delay(100000);
read_stutus(); //read the stutus
my_delay(100000);
while(1)
{
buf[0]=0x55;
sent_char(buf[0]); //set the char 0x55(01010101) used for the Interrupt,you can get more detail from the datasheet
sent_char(buf[0]);
sent_char(buf[0]);
sent_char(buf[0]);
sent_char(buf[0]);
sent_char(buf[0]);
sent_char(buf[0]);
sent_char(buf[0]);
buf[0]=0xFA; //set the syncwords, you can get more detail from the datasheet
buf[1]=0xAA;
buf[2]=0xAE;
sent_char(buf[0]);
sent_char(buf[1]);
sent_char(buf[2]);
sent_string("I am get the data"); // sent the data
buf[0]=0xFF; // sent the stop word
sent_char(buf[0]);
put_string("Finished sentting the data "); //output the UART , you can see from the URAT,that the string is sent.
my_delay(1000000);
}
}
void RECEIVER(void)
{
my_sent_cmd(CMD_PHY_RX); //set the stutus to PHY_RX
my_delay(100000);
put_string("Come to the RECEIVER: ");
my_delay(100000);
read_stutus();
my_delay(10000);
IRQEN = XIRQ0_BIT ;//Enable IRQ0 Interrupt , Interrupt is set base on the syncwords
while(1)
{
if(1 == Receive_Sign)
{
unsigned char i;
Receive_Sign = 0;
put_string("The received data:"); //put the received data to the UART
for(i=1;i31)||(str[len]==" "))
len++;
for (i=0;i