7脚开关电源芯片引脚功能(基于adf7023的1瓦无线同步传输模块)
7脚开关电源芯片引脚功能(基于adf7023的1瓦无线同步传输模块)低功率模式SPORT模式对于运动模式,该模块支持专用数据无线同步传输。单个帧分组的长度可以自由设置。理论长度是无限的,并且受到DSP或MCU的存储空间的限制。单个帧数据的长度可以设置为3K字节。定制更大的单帧数据。N502FS无线同步高功率模块功能UART速率:115200
基于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: \n");
my_delay(100000);
read_stutus(); //read the stutus
my_sent_cmd(CMD_PHY_ON);
put_string("Come to the ON: \n");
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: \n");
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 \n"); //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: \n");
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;i<Receive_bytes-1;i )
{
put_char(buff[i]); // buff[] is the received data buffer
}
put_char('\n');
my_delay(100000);
put_string("The number of receive data: "); //put the number of the word to the UART
Receive_bytes=Receive_bytes-2;
buf[2]=(Receive_bytes) 48;
Receive_bytes=Receive_bytes/10;
buf[1]=(Receive_bytes) 48;
Receive_bytes=Receive_bytes/10;
buf[0]=(Receive_bytes) 48;
put_char(buf[0]);
put_char(buf[1]);
put_char(buf[2]);
put_char('\n');
my_delay(10000000);
IRQEN = XIRQ0_BIT; //open the Interrupt to get another data.
my_sent_cmd(CMD_PHY_RX); //go to the stutus of PHY_RX
}
//read_stutus();
}
}
void sent_char(unsigned char ch)//sent a char based on the TxRxCLK this clk is give by ADF7023 is not given by you .
{
unsigned char temp i;
temp = ch;
for(i=0;i<8;i )
{
while(read_TxRxCLK()==1)
{;}
my_delay(1);
if(temp & 0x80)
{
SET_TxDATA();
}
else
{
CLR_TxDATA();
}
temp<<=1;
while(read_TxRxCLK()==0)
{;}
}
}
void sent_stringsent_string(char *str)//sent a string by mutiply use the function sent_char.
{
unsigned int len=0 i;
while ((str[len] >31)||(str[len]=='\n'))
len ;
for (i=0;i<len;i )
{
sent_char(str[i]);
}
}
void Initialization(void)
{
my_sent_cmd(CMD_SYNC);//sent the CMD_SYNC
ADF7023_mySPI_MEM_WR(BBRAM 0 ADF7023BBRAM 64 );//config the BBRAM of ADF7023
//ADF7023_mySPI_MEM_WR(MCR 0 ADF7023MCR 255);
Address= MCR_gpio_configure_Adr&0xFF;
buf[0]=0xA2;
ADF7023_mySPI_MEMR_WR(MCR Address buf ); //config the gpio of ADF7023
my_sent_cmd(CMD_CONFIG_DEV);
}
unsigned char my_sent_cmd(unsigned char cmd)
{
unsigned char temp;
CLR_CS();
my_delay(10);
while((read_MISO()==0x0)); //wait for the dataready
temp=CommunicateToADF7023(cmd);
my_delay(10);
SET_CS();
return(temp);
}
unsigned char my_sent_cmd_CS(unsigned char cmd)
{
unsigned char temp;
temp=CommunicateToADF7023(cmd);
return(temp);
}
void read_stutus(void) //// read the stutus and put to the UART
{
CLR_CS();
my_sent_cmd_CS(0xFF);
buf[0]=my_sent_cmd_CS(0xFF);
my_delay(10);
SET_CS();
put_string("The stutus: ");
buf[0]=buf[0]&0x1F;
if(buf[0]==0x11)
{
put_string("PHY_OFF");
}
else if(buf[0]==0x12)
{
put_string("PHY_ON");
}
else if(buf[0]==0x13)
{
put_string("PHY_RX");
}
else if(buf[0]==0x14)
{
put_string("PHY_TX");
}
else if(buf[0]==0x15)
{
put_string("PHY_SLEEP");
}
else
{
put_string("busy");
}
put_char('\n');
my_delay(100000);
}
void read_data(void) // read the register and put to the UART
{
Address= MCR_gpio_configure_Adr&0xFF;
buf[0]=ADF7023_mySPI_MEMR_RD(MCR Address);
put_string("The data: ");
buf[2]=(buf[0]) 48;
buf[0]=buf[0]/10;
buf[1]=(buf[0]) 48;
buf[0]=buf[0]/10;
buf[0]=(buf[0]) 48;
put_char(buf[0]);
put_char(buf[1]);
put_char(buf[2]);
put_char('\n');
my_delay(100000);