📄 send.c
字号:
/*********************************************************************
** 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 + -