⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 send.c

📁 A7125无线模块
💻 C
📖 第 1 页 / 共 2 页
字号:
/*********************************************************************
**  Device: A7125                                                   **
**  File:   main.c                                                  **
**                                                                  **
**  Description:                                                    **
**  This file is a sample code for your reference.                  **
**                                                                  **
**  Copyright (C) 2008 AMICCOM Corp.                                **
**                                                                  **
*********************************************************************/

#include <reg51.h>
#include "define.h"
#include "a7125reg.h"

//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//
//                      I/O Declaration                             //
//           TODO: USER NEED CHANGE THIS SET TO FIT SYSTEM.         //
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//
sbit SCS    = P1^7;
sbit SCK    = P1^4;
sbit SDIO   = P1^5;
sbit GIO1   = P1^3;
sbit GIO2   = P1^2;
sbit LED1   =P3^7;
sbit BUFF   =P3^5;
#define RF_WTR  GIO1
 
unsigned int cc;
unsigned char dd;
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//
//                    Global Variable Declaration                   //
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//
Uint8		idata	RfBuf[64];
Uint8		idata	TmpUint8;

//-----------------------------------------------------------------------------
// 64 bytes PN9 pseudo random code
//-----------------------------------------------------------------------------
const Uint8 code PN9_Tab[]=
{   0xFF,0x83,0xDF,0x17,0x32,0x09,0x4E,0xD1,
    0xE7,0xCD,0x8A,0x91,0xC6,0xD5,0xC4,0xC4,
    0x40,0x21,0x18,0x4E,0x55,0x86,0xF4,0xDC,
    0x8A,0x15,0xA7,0xEC,0x92,0xDF,0x93,0x53,
    0x30,0x18,0xCA,0x34,0xBF,0xA2,0xC7,0x59,
    0x67,0x8F,0xBA,0x0D,0x6D,0xD8,0x2D,0x7D,
    0x54,0x0A,0x57,0x97,0x70,0x39,0xD2,0x7A,
    0xEA,0x24,0x33,0x85,0xED,0x9A,0x1D,0xE0
};

//-----------------------------------------------------------------------------
// RF ID code
//-----------------------------------------------------------------------------
const Uint8 code ID_Tab[4] =
{
    0x54, 0x75, 0xC5, 0x2A
};

// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//                                   NOTE                                    !!
// !!         THIS CONFIG TABLE ONLY USE ON RF CRYSTAL = 16MHz               !!
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
const Uint16 code A7125Config[] =
{
    //      address   name              Descript
    //      -------   ----              ---------
    0x00,   //0x00    MODE register,    only reset, not use on config
    0x62,   //0x01    MODE CTRL register,   FIFO mode, Enable ARSSI, Enable AIF
    0x00,   //0x02    CALIBRATION register,
    0x3F,   //0x03    FIFO1 register,
    0x00,   //0x04    FIFO2 register,
    0x00,   //0x05    FIFO register,    for fifo read/write
    0x00,   //0x06    IDDATA register,  for idcode
    0x00,   //0x07    RCOSC1 register,
    0x00,   //0x08    RCOSC2 register,
    0x00,   //0x09    RCOSC3 register,
    0x00,   //0x0A    CKO register,
    0x01,   //0x0B    GIO1 register,    WTR
    0x01,   //0x0C    GIO2 register,    WTR       
    0x1F,   //0x0D    DATARATE register,
    0x50,   //0x0E    PLL1 register,
    0x0E,   //0x0F    PLL2 register,    RFbase 2400.001MHz
    0x96,   //0x10    PLL3 register,
    0x00,   //0x11    PLL4 register,
    0x04,   //0x12    PLL5 register,
    0x3C,   //0x13    chanel group I,
    0x78,   //0x14    chanel group II,
    0xD7,   //0x15    TX1 register,
    0x40,   //0x16    TX2 register,
    0x10,   //0x17    DELAY1 register,
    0x61,   //0x18    DELAY2 register,
    0x62,   //0x19    RX register,
    0xA0,   //0x1A    RXGAIN1 register,
    0x00,   //0x1B    RXGAIN2 register,
    0x00,   //0x1C    RXGAIN3 register,
    0xD2,   //0x1D    RXGAIN4 register,
    0x00,   //0x1E    RSSI register,
    0xE2,   //0x1F    ADC register,
    0x07,   //0x20    CODE1 register,
    0x56,   //0x21    CODE2 register,
    0x2A,   //0x22    CODE3 register,
    0x06,   //0x23    IFCAL1 register,
    0x00,   //0x24    IFCAL2 register,  only read
    0x05,   //0x25    VCOCCAL register,
    0x44,   //0x26    VCOCAL1 register,
    0x80,   //0x27    VCOCAL2 register,
    0x30,   //0x28    VCO DEV Cal. I register,
    0x20,   //0x29    VCO DEV Cal. II register,
    0x80,   //0x2A    VCO DEV Cal. III register,
    0x00,   //0x2B    VCO Mod. delay register
    0x7A,   //0x2C    BATTERY register,
    0x2F,   //0x2D    TXTEST register,
    0x47,   //0x2E    RXDEM1 register,
    0x80,   //0x2F    RXDEM2 register,
    0xF1,   //0x30    CPC1 register,
    0x11,   //0x31    CPC2 register,
    0x04,   //0x32    CRYSTAL register,
    0x45,   //0x33    PLLTEST register,
    0x18,   //0x34    VCOTEST register,
    0x10,   //0x35    RF Analog Test
    0xFF,   //0x36    IFAT register,
    0x37,   //0x37    Channel select register,
    0xFF    //0x38    VRB register
};


