AD_SINGLE 0x80 //读
#define WRITE_SINGLE 0x00 //写
#define READ_BURST 0xC0
//连续读
#define BURST_READ_FIFO 0xff //突发读取RX FIFO
#define BYTE_READ_FIFO 0xBF //单字节读取 RX FIFO
#define BURST_WRITE_FIFO 0x7f //突发写TX FIFO
#define BYTE_WRITE_FIFO 0x3f //单字节写 TX FIFO
#define CC1101_DATA_LEN 64
//SPI接口
//底层接口宏定义
#define CC1101_CS_H() (GPIOA-》ODR|=BIT3) //PA3=1
#define CC1101_CS_L() (GPIOA-》ODR&=~BIT3) //PA3=0
#define CC1101_MOSI_H() (GPIOC-》ODR|=BIT6) //PC6
#define CC1101_MOSI_L() (GPIOC-》ODR&=~BIT6) //PC6
#define CC1101_SCLK_H() (GPIOC-》ODR|=BIT5) //PC5
#define CC1101_SCLK_L() (GPIOC-》ODR&=~BIT5) //PC5
#define CC1101_GetMISO() (GPIOC-》IDR&BIT7) //PC7
//CC1101 SPI读写一字节
//不带片选
u8 CC1101_ReadWriteByte(u8 data)
{
u8 i;
u8 temp = 0;
for(i = 0;i 《 8;i ++)
{
if(data & 0x80)
{
CC1101_MOSI_H();
}
else
{
CC1101_MOSI_L();
}
data 《《= 1;nop;
CC1101_SCLK_H(); //时钟上升沿写入数据
temp 《《= 1;nop;
if(CC1101_GetMISO()) temp ++;
CC1101_SCLK_L(); //时钟下降沿读取数据
}
return temp;
}
/*************************************************************************************************************************
* 函数 : u8 CC1101_Command(CC1101_CMD_TYPE Cmd)
* 功能 : 发送单字节命令
* 参数 : Cmd;命令,见CC1101_CMD_TYPE
* 返回 : 寄存器的值
* 依赖 : 底层宏定义
* 作者 : [email protected]
* 时间 : 2013-12-06
* 最后修改时间 : 2013-12-06
* 说明 : 以写的方式单直接访问将触发响应的命令
*************************************************************************************************************************/
u8 CC1101_Command(CC1101_CMD_TYPE Cmd)
{
u8 status;
CC1101_CS_L(); //片选有效
while(CC1101_GetMISO());
status = CC1101_ReadWriteByte((u8)Cmd); //发送命令
while(CC1101_GetMISO()); CC1101_CS_H(); //片选关闭 (责任编辑:admin) |