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

📄 crt905anc.c

📁 nrf905通信 基于rs232
💻 C
📖 第 1 页 / 共 2 页
字号:
/************************************************************************************************************
*				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 + -