• 大小: 25KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-06-19
  • 语言: 其他
  • 标签: si4432  无线  

资源简介

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);
}
//-------------------------------------------对寄存器读写操作=================================

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件       13318  2013-08-30 17:04  si4432-b1-test
     文件       20894  2013-08-30 17:04  si4432-b1-test.LST
     文件       14037  2013-08-30 17:04  si4432-b1-test.M51
     文件       14843  2013-08-30 17:04  si4432-b1-test.OBJ
     文件        1047  2013-09-19 14:30  si4432-b1-test.Opt
     文件        2157  2013-08-28 11:49  si4432-b1-test.Uv2
     文件        9985  2011-11-14 16:56  si4432-b1-test.c
     文件        2899  2013-08-30 17:04  si4432-b1-test.hex
     文件          60  2013-08-30 17:04  si4432-b1-test.lnp
     文件         232  2013-09-19 14:29  si4432-b1-test.plg
     文件        1433  2013-08-30 19:14  si4432-b1-test_Opt.Bak
     文件        2009  2011-10-15 15:02  si4432-b1-test_Uv2.Bak

评论

共有 条评论