#include<stc15.h>
#include<intrins.h>
#include"user.h"
#include"spi.h"
#include"si4432.h"
U8 ItStatus1,ItStatus2;
void Delay_ms(U8 cnt) //@24.000MHz 不分频
{
unsigned char i, j,k;
for(k=0;k<cnt;k++)
{
i = 24;
j = 85;
do
{
while (--j);
}
while (--i);
}
}
/*
void Delay_us(U8 cnt) //@24.000MHz 不分频
{
U8 i;
for(i=0;i<cnt;i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
}
*/
void Si4432_Init(void)
{
SDN=0;
Delay_ms(30); //刚上电复位,SDN要至少拉低30ms
/*进入初始化,首先通过读取中断状态寄存器清除中断标志*/
ItStatus1 = SpiReadRegister(0x03);
ItStatus2 = SpiReadRegister(0x04);
/*芯片复位,刚上电的单片机要对RFIC寄存器复位,以防出现不可知异常*/
SpiWriteRegister(0x07, 0x80);
/*等待RFIC上电复位中断来临,并清除中断标志*/
//while ( NIRQ == 1);
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
ItStatus1 = SpiReadRegister(0x03);
ItStatus2 = SpiReadRegister(0x04);
/*等待RFIC就绪中断来临,并清除中断标志(或许不用)*/
// while ( NIRQ == 1);
// ItStatus1 = SpiReadRegister(0x03);
// ItStatus2 = SpiReadRegister(0x04);
SpiWriteRegister(0x75, 0x75);
SpiWriteRegister(0x76, 0xbb);
SpiWriteRegister(0x77, 0x80);
SpiWriteRegister(0x6e, 0x4e);
SpiWriteRegister(0x6f, 0xa5);
SpiWriteRegister(0x70, 0x2c);
SpiWriteRegister(0x1c, 0xa5);
SpiWriteRegister(0x20, 0xa1);
SpiWriteRegister(0x21, 0x20);
//这种设置就是以上都错,频率,波特率都错!!!!如何弄!!
SpiWriteRegister(0x22, 0x4e);
SpiWriteRegister(0x23, 0xa5);
SpiWriteRegister(0x24, 0x00);
SpiWriteRegister(0x25, 0x13);
SpiWriteRegister(0x1d, 0x40);
//SpiWriteRegister(0x1e, 0x02);
//SpiWriteRegister(0x2a, 0xff);
SpiWriteRegister(0x72, 0x1f);
SpiWriteRegister(0x34, 0x0c);
SpiWriteRegister(0x35, 0x28);
SpiWriteRegister(0x33, 0x02);
SpiWriteRegister(0x36, 0x2d);
SpiWriteRegister(0x37, 0xd4);
SpiWriteRegister(0x30, 0x8d);
SpiWriteRegister(0x32, 0x00);
SpiWriteRegister(0x71, 0x63);
SpiWriteRegister(0x0b, 0x12);
SpiWriteRegister(0x0c, 0x15);
SpiWriteRegister(0x5a, 0x7f);
SpiWriteRegister(0x58, 0x80);
SpiWriteRegister(0x59, 0x40);
SpiWriteRegister(0x6a, 0x0b);
SpiWriteRegister(0x68, 0x04);
SpiWriteRegister(0x1f, 0x03);
SpiWriteRegister(0x09, 0xD7);
SpiWriteRegister(0x6d, 0x1e);
SpiWriteRegister(0x07, 0x01);
//接收FIFO清零
SpiWriteRegister(0x08,0x02);
SpiWriteRegister(0x08,0x00);
/*使能接收状态,等待接收中断*/
//使能接收包有效中断'ipkval'
//使能CRC校验错误中断'icrcerror'
SpiWriteRegister(0x05, 0x03);
SpiWriteRegister(0x06, 0x00);
//读中断状态寄存器,清除中断使能寄存器值改变引发的中断
// while(NIRQ); //是否需要看单片机速率
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
ItStatus1 = SpiReadRegister(0x03);
ItStatus2 = SpiReadRegister(0x04);
//设置工作模式为接收模式,由预备模式转入
SpiWriteRegister(0x07, 0x05);
}
void RX_Mode(void)
{
// SpiWriteRegister(0x07, 0x01);
//接收FIFO清零
// SpiWriteRegister(0x08,0x02);
// SpiWriteRegister(0x08,0x00);
//使能接收包有效中断'ipkval'
//使能CRC校验错误中断'icrcerror'
SpiWriteRegister(0x05, 0x03);
SpiWriteRegister(0x06, 0x00);
//读中断状态寄存器,清除中断使能寄存器值改变引发的中断
//while(NIRQ); //是否需要看单片机速率
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
ItStatus1 = SpiReadRegister(0x03);
ItStatus2 = SpiReadRegister(0x04);
SpiWriteRegister(0x72, 0x1f);
//手动接收模式打开,由预备模式转入
SpiWriteRegister(0x07, 0x05);
}
void TX_Mode(void)
{
//使能数据包发送中断
SpiWriteRegister(0x05, 0x04);
SpiWriteRegister(0x06, 0x00);
//读中断状态寄存器,清除中断使能寄存器值改变引发的中断
// while(NIRQ); //是否需要看单片机速率
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
ItStatus1 = SpiReadRegister(0x03);
ItStatus2 = SpiReadRegister(0x04);
//手动发射模式打开,由预备模式转入
SpiWriteRegister(0x07, 0x09);
}
没有合适的资源?快使用搜索试试~ 我知道了~
si4432_example.zip_si4432
共56个文件
lst:9个
obj:9个
c:8个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 8 浏览量
2022-09-24
20:10:27
上传
评论
收藏 108KB ZIP 举报
温馨提示
si4432基本收发例程,技术交流请加我1294976338,提供各种嵌入式资料
资源推荐
资源详情
资源评论
收起资源包目录
si4432_example.zip (56个子文件)
si4432_example
si4432_receive(编程指南版)
hex
SI4432_IR_TEST.plg 233B
SI4432_IR_TEST.lnp 191B
main.obj 7KB
uart.obj 4KB
STARTUP.obj 810B
SI4432_IR_TEST.hex 3KB
SI4432_IR_TEST 23KB
SI4432_Driver.obj 9KB
spi.obj 4KB
project
SI4432_IR_TEST_uvproj.bak 14KB
SI4432_IR_TEST.plg 1KB
SI4432_IR_TEST.uvopt 62KB
SI4432_IR_TEST_uvopt.bak 62KB
STARTUP.A51 6KB
SI4432_IR_TEST.uvproj 14KB
link
uart.lst 3KB
main.lst 4KB
SI4432_Driver.lst 9KB
spi.lst 4KB
STARTUP.lst 14KB
SI4432_IR_TEST.m51 22KB
source
C
SI4432_Driver.c 4KB
main.c 1KB
spi.c 1KB
uart.c 1KB
H
uart.h 127B
spi.h 407B
user.h 260B
si4432.h 163B
si4432_transmit(编程指南)
hex
SI4432_IR_TEST.plg 618B
SI4432_IR_TEST.lnp 171B
main.obj 7KB
STARTUP.obj 810B
SI4432_IR_TEST.hex 3KB
SI4432_IR_TEST 19KB
SI4432_Driver.obj 9KB
spi.obj 4KB
project
SI4432_IR_TEST_uvproj.bak 14KB
SI4432_IR_TEST.plg 1KB
SI4432_IR_TEST.uvopt 60KB
SI4432_IR_TEST_uvopt.bak 60KB
STARTUP.A51 6KB
SI4432_IR_TEST.uvproj 14KB
link
main.lst 5KB
SI4432_Driver.lst 9KB
spi.lst 4KB
STARTUP.lst 14KB
SI4432_IR_TEST.m51 16KB
source
C
SI4432_Driver.c 4KB
main.c 2KB
spi.c 1KB
uart.c 492B
H
uart.h 53B
spi.h 407B
user.h 260B
si4432.h 163B
共 56 条
- 1
资源评论
小波思基
- 粉丝: 72
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功