电工基础知识_电工技术-电工最常见电路移动版

电工基础主页 > 电工电子

cc1101低功耗设计方案 CC1101收发驱动程序(5)

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)

相关文章