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

电工基础主页 > 电工电子

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


  CC1101_CS_L();

  CC1101_ReadWriteByte(BURST_WRITE_FIFO);

  for(i = 0;i 《 len;i ++)

  {

  CC1101_ReadWriteByte(pBuff);

  }

  CC1101_CS_H();

  }

  /*************************************************************************************************************************

  * 函数 : void CC1101_ReadRxFIFO(u8 *pBuff,u8 len)

  * 功能 : 读取接收缓冲区

  * 参数 : pBuff:需要读取的数据缓冲区指针,len:需要读取的数据长度

  * 返回 : 无

  * 依赖 : 底层宏定义

  * 作者 : [email protected]

  * 时间 : 2014-01-01

  * 最后修改时间 : 2014-01-01

  * 说明 : 从接收FIFO读取数据

  *************************************************************************************************************************/

  void CC1101_ReadRxFIFO(u8 *pBuff,u8 len)

  {

  u16 i;

  CC1101_CS_L();

  CC1101_ReadWriteByte(BURST_READ_FIFO);

  for(i = 0;i 《 len;i ++)

  {

  pBuff = CC1101_ReadWriteByte(0xff);

  }

  CC1101_CS_H();

  }

  //发送数据,将缓冲区数据全部发送出去

  //一次最多64B,因为受到FIFO限制

  void CC1101_RfDataSend(u8 *pBuff,u8 len)

  {

  CC1101_Command(CC1101_CMD_SIDLE); //退出当前模式

  CC1101_Command(CC1101_CMD_SFTX); //清空发送缓冲区

  CC1101_WriteTxFIFO(pBuff, len); //写入数据到发送缓冲区

  CC1101_Command(CC1101_CMD_STX); //开始发送数据

  while(!CC1101_GDO0);

  while(CC1101_GDO0);

  CC1101_Command(CC1101_CMD_SIDLE); //退出当前模式

  }

  //发送数据包

  //每次发送最多65B,第一字节为长度,数据多将会重复发送

  //可以发送任意大小

  //CC1101PackSize有效数据包大小,0-64,也就是CC1101单次发送数据大小-1

  void CC1101_RfDataSendPack(u8 *pBuff, u16 len)

  {

  u16 i,m,n,j;

  m = len / (CC1101_DATA_LEN-1); //整数数据帧数量

  n = len % (CC1101_DATA_LEN-1); //余数

  //发送整数包

  for(i = 0;i 《 m;i ++)

  {

  Delay_MS(1);

  CC1101_Command(CC1101_CMD_SIDLE); //退出当前模式

  CC1101_Command(CC1101_CMD_SFTX); //清空发送缓冲区

  CC1101_CS_L();

  CC1101_ReadWriteByte(BURST_WRITE_FIFO); (责任编辑:admin)

相关文章