Go Down

Topic: The Easy Radio de A1725 (Read 1 time) previous topic - next topic

RichardL

Jun 12, 2011, 09:27 pm Last Edit: Jun 13, 2011, 05:07 am by RichardL Reason: 1
Hi Guys, We just get the easy radio RF A7125 module,we tried and tested it, then made a demo. It is a high performance and low cost 2.4GHz ISM band wireless transceiver. A7125 is used together with MCU (microcontroller) with very few external passive components. A7125 supports both FIFO mode and direct mode that contains clock recovery circuit CKO pin to MCU.

First of all, of course, you also need two Arduino boards and at least two RF modules, one to transmit and the other to receive, every A7125 can be defined to Master(TX) or Slave(RX). If you don't have, you can get them in our store in a very low cost. (Order A7125 module)

You should use the Arduino board's 3.3V pin?VDD3V3? to provide power. Beacuse the A7125 module is worked at 1.9-3.6V voltage level. Please note, do not use 5V pin(VDD5V) to provide power. I have made a mistake used 5V to provide power, luckly its OK, I think you'd better not try again  ]:)

We made two demo for A7125 , software SPI mode and hardware SPI mode. software SPI mode through software simulation SPI and hardware SPI mode used Arduinos board's SPI interface and library. You can download the full code at post end.

The Hardware SPI Mode Demo pins to Arduino as below you should comply with Arduinos SPI interface definition:
GND - GND, VCC - 3.3V, SCS - D8, CSN - D9, GPIO1 - D10, SDIO - D11, GPIO2 - D12, SCK - D13
The Software SPI Mode Demo pins to Arduino as below:
GND - GND, VCC - 3.3V, SCS - D8, CSN - D9, SCK - D10, SDIO - D11, GPIO1 - D12, GPIO2 - D13
There we used software SPI mode definition for tested.

A7125 Module has two working mode: Direct Mode and FIFO Mode. which are be controled by Mode Control Register(0x01h), bit FMS([0] Direct mode, [1] FIFO mode), at there we used FIFO mode for tested.
The code must include "A7125reg.h" that includes all registers and command definition.

At Master side: After power on and initial RF chip procedure, Master will deliver 64 bytes data TX FIFO, the jump into RX state to wait ACK data from Slave. If Master receives the ACK data, it will back to TX state to deliver next 64 byte data. If Master dose NOT receive the ACK data, Master will also back to TX state for next 64 byte data delivery after staying in RX state for 50 ms.



Download the code below into the TX Arduino (transmit) -- This code will drive the A7125 module to send out buffer data.
Code: [Select]
const Uint8 PN9_Tab[]={ '*','*','*','*','*','*','*','*','*','*','*','*','*','*',
                       'W','e','l','e','c','o','m','e',' ','t','o',' ',' ',' ',
                       'E','l','e','c','F','r','e','a','k','s',' ','!',' ',' ',
                        '*','*','*','*','*','*','*','*','*','*','*','*','*','*'};

Code: [Select]
void setup()
{
   Serial.begin(9600);
   delay(50);
   //init io pin
   SPI_DIR  = ( SCS + SCK + SDIO);
   SPI_DIR &=~(GIO1 + GIO2 );
   SPI_PORT = (SCS+SDIO) ;
   SPI_PORT &=~SCK;

   Serial.println("------------>send start here.");
   initRF();
   StrobeCmd(CMD_STBY);
   A7125_WriteReg( TXTEST_REG, 0x17 );     //  TX power = 0dBm
   A7125_WriteReg( DATARATE_REG, 0x1F );   //  Data rate = 2M
   A7125_WriteReg( MODECTRL_REG, 0x62 );   //  FIFO mode
   A7125_WriteReg( PLL1_REG, 100 );        // set radio channel
   A7125_WriteReg( CODE1_REG, 0x0F);       //  enable CRC check function
   WriteFIFO( 64 );
   delay(50);
}

void loop()
{
     StrobeCmd( CMD_TX );             //send data mode

     while(SPI_IN & RF_WTR);              // wait RFIC receive data

     StrobeCmd( CMD_SLEEP ); // let RF to sleep mode
     delay(10);
     StrobeCmd(CMD_STBY); //entry standby

     Serial.println("------------>Send complate!");
     delay(1000);
}


Slave side: After power on and initial RF procedure. Slave enters into RX state for receiving data from Master. Slave is set to stay in RX state until it receives teh data. If Slave receives the data from Master, it will transit to TX state to deliver 64 bytes ACK data and the back to RX state for receiving next 64 byte data from Master.



Download the code below into the RX Arduino (receive) - This code will drive the A7125 module to receive the data that transmit form the TX module and print it to serial port and Nokia5110 LCM display, and you should impore EF5110 library.

Code: [Select]
EF_LCM5110  lcm(3,4,5,6,7);
void setup()
{
   Serial.begin(9600);
   delay(50);
   //init io pin
   SPI_DIR  = ( SCS + SCK + SDIO);
   SPI_DIR &=~(GIO1 + GIO2 );
   SPI_PORT = (SCS+SDIO) ;
   SPI_PORT &=~SCK;

   Serial.print("------------>start here.");
   initRF();
   A7125_WriteReg( TXTEST_REG, 0x17 );         //  TX power = 0dBm
   A7125_WriteReg( DATARATE_REG, 0x1F );       //  Data rate = 2M
   A7125_WriteReg( MODECTRL_REG, 0x62 );       //  FIFO mode
   A7125_WriteReg( PLL1_REG,100);              // set radio channel
   A7125_WriteReg( CODE1_REG, 0x0F);           //  enable CRC check function
   A7125_WriteReg( FIFO1_REG, 10-1 );           // set FIFO length
   delay(50);
   lcm.init();
   lcm.clearLCM();
}

void loop()
{
     StrobeCmd(CMD_RX);              //accept data mode

     TmpUint8 = A7125_ReadReg(MODE_REG);
     while(SPI_IN & RF_WTR);                  // wait RFIC receive data

     if((TmpUint8&0x20)==0)
     {
              ReadFIFO(10);                 // CRC pass, read RX FIFO
              for(int i=0; i< 10; i++)
              {
                 //lcm.write_char(RfBuf[i]-32);
                 lcm.write_string(0,i,(char*)RfBuf);
                 Serial.print(";buf=");
                 Serial.print(RfBuf[i], HEX);
               }
               Serial.println();
               delay(50);
     }
     StrobeCmd(CMD_STBY); //entry standby
     delay(1000);
}


Now power on both Arduino , and connect the RX one to PC via USB. Open the IDE serial port monitor , change the baud rate to 9600 bps , and you can see the data that received and same time you can see 5110 display as below.
If you want to change Arduino pin connecting to module , just modify the define on the define.h

OK, the next thing is do youself and make your easy radio.
You can get the module from here and the post from here.



Download the demo for Arduino software SPI.
Download the demo for Arduino hardware SPI.
Download the library of Nokia 5110 for Arduino.

PetaxD

Hi

I'm using this code for run a a1705 radio chip and i had some troubles with that.

The principal trouble is a Eerror code in the calibration mode, i don't know very well how it works, can you explain it?

this is my modified code:

attached were the source code

thanks in advance

Go Up