本资源提供LT8900芯片的参考代码示例,包括初始化设置、通信协议及应用案例等详细文档和源码,帮助开发者快速上手并深入理解其功能与特性。
#ifndef LT8900_H
#define LT8900_H
===================================================
LT8900 参数定义
===================================================
#define SYNCWORD_0 0x34
#define SYNCWORD_1 0x56
#define SYNCWORD_2 0x78
#define SYNCWORD_3 0x9A
#define SYNCWORD_4 0xBC
#define SYNCWORD_5 0xDE
#define SYNCWORD_6 0xF0
#define SYNCWORD_7 0x12
#define LT_XTAL_OSC_EN 1 // 启用晶振
#define LT_RSSI_PDN 0 // RSSI操作
#define LT_VCO_CAL_EN 1 // 每次RF操作校准VCO
Reg32 (0x20)
#define LT_PREAMBLE_LEN 7 // 前导码=4字节
#define LT_SYNCWORD_LEN 3 // 同步词=64位
#define LT_TRAILER_LEN 0 // 尾部=4位
#define LT_DATA_PACKET_TYPE 0 // 数据包类型=NZL定律
#define LT_FEC_TYPE 0 // 不使用FEC
#define LT_BRCLK_SEL 0 // 不输出BRCLK时钟
#define LT_R32H ((LT_PREAMBLE_LEN << 5) + (LT_SYNCWORD_LEN << 3) + LT_TRAILER_LEN)
#define LT_R32L ((LT_DATA_PACKET_TYPE << 6) + (LT_FEC_TYPE << 4) + (LT_BRCLK_SEL << 1))
Reg40 (0x28)
#define LT_FIFO_EMPTY_THRESHOLD 4
#define LT_FIFO_FULL_THRESHOLD 4
#define LT_SYNCWORD_THRESHOLD 7
#define LT_R40H ((LT_FIFO_EMPTY_THRESHOLD << 3)+ (LT_FIFO_FULL_THRESHOLD >> 2))
#define LT_R40L ((LT_FIFO_FULL_THRESHOLD<<6) + LT_SYNCWORD_THRESHOLD)
Reg41 (0x29)
#define LT_CRC_ON 1 // 启用CRC
#define LT_SCRAMBLE_ON 1 // 禁用scramble
#define LT_PACK_LENGTH_EN 1 // 第一个数据字节为包长
#define LT_FW_TERM_TX 1
#define LT_AUTO_ACK 0 // 不使用自动ACK
#define LT_PKT_FIFO_POL 0 // PKT_FLAG处于高电平有效状态
#define LT_CRC_INIT_DATA 0x00 // CRC初始值
const char code LT_CH_Table[10][8] =
{
(0,10,20,30,40,50,60,70),
(1,11,21,31,41,51,61,71),
(2,12,22,32,42,52,62,72),
(3,13,23,33,43,53,63,73),
(4,14,24,34,44,54,64,74),
(5,15,25,35,45,55,65,75),
(6,16,26,36,46,56,66,76),
(7,17,27,37,47,57,67,77),
(8,18,28,38,48,58,68,78),
(9,19,29,39,49,59,69,79)
};
sbit MISO = P1^0; // 输入
sbit RESET_N = P1^1; // 输出
sbit CLK = P1^2; // 输出
sbit MOSI = P1^3; // 输出
sbit SS = P1^4; // 输出
sbit FIFO_FLAG = P0^6; // 输入
sbit PKT_FLAG = P0^7; // 输入
char LT_RFPower = 0x0F; // 最大功率
unsigned char LT_SCAN_RSSI_CN_NO = (31 << 2);
unsigned char LT_RX_ACK_TIME = 100; // 等待接收ACK包的时间为100us
unsigned char LT_SCAN_RSSI_CH = 0; // 扫描通道=2042+x
unsigned char LT_SCAN_RSSI_TIME = 100; // 扫描RSSI等待时间为100us
char bdata LT_REG35 = 0;
sbit LT_POWER_DOWN = LT_REG35^7;
sbit