Pages: [1]   Go Down
Author Topic: The Easy Radio de A1725  (Read 1236 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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  smiley-evil

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:
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:
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:
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.
« Last Edit: June 12, 2011, 10:07:48 pm by RichardL » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 1
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

* A7105.rar (7.55 KB - downloaded 11 times.)
Logged

Pages: [1]   Go Up
Jump to: