|
初始化代码
SPLSS= 0;
Delay_10us(300);
SPLSS= 1;
//LT8900_RST = 1;
//Delay_10us(1);
LT8900_RST = 0;
Delay_10us(5);
LT8900_RST = 1; //Enable
//Delay_10us(5);
SPI_CLK = 0; //set SPI clock to low
Delay_10us(5); //delay 5ms to let LT8900 stable
LT8900_WriteReg(0, 0x6F, 0xE0);
//LT8900_WriteReg(1, 0x56, 0x81);
LT8900_WriteReg(2, 0x66, 0x17);
LT8900_WriteReg(4, 0x9C, 0xC9);
LT8900_WriteReg(5, 0x66, 0x37);
//LT8900_WriteReg(7, 0x00, 0x30);// use for setting RF frequency and to start or stop TX /RX packets
LT8900_WriteReg(8, 0x6C, 0x90);
LT8900_WriteReg(9, 0x19, 0x40);//set TX power level 1840
//LT8900_WriteReg(10, 0x7F, 0xFD);//crystal osc.enabled
LT8900_WriteReg(11, 0x00, 0x08);//rssi enabled
//LT8900_WriteReg(12, 0x00, 0x00);
LT8900_WriteReg(13, 0x48, 0xBD);
LT8900_WriteReg(22, 0x00, 0xff);
//LT8900_WriteReg(23, 0x80, 0x05);//
LT8900_WriteReg(24, 0x00, 0x67);
//LT8900_WriteReg(25, 0x16, 0x59);
LT8900_WriteReg(26, 0x19, 0xE0);
LT8900_WriteReg(27, 0x13, 0x00);
//LT8900_WriteReg(28, 0x18, 0x00);
LT8900_WriteReg(32, 0x40, 0x00);//set preamble_len :3 byes. set syncword_len:16 bits ----Reg36[15:0]
LT8900_WriteReg(33, 0x3f, 0xC7);
LT8900_WriteReg(34, 0x20, 0x00);
LT8900_WriteReg(35, 0x03, 0x00);
LT8900_WriteReg(36, 0x03, 0x80);//set sync words
LT8900_WriteReg(37, 0x03, 0x80);//set sync words
LT8900_WriteReg(38, 0x5A, 0x5A);//set sync words
LT8900_WriteReg(39, 0x03, 0x80);//set sync words
LT8900_WriteReg(40, 0x44, 0x01);
LT8900_WriteReg(41, 0xb0, 0x00);//crc on scramble off ,1st byte packet length ,auto ack off
LT8900_WriteReg(42, 0xFD, 0xB0);
//LT8900_WriteReg(43, 0x00, 0x0F);//configure scan_rssi
//LT8900_WriteReg(50, 0x00, 0x00);
读写
unsigned char SPI_WriteReadByte(unsigned char temp_data)
{
while(!(SPI1_SR & 0X02));
SPI1_DR = temp_data;
while(!(SPI1_SR & 0X01));
temp_data = SPI1_DR;
return temp_data;
}
//=========================
void LT8900_WriteReg(unsigned char address, unsigned char data_H, unsigned char data_L)
{
SPLSS= 0;
//Delay_10us(1);
SPI_WriteReadByte(address&0x7F);
//Delay_10us(1);
SPI_WriteReadByte(data_H);
//Delay_10us(1);
SPI_WriteReadByte(data_L);
//Delay_10us(1);
SPLSS= 1;
}
//===========
void LT8900_ReadReg(unsigned char address)
{
SPLSS= 0;
//Delay_10us(1);
SPI_WriteReadByte(address|0x80);
//Delay_10us(1);
data_high=SPI_WriteReadByte(0xff);
//Delay_10us(1);
data_low=SPI_WriteReadByte(0xff);
//Delay_10us(1);
SPLSS= 1;
}
这8920不知道是自己人品问题还是什么,无遮挡20米通讯可以的,如果遥控器拿在手上晃荡着转转身就会接收不稳定,甚至靠近接收器几米了,才能通讯 |
|