/*********************************************************************
**  function Declaration
*********************************************************************/
void A7125_WriteReg(Uint8, Uint8);
Uint8 A7125_ReadReg(Uint8);
void StrobeCmd(Uint8 src);
void ByteSend(Uint8 src);
void A7125_Reset(void);
void A7125_WriteID(void);
void initRF(void);
void A7125_Config(void);
void A7125_Cal(void);
void WriteFIFO(Uint8 length);
void ReadFIFO(Uint8 length);
void Delay1ms(Uint16 n);
Uint8 ByteRead(void);
/*void timo_init()
{
  TMOD=0X01;
  TH0=0XDC;
  TL0=0X00;
  EA=1;
  ET0=1;
  TR0=1;

}
void timer(void) interrupt 1
{   
   TH0=0XDC;
  TL0=0X00;
    cc++;
	if(cc>10)
	 {
	   cc=0;
	   dd=1;
	 }
}*/


/*********************************************************************
* main loop
*********************************************************************/
void main(void)
{  
    unsigned int aa;
	unsigned int bb; 
	unsigned char flag; 
	Delay1ms(50);          // 等待晶体稳定
	LED1=0;
	BUFF=1;
    initRF();
    StrobeCmd(CMD_STBY);
    A7125_WriteReg( TXTEST_REG, 0x17 );          // 	 发送功率0DB
    // A7125_WriteReg( DATARATE_REG, 0x1F );    //  速率2M
	A7125_WriteReg( DATARATE_REG, 0x5F );       // 1M
    A7125_WriteReg( MODECTRL_REG, 0x62 );      //  FIFO模式
    A7125_WriteReg( PLL1_REG,160);             //   频道10
    A7125_WriteReg( CODE1_REG, 0x0F);          //  使能CRC检测
	//A7125_WriteReg(FIFO1_REG,8-1);            // set FIFO length 
   WriteFIFO( 8 ); 
  // timo_init();
   // StrobeCmd(CMD_RX);                      // 写数据
    while(1)
    {
		 aa=0;
		 bb=0;
		 //cc=0;
		 flag=0;
		 // WriteFIFO( 8 ); 
		 // A7125_WriteReg(FIFO1_REG,8-1);            // set FIFO length 
         StrobeCmd( CMD_TX );	            //发送数据
		  while(GIO1);                      // 等待发送完成
		  GIO1=1;
		A7125_WriteReg(FIFO1_REG,8-1);            // set FIFO length 
		 StrobeCmd(CMD_RX);																						    
		for(aa=0;aa<505;aa++)
		{          // while(GIO1);                  // 等待数据传输完成
		   //GIO1=1;
		   //if(aa==503)
		    //{
			  	//Delay1ms(1);   
		//	}
		   if(GIO1==0)
		     {
			   GIO1=1;
			   flag=1;
		       break;  
			}
 		}
		if(flag)
		 {
		    flag=0;            TmpUint8 = A7125_ReadReg(MODE_REG);           if((TmpUint8&0x20)==0)            {               ReadFIFO(8);	//读数据
			 //  LED1=~LED1;
		  	  // Delay1ms(720);
			     LED1=1;
			   	 BUFF=~BUFF;
				 Delay1ms(50);
			   //StrobeCmd( CMD_TX );	 //发送数据
			 // A7125_WriteReg( PLL1_REG,160);             //   频道10            }
	  	 //else
		 //  {
		   //	  LED1=~LED1;
			//  Delay1ms(150);
		//  }
		          
		 }
		 else
		 {
		   // for(bb=0;bb<3;bb++)
			//   {
			     LED1=0;
			//	 BUFF=~BUFF;
			     BUFF=1;
				 Delay1ms(200);
			//	}
			    //
			    // A7125_WriteReg( PLL1_REG,160);             //   频道10
				 initRF();
			   //  StrobeCmd( CMD_TX );	 //发送数
			
		 }
        
	 }
}

/*********************************************************************
** Err_State
*********************************************************************/
void Err_State(void)
{
    //ERR display
    //Error Proc...
    while(1)
    {
        ;
    }
}

/************************************************************************
**  A7125_WriteReg
************************************************************************/
void A7125_WriteReg(Uint8 addr, Uint8 dataByte)
{
    Uint8 i;

    SCS = 0;
    addr |= 0x00; //bit cmd=0,r/w=0
    for(i = 0; i < 8; i++)
    {
        if(addr & 0x80)
            SDIO = 1;
        else
            SDIO = 0;

        SCK = 1;
        _nop_();
        SCK = 0;
        addr = addr << 1;
    }
    _nop_();

    //send data byte
    for(i = 0; i < 8; i++)
    {
        if(dataByte & 0x80)
            SDIO = 1;
        else
            SDIO = 0;

        SCK = 1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -