资源简介
关于si4432的测试程序,已经验证过,正确无误
代码片段和文件信息
/*
Demo 程序适用范围: Si4431F13 Si4432F20 Si4431F27
RF 模块的参数设置为: FSK, 433.5MHz, 1.2KBPS, +/-10PPM 频偏:30KHz, 调制带宽:61.2KHz
使能AFC,使能CRC, PH + FIFO 模式 头码:“swwx“ 同步字: 0x2d 0xd4
每秒钟发射的固定测试数据为:
0x410x420x430x440x450x460x470x480x490x6d
0x6d是发生数据的 CheckSum 0x6d = (0x41 +0x42 +0x43 +0x44 +0x45 +0x46 +0x47 + 0x48 +0x49)
控制MCU : 8 bit MCU :STC89C52 11.0592MHZ
*/
#include //52寄存器
#include
#include
#define SI4432_PWRSTATE_READY 01 // 模块 Ready 状态定义
#define SI4432_PWRSTATE_TX 0x09 // 模块 发射状态定义
#define SI4432_PWRSTATE_RX 05 // 模块 接收状态定义
#define SI4432_PACKET_SENT_INTERRUPT 04 // 模块 发射完成中断
#define SI4432_Rx_packet_received_interrupt 0x02 // 模块 收到数据包中断
#define TX1_RX0 spi_rw(0x0e|0x80 0x01) // 发射状态的天线开关定义
#define TX0_RX1 spi_rw(0x0e|0x80 0x02) // 接收状态的天线开关定义
#define TX0_RX0 spi_rw(0x0e|0x80 0x00) // 非发射,接收状态的天线开关定义
//========================================SI4432与MCU连接========================================
sbit SDN = P3^3;
sbit nIRQ = P1^4;
sbit nSEL = P1^3;
sbit SCK = P1^2;
sbit SDI = P1^1;
sbit SDO = P1^0;
//========================================按键端口===============================================
sbit KEY = P3^6;
//========================================LED显示端口============================================
sbit LED = P3^4;
unsigned char ItStatus1 ItStatus2;
unsigned char rf_timeout;
unsigned char rx_buf[15];
// 检测到按键后发射的固定内容的测试信号,第10个数据是前9个数据的校验和
const unsigned char tx_test_data[10] = {0x410x420x430x440x450x460x470x480x490x6d};
//===============================================================================================
typedef struct
{
unsigned char reach_1s : 1;
unsigned char rf_reach_timeout : 1;
unsigned char is_tx : 1;
} FlagType;
FlagType Flag;
//==============================================函数申明===========================================
void delay_1ms(unsigned char time);
unsigned char spi_byte(unsigned char TRdata);
unsigned char spi_rw(unsigned char addr unsigned char TRdata);
void rx_data(void);
void tx_data(void);
void SI4432_init(void);
//================================================延时函数=========================================
void delay_1ms(unsigned char time)
{
unsigned char ik;
for(k = 0; k< time; k++)
{
for(i = 0; i<130; i++)
{
_nop_();
}
}
}
//===============================================SPI读写函数=======================================
unsigned char spi_byte(unsigned char TRdata)
{
unsigned char i;
for (i = 0; i < 8; i++) // 控制SCK 和 SDI,发射一个字节的命令,同事读取1个字节的数据
{ // 没有包括nSEL的控制
if (TRdata & 0x80)
SDI = 1;
else
SDI = 0;
TRdata <<= 1;
SCK = 1;
if (SDO)
TRdata |= 0x01;
else
TRdata &= 0xfe;
SCK = 0;
}
return (TRdata);
}
//-------------------------------------------对寄存器读写操作=================================
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 13214 2013-11-17 14:55 jask-si4432-test-TXRX - 副本\si4432-b1-test
文件 9985 2011-11-14 16:56 jask-si4432-test-TXRX - 副本\si4432-b1-test.c
文件 2899 2013-11-17 14:55 jask-si4432-test-TXRX - 副本\si4432-b1-test.hex
文件 60 2013-11-17 14:55 jask-si4432-test-TXRX - 副本\si4432-b1-test.lnp
文件 20889 2013-11-17 14:55 jask-si4432-test-TXRX - 副本\si4432-b1-test.LST
文件 14330 2013-11-17 14:55 jask-si4432-test-TXRX - 副本\si4432-b1-test.M51
文件 14753 2013-11-17 14:55 jask-si4432-test-TXRX - 副本\si4432-b1-test.OBJ
文件 1388 2013-11-18 15:49 jask-si4432-test-TXRX - 副本\si4432-b1-test.Opt
文件 196 2013-11-18 19:46 jask-si4432-test-TXRX - 副本\si4432-b1-test.plg
文件 2022 2013-11-17 14:44 jask-si4432-test-TXRX - 副本\si4432-b1-test.Uv2
文件 1388 2013-11-17 15:44 jask-si4432-test-TXRX - 副本\si4432-b1-test_Opt.Bak
文件 2009 2011-10-15 15:02 jask-si4432-test-TXRX - 副本\si4432-b1-test_Uv2.Bak
文件 168 2012-11-12 09:11 jask-si4432-test-TXRX - 副本\程序说明.txt
目录 0 2013-11-18 22:53 jask-si4432-test-TXRX - 副本
----------- --------- ---------- ----- ----
83301 14
评论
共有 条评论