标题:
LT8910驱动程序(无线发送和接受源码)
[打印本页]
作者:
zubingming
时间:
2018-5-16 15:50
标题:
LT8910驱动程序(无线发送和接受源码)
官方提供的LT8910驱动程序,需要的朋友拿去参考参考
0.jpg
(7.34 KB, 下载次数: 73)
下载附件
2018-5-16 18:30 上传
LT8920 是一款低成本,高集成度的 2.4GHZ 的无线收发芯片。是之前LT8910的升级版!
外围射频电路简单,直接接天线
包括射频前端和数字基带的单芯片解决方案:
※ 支持跳频
※ 支持 SPI 和 I2C 接口
※ 内置 auto_ack 功能
※ 数据率 1Mbps, 250Kbps, 125Kbps, 62.5Kbps
※ 极低功耗(1uA)
※ 支持信号能量检测
※ 单芯片传输距离 200 米
※ TSSOP16 的封装
单片机源程序如下:
#include "intrins.h"
#include "IIC_Drive.h"
#include "LCD_Drive.h"
#include "Interrupt.h"
#include "SPI.h"
#define SPI_TEST
#define RX_MODE 0x80
#define SLEEP_MODE 0x40
#define AFTER_SLEEP 0x20
unsigned char *p_rx_sum;
unsigned char working_state = RX_MODE; // working state
unsigned char rssivalue = 0;
unsigned char channel_index[79] = {0x00, 0x01, 0x02,
0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, //2402, 2412, 2422, 2432
0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20,
0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a,
0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34,
0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e,
0x3f, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49,
0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f};
void main(void)
{
unsigned char rx_sum = 0; //接收次数累加器
unsigned char highReg = 0;
unsigned char lowReg = 0;
unsigned char channelvalue = 0;
p_rx_sum = &rx_sum; //指向累加器的指针
LCD_Initialize();
LCD_WriteCommand(0x80);
LCD_WriteDat(0xf6); //''
LCD_WriteCommand(0x8c);
LCD_WriteDat(0x43); //'C'
LCD_WriteDat(0x48); //'H'
LCD_WriteDat(bcd_table[(channelvalue+2)/10]);
LCD_WriteDat(bcd_table[(channelvalue+2)%10]);
LCD_WriteCommand(0xc0);
LCD_WriteDat(0x72); //'r'
LCD_WriteDat(0x73); //'s'
LCD_WriteDat(0x73); //'s'
LCD_WriteDat(0x69); //'i' means rssi
LCD_WriteDat(bcd_table[rssivalue/10]);
LCD_WriteDat(bcd_table[rssivalue%10]);
Timer0_Init();
//EX0_Init();
EA = 1;
#ifdef SPI_TEST
RST = 0;
Delay_ms(2);
RST = 1;
Delay_ms(5);
PKT = 1;
LT8900_Init();
SPI_ReadReg(4);
if (RegH==0x9c && RegL==0xc9)
{
LED_SPI = 0;
}
while (1)
{
switch(working_state)
{
case RX_MODE:
//rssivalue = 0;
SPI_WriteReg( 7, 0x00, 0x00);
SPI_WriteReg(52, 0x80, 0x80);
EX0 = 0;
SPI_WriteReg( 7, 0x00, 0x80+channelvalue); //TX Enable & channel set to 2480M
EX0 = 1;
// while(PKT);
do
{
SPI_ReadReg(48);
}
while(RegL & 0x40);
SPI_WriteReg( 7, 0x00, 0x00); //goto idle mode
SPI_ReadReg(48);
if(!(RegH & 0x80))
{
LED_RF = ~LED_RF;
SPI_ReadReg(50);
if (RegH==0x03 && RegL==0xce)
rx_sum++; //RX 累加器加一
if (RegH==0x01)
{
channelvalue = RegL; //switch to channel RegL
LCD_WriteCommand(0x8e);
LCD_WriteDat(bcd_table[(channelvalue+2)/10]);
LCD_WriteDat(bcd_table[(channelvalue+2)%10]);
}
SPI_ReadReg(6); //get rssi_value
RegH &= 0xfc;
rssivalue = RegH>>2;
LCD_WriteCommand(0xc4);
LCD_WriteDat(bcd_table[rssivalue/10]);
LCD_WriteDat(bcd_table[rssivalue%10]);
rssivalue = 0;
}
break;
case SLEEP_MODE:
SPI_WriteReg(35, 0x43, 0x00);
SPI_SS = 1;
LCD_WriteCommand(0xc0);
LCD_WriteDat(0x7a);
working_state = AFTER_SLEEP;
break;
case AFTER_SLEEP:
_nop_();
break;
default : break;
}
}
#else
MOSI = 0; // A4 =0
RST = 0;
Delay_ms(2);
RST = 1;
Delay_ms(5);
PKT = 1;
RF_Init();
IIC_ReadReg( 4, &highReg, &lowReg);
if (highReg==0x9c && lowReg==0xc9)
{
LED_IIC = 0;
}
while (1)
{
IIC_WriteReg(52, 0x80, 0x80);
IIC_WriteReg( 7, 0x00, 0xb0); //TX Enable & channel set to 2450M
/*while(PKT);*/
do
{
SPI_ReadReg(48);
}
while(RegL & 0x40);
IIC_WriteReg( 7, 0x00, 0x00); //goto idle mode
IIC_ReadReg(48, &highReg, &lowReg);
if(!(highReg & 0x80))
{
rx_sum++; //RX 累加器加一
LED_RF = ~LED_RF;
}
}
#endif
/*
LCD_WriteCommand(0x80);
LCD_WriteDat(0x32); //'2'
LCD_WriteDat(0x34); //'4'
LCD_WriteDat(0x35); //'5'
LCD_WriteDat(0x30); //'0'
LCD_WriteDat(0xa5); //'.'
*/
/*
if(rx_lcd_flag == 50)
{
LCD_WriteCommand(0x04); // turn left
LCD_WriteCommand(0x8f);
LCD_WriteDat(0x7f); //'<'
}
if(rx_lcd_flag == 100)
{
LCD_WriteDat(0x7f);
}
if(rx_lcd_flag == 150)
{
LCD_WriteDat(0x7f);
}
if(rx_lcd_flag == 200)
{
LCD_WriteDat(0x7f);
}
if(rx_lcd_flag >= 250)
{
rx_lcd_flag = 0;
LCD_WriteCommand(0x06); //写入新数据后 光标右移一位
LCD_WriteDat(0xa0);
LCD_WriteDat(0xa0);
LCD_WriteDat(0xa0);
LCD_WriteDat(0xa0);
//LCD_WriteCommand(0x06);
}
*/
}
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
LT8910驱动程序.rar
(142.91 KB, 下载次数: 143)
2018-5-16 15:50 上传
点击文件名下载附件
LT8910驱动程序
下载积分: 黑币 -5
作者:
FENGJLONG
时间:
2019-3-26 01:42
学习了!谢谢分享!!!
作者:
YOUTHFUL
时间:
2019-5-22 01:01
学习了!谢谢分享!!!
作者:
small_tiger09
时间:
2019-12-21 23:41
不错,感谢分享!
作者:
ALISWANG
时间:
2020-5-14 09:42
下载学习
作者:
tuner520
时间:
2020-6-27 16:08
感谢分享!下载学习
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1