Wireless RF Modules and dongles for IoT | Coral RF

CC1125 ModulesCC1120 ModulesCC1101 ModuleCC1201 ModulesCC1200 ModulesCC112x ModulesCC2538 Dongle USBCC2652R Dongles USBCC2652R7 Dongles USBCC2674R10 Dongle USBCC2652P7 Dongles USBCC2674P10 Dongle USBCC2652P Dongle USBZigBee DonglesCC1314 ModulesCC1311 ModulesCC1310 ModulesCC1312 ModulesCC1352 ModulesCC1354 ModulesCC13xx ModulesCC2538 ZigBee ModuleCC2652 ModulesCC2674 ModulesZigBee/BLE ModulesCC1310 Dongles USBCC1312 Dongles USBCC1311 Dongles USBCC1314 Dongles USBSUB G DonglesLR2021 ModulesSX1262 ModulesLLCC68 ModulesSX1280 ModulesLoRa Modules1 Watt Modules2 Watt Modules5 Watt ModulesHigh Power Modules1 Watt 169Mhz Modules2 Watt 169Mhz Modules5 Watt 169Mhz Modules169Mhz Modules1 Watt 433Mhz Modules2 Watt 433Mhz Modules5 Watt 433Mhz Modules433Mhz Modules1 Watt 868M Modules2 Watt 868M Modules5 Watt 868M Modules868Mhz Modules1 Watt 915M Modules2 Watt 915M Modules5 Watt 915M Modules915Mhz Modules2 Watt 1250M Module1250Mhz Modules
Product
Article

1 Watt Adf7023 Transceiver Wireless Synchronous Transmission Module

Issuing time:2022-10-10 10:58Author:Coral radio

1 Watt Wireless Synchronous Transmission Module of adf7023 Transceiver

868M adf7023 transceiver Uart RF module

N502FS wireless synchronous   high power module based ADI ADF7023 RF transceiver, PA and LNA, designed for 433M, 868M and 915MHz band. The wireless synchronous module used ADF7023 sport mode or packet mode. N502FS wireless synchronous high power module support RF rate from 1 K to 300 Kbps. The wireless synchronous high power module max output power is +30 dBm. Uart AT command support.

N502FS wireless synchronous transmission module integrated ADI ADF7023 transceiver chip, PA, LNA and MCU, which is suitable for 433MHz / 868MHz / 915MHz band. ADF7023 transceiver   high power module has the characteristics of low cost, low power consumption and small size. The Wireless synchronous transmission   high power module is designed with 4-layer board, with excellent impedance matching and anti-interference. The module is mainly for Internet of things, intelligent home, wireless meter reading, scientific research and medical treatment, and medium and long-distance synchronous wireless communication equipment. ADF7023 module leads UART, SPI, LED IO port out for secondary development or used.

For packets mode, the N502FS   high power module support Smart metering, IEEE 802.15.4g, Wireless MBUS, Home automation, Process and building control, Wireless sensor networks (WSNs).

For sport mode, the module support private data wireless synchronous transmission. The length of a single-frame packet can be set freely. The theoretical length is unlimited and limited by the storage space of DSP or MCU. The length of a single frame data can be set to 3 K bytes. For lager single frame data customized.

N502FS wireless synchronous   high power module feature

UART Rate: 115200

Sport mode

Low power mode

Frequency bands : 862 MHz to 928 MHz,431 MHz to 464 MHz

BW: 100 kHz, 150 kHz, 200 kHz, 300 kHz

Maximum number of bytes in a single frame: 3072 byte

VCC : 3 - 5V

SMD package

Size: 42 X 24 X 3 mm

RF port: ipex or RF pin

N502FS module size and pinout description

ADF7023 Wireless Synchronous Transceiver Module Details

ADF7023 is a RF transceiver by ADI. The RF rate from 1 K to 300 Kbps. It support packet mode and sport mode.

For packets mode, the ADF7023 transceiver support Smart metering, IEEE 802.15.4g, Wireless MBUS, Home automation, Process and building control, Wireless sensor networks (WSNs).

For the sport mode, support private data synchronous wireless communication. The length of a single-frame packet can be set freely. The theoretical length is unlimited and limited by the storage space of DSP or MCU. The length of a single frame can be set to several K bytes.

The ADF7023 is a very low power, high performance, highly integrated 2FSK/GFSK/OOK/MSK/GMSK transceiver designed for operation in the 862 MHz to 928 MHz and 431 MHz to 464 MHz frequency bands, which cover the worldwide license-free ISM bands at 433 MHz, 868 MHz, and 915 MHz. It is suitable for circuit applications that operate under the European ETSI EN300-220, the North American FCC (Part 15), the Chinese short-range wireless regulatory standards, or other similar regional standards. Data rates from 1 kbps to 300 kbps are supported.

The transmit RF synthesizer contains a VCO and a low noise fractional-N PLL with an output channel frequency resolution of 400 Hz. The VCO operates at 2× or 4×, the fundamental frequency to reduce spurious emissions. The receive and transmit synthesizer bandwidths are automatically, and independently, configured to achieve optimum phase noise, modulation quality, and settling time. The transmitter output power is programmable from −20 dBm to +13.5 dBm, with automatic PA ramping to meet transient spurious specifications. The part possesses both single-ended and differential PAs, which allows for Tx antenna diversity.

The receiver is exceptionally linear, achieving an IP3 specification of −12.2 dBm and −11.5 dBm at maximum gain and minimum gain, respectively, and an IP2 specification of 18.5 dBm and 27 dBm at maximum gain and minimum gain, respectively. The receiver achieves an interference blocking specification of 66 dB at ±2 MHz offset and 74 dB at ±10 MHz offset. Thus, the part is extremely resilient to the presence of interferers in spectrally noisy environments. The receiver features a novel, high speed, automatic frequency control (AFC) loop, allowing the PLL to find and correct any RF frequency errors in the recovered packet.

A patent pending, image rejection calibration scheme is available through a program download. The algorithm does not require the use of an external RF source nor does it require any user intervention once initiated. The results of the calibration can be stored in nonvolatile memory for use on subsequent power-ups of the transceiver.

ADF7023 PIN CONFIGURATION AND FUNCTION DESCRIPTIONS




N502FS wireless synchronous transmission module, the max lenth of single-frame packet is 3Kbyte. For length of a single frame of more than 3K bytes needs to be customised.


Sport mode soft code

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%10)+48;

          Receive_bytes=Receive_bytes/10;

          buf[1]=(Receive_bytes%10)+48;

          Receive_bytes=Receive_bytes/10;

          buf[0]=(Receive_bytes%10)+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]%10)+48;

  buf[0]=buf[0]/10;

  buf[1]=(buf[0]%10)+48;

  buf[0]=buf[0]/10;

  buf[0]=(buf[0]%10)+48;

  put_char(buf[0]);

  put_char(buf[1]);

  put_char(buf[2]);

  put_char('\n');

  my_delay(100000);

}


Share to:
401, XinBaoYuan Building, N5179, District 74 Xin'an Street, BaoAn District, Shenzhen, China 518101
Contact number:    +86-186 8898 9755
Global Sales Contact
Contact :    Kanta
Email :   info@coralradio.com