📄 cc1100_ii.c
字号:
/*引入文件************************************************/
#include<iom48.h>
#include <intrinsics.h>
#include <comp_a90.h>
unsigned char rev_ok=0;
void WriteRfSettings(void) ;
void Spi_Write_Burst(unsigned char addr,unsigned char *buffer,unsigned char count);
void Spi_Write_Strobe(unsigned char strobe) ;
#define NOP() _NOP()
/*模块操作指令*****************************************************************/
#define CRC_OK 0x80 //校验标志*************************/
#define Read_Byte 0x80 //读单字节*************************/
#define Read_Burst 0xC0 //连续读取*************************/
#define Write_Byte 0x00 //写单字节*************************/
#define Write_Burst 0x40 //连续写入*************************/
/*配置寄存器定义***************************************************************/
#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 // 前末端RX配置********************/
#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 // ********************************/
/*寄存器配器表 仿真软件给出****************************************************/
#define IOCFG2 0x07 // GDO2输出脚配置******************/
#define IOCFG0 0x06 // GDO0输出脚配置******************/
#define FIFOTHR 0x01 // RX FIFO和TX FIFO门限************/
#define PKTLEN 0x3c // 数据包长度**********************/
#define PKTCTRL1 0x04 // 数据包自动控制******************/
#define PKTCTRL0 0x05 // 数据包自动控制******************/
#define ADDR 0x00 // 设备地址************************/
#define CHANNR 0x00 // 频道数**************************/
#define FSCTRL1 0x08 // 频率合成器控制******************/
#define FSCTRL0 0x00 // 频率合成器控制******************/
#define FREQ2 0x10 // 频率控制词汇,高字节************/
#define FREQ1 0xa7 // 频率控制词汇,中间字节**********/
#define FREQ0 0x62 // 频率控制词汇,低字节************/
#define MDMCFG4 0xf5 // 调制器配置**********************/
#define MDMCFG3 0x83 // 调制器配置**********************/
#define MDMCFG2 0x0b // 调制器配置**********************/
#define MDMCFG1 0x22 // 调制器配置**********************/
#define MDMCFG0 0xF8 // 调制器配置**********************/
#define DEVIATN 0x15 // 调制器背离设置******************/
#define MCSM1 0x3F // 主通信控制状态机配置************/
#define MCSM0 0x18 // 主通信控制状态机配置************/
#define FOCCFG 0x16 // 频率偏移补偿配置****************/
#define BSCFG 0x6c // 位同步配置**********************/
#define AGCCTRL2 0x03 // AGC控制*************************/
#define AGCCTRL1 0x40 // AGC控制*************************/
#define AGCCTRL0 0x91 // AGC控制*************************/
#define FREND1 0x56 // 前末端RX配置********************/
#define FREND0 0x10 // 前末端TX配置********************/
#define FSCAL3 0xe9 // 频率合成器校准******************/
#define FSCAL2 0x0a // 频率合成器校准******************/
#define FSCAL1 0x00 // 频率合成器校准******************/
#define FSCAL0 0x1f // 频率合成器校准******************/
//#define FSTEST 0x59 // 频率合成器标度******************/
#define TEST2 0x81 // 不同的测试设置******************/
#define TEST1 0x35 // 不同的测试设置******************/
#define TEST0 0x09 // 不同的测试设置******************/
/******************************************************************************/
/*模块接口************************************************/
#define SLK 0 //时钟接口
#define CSN 2 //芯片选择
#define MOSI 3 //数据输出
#define MISO 4 //数据输入
#define GDO0 5 //状态指示
#define GDO2 1 //状态指示
#define SCLK_L PORTC &= ~(1<<SLK) //发出时钟
#define SCLK_H PORTC |= (1<<SLK) //结束时钟
#define CSN_L PORTC &= ~(1<<CSN) //使能选择
#define CSN_H PORTC |= (1<<CSN) //使能结束
#define MOSI_L PORTC &= ~(1<<MOSI) //低位数据
#define MOSI_H PORTC |= (1<<MOSI) //高位数据
#define MISO_L (!(MISO_H)) //输入低位
#define MISO_H (PINC &= (1<<MISO)) //输入高位
#define GDO0_L (!(GDO0_H)) //低位指示
#define GDO0_H (PINC &= (1<<GDO0)) //高位指示
#define GDO2_L (!(GDO2_H)) //低位指示
#define GDO2_H (PINC &= (1<<GDO2)) //高位指示
#define LED PORTB_Bit6
#define S_OUT PORTB_Bit0
/*发送数据************************************************/
unsigned char Tx_data[] =
{0x01 ,0xFE, 0xD6, 0x29, 0x0E, 0x0E, 0x77, 0x04};
/*接收数据************************************************/
unsigned char Rx_data[7]; //10
/*功率配置************************************************/
unsigned char PaTabel[] =
// {0xC0, 0xC8, 0x85, 0x51, 0x3A, 0x06, 0x1C, 0x6C};
{0xc0,0xcc,0x85,0x8e,0x3f,0x34,0x1c,0x04};
/*********************************************************/
/*函数名字:delay_ns */
/*输入参数:延时周期参数 */
/*输出参数:无 */
/*功能描述:延时1 纳秒 */
/*建造日期;2008年03月30日 */
/*********************************************************/
void delay_ns(unsigned char n) //纳秒延时
{
while (n--);
}
/*********************************************************/
/*函数名字:delay_ms */
/*输入参数:无 */
/*输出参数:无 */
/*功能描述:延时1 毫秒 */
/*建造日期;2008年03月30日 */
/*********************************************************/
void delay_ms(void) //毫秒延时
{
__delay_cycles(1000);
}
/*********************************************************/
/*函数名字:delay_nms */
/*输入参数:延时周期参数据 */
/*输出参数:无 */
/*功能描述:延时程序 */
/*建造日期;2008年03月30日 */
/*********************************************************/
void delay_nms(unsigned int n) //延时周期
{
unsigned int i;
for (i=0; i<n; i++)
{
delay_ms();
}
}
/*********************************************************/
/*函数名字:Spz_dealy */
/*输入参数:鸣响延时周期 */
/*输出参数:无 */
/*功能描述:蜂鸣器鸣叫 */
/*建造日期;2008年03月30日 */
/*********************************************************/
void Spz_delay(unsigned char n)
{
unsigned char i;
for (i=0; i<n; i++) //延时周期
{
delay_ms();
}
}
/*********************************************************/
/*函数名字:PORT_Init */
/*输入参数:无 */
/*输出参数:无 */
/*功能描述:单片机端口初始化 */
/*建造日期;2008年03月30日 */
/*********************************************************/
void PORT_Init(void)
{
DDRC =0x0D;//0B00 001101; //模块接脚
PORTC=0x3F;//0B00 111111; //
DDRB =0x41;//0B11111110; //按键输入
PORTB=0xBF;//0B11111001; //
DDRD =0xff;
PORTD=0xff;
}
void Init_Devices(void)
{
_CLI(); //disable all interrupts
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -