📄 crt905anc.c
字号:
/************************************************************************************************************
* NOTICE:
* THIS IS A USER DOCUMENT OF COMAIT
* NAME : CRT905ANC.C
* USE: THE Nrf905 RF Module Test Board(both transmit and receive function)
* VERSION : V0.1
* REF_DOC: 2401TEST_BOARD_V0.3C
* START DATE: 02/04/2004
* END DATE: /04/2004
* MCU: AT89C2051 DIP20 (Atmel)
* CRYSTAL: 4.00MHZ
* CHANNEL:
* FREQUENCY 433MHZ
* COMPANY: COMAIT Technology Inc.
* WATER: Raindy Chang
* FUNCTION DESCRIPTION:
1. CRC16
2. Address length: 40bit( 5Byte)
3. Address : AA,BB,CC,DD,EE(H->L)
4. Payload length : 64Bit (8 Bytes,Max 25 Bytes)
5. Out Power : 0 dBm
6. DATA RATE: 100KBps
************************************************************************************************************/
#include <At89x051.h>
//AT89C2051 pins define
#define START_SW P3_3
#define STOP_SW P3_7
#define LED1 P3_4
#define TRX_CE P1_7
#define TXEN P1_6
#define PWR_UP P1_5
#define AM P1_4
#define CD P1_3
#define MISO P1_2
#define DR P3_2
#define SCK P1_1
#define MOSI P1_0
#define CSN P3_5
//The const nrF905 config register define
const unsigned char config_reg_buf[10]={
0x4c,//0b01001100, //CH_NO[7:0]=76,RF
freq=422.4+76/10=430MHZ
0x0c,//0b00001100, //bit[7:6]:not
used/bit5:AUTO_RETRAN=’0’
//bit4:RX_RED_PWR=’0’/bit[3:2]:PA_PWR=’11’+10dBm
//bit1:HFREQ_PLL=0, PLL=433MHZ/bit0:CH_NO[8]=’0’
0x44,//0b01000100, //bit7:not used/bit[6:4]:TX_AFW=’100’4Bytes
//bit3:not used/bit[2:0]:RX_AFW=’100’4Bytes
0x20,//0b00100000, //bit[7:6]:not use/bit[5:0]:RX_PW=’100000'32Bytes
0x20,//0b00100000, //bit[7:6]not use/bit[5:0]TX_PW=’100000’32Bytes
0xa5, //RX_ADDRESS_BYTE0=TX_ADDRESS_BYTE0
0xb5, //RX_ADDRESS_BYTE1=TX_ADDRESS_BYTE1
0xc5, //RX_ADDRESS_BYTE2=TX_ADDRESS_BYTE2
0xd5, //RX_ADDRESS_BYTE3=TX_ADDRESS_BYTE3
0xdb//0b11011011 //bit7:CRC_MODE=’1’
CRC16/bit6:CRC_EN=’1’ CRC Enable
//bit[5:3]:XOF=’011’
16MHZ/bit[2]UP_CLK_EN=’0’ Disable
//bit[1:0]:UP_CLK_FRE=’11’ 500KHZ
};
//The const nrF905 TX address register define
const unsigned char tx_address_reg_buf[4]={
0xa5, //TX_ADDRESS_BYTE0=RX_ADDRESS_BYTE0
0xb5, //TX_ADDRESS_BYTE1=RX_ADDRESS_BYTE1
0xc5, //TX_ADDRESS_BYTE2=RX_ADDRESS_BYTE2
0xd5, //TX_ADDRESS_BYTE3=RX_ADDRESS_BYTE3
};
//The address and data of Tx and the data of RX buffer define
//unsigned char tx_address_buf[4];
unsigned char tx_data_buf[3]={0x41,0x0a,0x0d};
unsigned char rx_data_buf[32];
unsigned char task_swith;
void system_init();
void write_spi_one_byte(unsigned char data_buf);
unsigned char read_spi _one_byte(void);
void write_config();
unsigned read_config();
void write_tx_payload(unsigned char tx_payload_bytes_num);
//void read_tx_payload(unsigned char tx_payload bytes_num);
void write_tx_address(unsigned char tx_address_bytes_num);
//void read_tx_address(unsigned char tx_address_bytes_num);
void read_rx_payload(unsigned char rx_payload_bytes_num);
//void fast_channel_cofig(usigned char freq_value,unsigned char ch_no_value);
void send_rx_data_to_pc(void);
void send_rf_data(void);
void transmit_mode(void);
void receive_mode(void);
void delay_ms(unsigned int delay_counter);
void main(void);
/************************************************************************************************************/
*function: myinit()
*use: initialize some normal parameter
*input parameter: none
*output parameter: none
************************************************************************************************************/
void system_init()
{
unsigned char i;
delay_ms(10);
task_switch=2; //set the test board default mode as receive mode
LED1=0; //turn on the led indicate the system is already for receive data
PWR_UP=1;
TRX_CE=0;
TXEN=0;
CSN=1;
SCK=0;
i=0;
for(i=0;i<32;i++) //Clear the data buffer
{
rx_data_buf[i]=0;
}
write_config();
if(START_SW==0) //for the RF frequency test
{ //if the start_button is pressed during the power on
delay_ms(50);
if(START_SW==0)
{
TXEN=1;
delay_ms(1);
write_tx_address(4);
write_tx_payload(32);
TRX_CE=1;
while(1);
}
}
TMOD=0x20; //config UART rate
SCON=0x50; //19.2kbps(max 20kbps)
PCON=0x80;
TH1=0xfd;
TL1=0xfd;
TR1=1;
EA=0;
ES=0;
}
/***************************************myinit()END**********************************************************/
/************************************************************************************************************
function: write_spi_one_byte()
use:
input parameter:
output parameter:
************************************************************************************************************/
void write_spi_one_byte(unsigned char data_buf)
{
unsigned char i ;
unsigned char j ;
j=0x80; //0b10000000
while(j>0)
{
i =data_buf&j;
if(i ==0)
{
MOSI=0;
}
else
{
MOSI=1;
}
SCK=1;
j>>=1;
SCK=0;
}
}
/******************************************************************************/
/******************************************************************************
*function: read_spi_one_byte()
*use:
*input parameter:
*output parameter:
******************************************************************************/
unsigned char read_spi_one_byte(void)
{
unsigned char j;
unsigned char data_buf;
j=0x80;
while(j>0)
{
data_buf<<=1;
if(MOSO==0)
{
data_buf&=0xfe;
}
else
{
data_buf|=0x01;
}
SCK=1;
j>>=1;
SCK=0;
}
return data_buf;
}
/******************************************************************************/
/******************************************************************************
*function: write_config()
*use:
*input parameter:
*output parameter:
******************************************************************************/
void write_config()
{
unsigned char i ;
CSN=0;
write_spi_one_byte(0x00);
i =0;
for(i=0;i<10;i++)
{
write_spi_one_byte(config_reg_buf[i]);
}
CSN=1;
}
/******************************************************************************/
/******************************************************************************
*fuction: read_config()
*use:
*input parameter:
*output parameter:
******************************************************************************/
/*
void read_config()
{
unsigned char i ;
CSN=0;
write_spi_one_byte(0x10); //0b00010000
i =0;
for(i=0;i<10;i++)
{
xxx[i]=read_spi_one_byte();
}
CSN=1;
}
/******************************************************************************/
/******************************************************************************
*function: write_tx_payload()
*use:
*input parameter:
*output parameter:
******************************************************************************/
void write_tx_payload(unsigned char tx_payload_bytes_num)
{
CSN=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -