cc1101 ASK发射模式

时间:2023-03-09 01:33:26
cc1101 ASK发射模式

cc1101 配置  433.919830Mhz  1.19948kBaud   199.951172  58.035714

#ifndef _CC1100_H_
#define _CC1100_H_

#define CC_IOCFG2 0x00 //GDO2 输出脚配置
#define CC_IOCFG1 0x01 //GDO1 输出脚配置
#define CC_IOCFG0 0x02 //GDO0 输出脚配置
#define CC_FIFOTHR 0x03 //RX FIFO 和TX FIFO门限
#define CC_SYNC1 0x04 //同步词汇,高字节
#define CC_SYNC0 0x05 //同步词汇,低字节
#define CC_PKTLEN 0x06 //数据包长度
#define CC_PKTCTRL1 0x07 //数据包自动控制
#define CC_PKTCTRL0 0x08 //数据包自动控制
#define CC_ADDR 0x09 //设备地址
#define CC_CHANNR 0x0A //信道数
#define CC_FSCTRL1 0x0B //频率合成器控制
#define CC_FSCTRL0 0x0C //频率合成器控制
#define CC_FREQ2 0x0D //频率控制词汇,高字节
#define CC_FREQ1 0x0E //频率控制词汇,中间字节
#define CC_FREQ0 0x0F //频率控制词汇,低字节
#define CC_MDMCFG4 0x10 //调制器配置
#define CC_MDMCFG3 0x11 //调制器配置
#define CC_MDMCFG2 0x12 //调制器配置
#define CC_MDMCFG1 0x13 //调制器配置
#define CC_MDMCFG0 0x14 //调制器配置
#define CC_DEVIATN 0x15 //调制器背离设置
#define CC_MCSM2 0x16 //主通信控制状态机配置
#define CC_MCSM1 0x17 //主通信控制状态机配置
#define CC_MCSM0 0x18 //主通信控制状态机配置
#define CC_FOCCFG 0x19 //频率偏移补偿配置
#define CC_BSCFG 0x1A //位同步配置
#define CC_AGCCTRL2 0x1B //AGC 控制
#define CC_AGCCTRL1 0x1C //AGC 控制
#define CC_AGCCTRL0 0x1D //AGC 控制
#define CC_WOREVT1 0x1E //高字节时间0暂停
#define CC_WOREVT0 0x1F //低字节时间0暂停
#define CC_WORCTRL 0x20 //电磁波激活控制
#define CC_FREND1 0x21 //前末端RX配置
#define CC_FREND0 0x22 //前末端TX配置
#define CC_FSCAL3 0x23 //频率合成器校准
#define CC_FSCAL2 0x24 //频率合成器校准
#define CC_FSCAL1 0x25 //频率合成器校准
#define CC_FSCAL0 0x26 //频率合成器校准
#define CC_RCCTRL1 0x27 //RC 振荡器配置
#define CC_RCCTRL0 0x28 //RC 振荡器配置
#define CC_FSTEST 0x29 //频率合成器标度
#define CC_PTEST 0x2A //产品测试
#define CC_AGCTEST 0x2B //AGC 测试
#define CC_TEST2 0x2C //不同的测试设置
#define CC_TEST1 0x2D //不同的测试设置
#define CC_TEST0 0x2E //不同的测试设置

#define CC_SRES 0x30 //重启芯片
#define CC_SFSTXON 0x31 //开启和校准频率合成器
#define CC_SXOFF 0x32 //关闭晶体振荡器
#define CC_SCAL 0x33 //校准频率合成器并关断
#define CC_SRX 0x34 //启用RX
#define CC_STX 0x35 //空闲状态:启用TX
#define CC_SIDLE 0x36 //离开RX/TX
#define CC_SAFC 0x37 //频率合成器的AFC调节
#define CC_SWOR 0x38 //自动RX选举序列(电磁波激活)
#define CC_SPWD 0x39 //当CSn为高时进入功率降低模式
#define CC_SFRX 0x3A //冲洗RX FIFO缓冲
#define CC_SFTX 0x3B //冲洗TX FIFO缓冲
#define CC_SWORRST 0x3C //重新设置真实时间时钟
#define CC_SNOP 0x3D //无操作

#define CC_PARTNUM 0x30 //CC2550 的组成部分数目
#define CC_VERSION 0x31 //当前版本数
#define CC_FREQEST 0x32 //率偏移估计
#define CC_LQI 0x33 //接质量的解调器估计
#define CC_RSSI 0x34 //接收信号强度指示
#define CC_MARCSTATE 0x35 //控制状态机状态
#define CC_WORTIME1 0x36 //WOR 计时器高字节
#define CC_WORTIME0 0x37 //WOR 计时器低字节
#define CC_PKTSTATUS 0x38 //当前GDOx状态和数据包状态
#define CC_VCO_VC_DAC 0x39 //PLL 校准模块的当前设定
#define CC_TXBYTES 0x3A //TX FIFO 中的下溢和比特数
#define CC_RXBYTES 0x3B //RX FIFO 中的下溢和比特数
#define CC_PATABLE 0x3E //********
#define CC_TXFIFO 0x3F //********
#define CC_RXFIFO 0x3F //********

//==============================================================================

#else //发射 0110

#define IOCFG2 0x29 //GDO2 输出脚配置
#define IOCFG1 0x06 //GDO1 输出脚配置 miso
#define IOCFG0 0x2d //GDO0 输出脚配置
#define FIFOTHR 0x47 //RX FIFO 和TX FIFO门限
#define SYNC1 0xd3 //同步词汇,高字节
#define SYNC0 0x91 //同步词汇,低字节
#define PKTLEN 0xff//0xFF //数据包长度
#define PKTCTRL1 0x00 //数据包自动控制 地址校验关 00广播
#define PKTCTRL0 0x35 //数据包自动控制 可变数据包 CRC开启 白化关闭
#define ADDR 0x00 //设备地址
#define CHANNR 0x00 //信道数
#define FSCTRL1 0x06 //频率合成器控制
#define FSCTRL0 0x00 //频率合成器控制

#define FREQ2 0x10 //频率控制词汇,高字节
#define FREQ1 0xb0 //频率控制词汇,中间字节
#define FREQ0 0x71 //频率控制词汇,低字节
#define MDMCFG4 0xf5 //调制器配置 10K波特率
#define MDMCFG3 0x83 //调制器配置
#define MDMCFG2 0x32// //调制器配置
#define MDMCFG1 0x02 //调制器配置
#define MDMCFG0 0xf8 //调制器配置

#define DEVIATN 0x40 //调制器背离设置
#define MCSM2 0x07 //主通信控制状态机配置
#define MCSM1 0x30 //主通信控制状态机配置
#define MCSM0 0x18 //主通信控制状态机配置
#define FOCCFG 0x16// //频率偏移补偿配置
#define BSCFG 0x6C //位同步配置
#define AGCCTRL2 0x43 //AGC 控制
#define AGCCTRL1 0x40 //AGC 控制
#define AGCCTRL0 0x93 //AGC 控制
#define WOREVT1 0x87 //高字节时间0暂停
#define WOREVT0 0x6b //低字节时间0暂停
#define WORCTRL 0xfb //电磁波激活控制
#define FREND1 0x56 //前末端RX配置
#define FREND0 0x11 //前末端TX配置
#define FSCAL3 0xe9 //频率合成器校准
#define FSCAL2 0x2A //频率合成器校准
#define FSCAL1 0x00 //频率合成器校准
#define FSCAL0 0x1F //频率合成器校准
#define RCCTRL1 0x41 //RC 振荡器配置
#define RCCTRL0 0x00 //RC 振荡器配置
#define FSTEST 0x59 //频率合成器标度
#define PTEST 0x7F //产品测试
#define AGCTEST 0x3F //AGC 测试
#define TEST2 0x81 //不同的测试设置
#define TEST1 0x35 //不同的测试设置
#define TEST0 0x09 //不同的测试设置

发射码

void delay_L()
{
delay_us(1200);
}
void delay_S()
{
delay_us(500);
}
void SendRF()
{
unsigned char dat=0,i=0;
_CC1101_GPIO0_H();
delay_us(5000);
_CC1101_GPIO0_L();
delay_us(2500);
_CC1101_GPIO0_H();
delay_us(3000);
_CC1101_GPIO0_L();
delay_us(3000);
_CC1101_GPIO0_H();
delay_us(3000);
_CC1101_GPIO0_L();
delay_us(3000);
dat=0x5a; //a5 c3
for(i=0;i<8;i++)
{
if(dat&0x80)
{
_CC1101_GPIO0_H();
delay_L();
_CC1101_GPIO0_L();
delay_S();
}
else
{
_CC1101_GPIO0_H();
delay_S();
_CC1101_GPIO0_L();
delay_L();
}
dat<<=1;
}

dat=0xa3; //a5 c3补码
for(i=0;i<8;i++)
{
if(dat&0x80)
{
_CC1101_GPIO0_H();
delay_L();
_CC1101_GPIO0_L();
delay_S();
}
else
{
_CC1101_GPIO0_H();
delay_S();
_CC1101_GPIO0_L();
delay_L();
}
dat<<=1;
}

dat=0xc3; //a5 c3
for(i=0;i<8;i++)
{
if(dat&0x80)
{
_CC1101_GPIO0_H();
delay_L();
_CC1101_GPIO0_L();
delay_S();
}
else
{
_CC1101_GPIO0_H();
delay_S();
_CC1101_GPIO0_L();
delay_L();
}
dat<<=1;
}

dat=0xa5; //a5 c3 0101补码
for(i=0;i<8;i++)
{
if(dat&0x80)
{
_CC1101_GPIO0_H();
delay_us(1200);
_CC1101_GPIO0_L();
delay_us(500);
}
else
{
_CC1101_GPIO0_H();
delay_S();
_CC1101_GPIO0_L();
delay_L();
}
dat<<=1;
}

dat=0x5c; //a5 c3
for(i=0;i<8;i++)
{
if(dat&0x80)
{
_CC1101_GPIO0_H();
delay_L();
_CC1101_GPIO0_L();
delay_S();
}
else
{
_CC1101_GPIO0_H();
delay_S();
_CC1101_GPIO0_L();
delay_L();
}
dat<<=1;
}

dat=0x3c; //a5 c3
for(i=0;i<8;i++)
{
if(dat&0x80)
{
_CC1101_GPIO0_H();
delay_L();
_CC1101_GPIO0_L();
delay_S();
}
else
{
_CC1101_GPIO0_H();
delay_S();
_CC1101_GPIO0_L();
delay_L();
}
dat<<=1;
}
_CC1101_GPIO0_H();delay_us(500);
_CC1101_GPIO0_L();delay_us(500);

// PC_ODR&=~0X20;
}