微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 433MHz模块stm8、cc1101

433MHz模块stm8、cc1101

时间:11-19 来源:互联网 点击:

  1. while(!CC1101_GDO0);
  2. while(CC1101_GDO0);
  3. CC1101_Command(CC1101_CMD_SIDLE);//退出当前模式
  4. }
  5. //发送数据包
  6. //每次发送最多65B,第一字节为长度,数据多将会重复发送
  7. //可以发送任意大小
  8. //CC1101PackSize有效数据包大小,0-64,也就是CC1101单次发送数据大小-1
  9. voidCC1101_RfDataSendPack(u8*pBuff,u16len)
  10. {
  11. u16i,m,n,j;
  12. m=len/(CC1101_DATA_LEN-1);//整数数据帧数量
  13. n=len%(CC1101_DATA_LEN-1);//余数
  14. //发送整数包
  15. for(i=0;i
  16. {
  17. Delay_MS(1);
  18. CC1101_Command(CC1101_CMD_SIDLE);//退出当前模式
  19. CC1101_Command(CC1101_CMD_SFTX);//清空发送缓冲区
  20. CC1101_CS_L();
  21. CC1101_ReadWriteByte(BURST_WRITE_FIFO);
  22. CC1101_ReadWriteByte(CC1101_DATA_LEN-1);//先写入包大小
  23. for(j=0;j<(CC1101_DATA_LEN-1);j++)
  24. {
  25. CC1101_ReadWriteByte(*pBuff++);//写入数据到发送缓冲区
  26. }
  27. CC1101_CS_H();
  28. CC1101_Command(CC1101_CMD_STX);//开始发送数据
  29. while(!CC1101_GDO0);
  30. while(CC1101_GDO0);//等待发送完成
  31. }
  32. //发送余数包
  33. if(n!=0)
  34. {
  35. Delay_MS(1);
  36. CC1101_Command(CC1101_CMD_SIDLE);//退出当前模式
  37. CC1101_Command(CC1101_CMD_SFTX);//清空发送缓冲区
  38. CC1101_CS_L();
  39. CC1101_ReadWriteByte(BURST_WRITE_FIFO);
  40. CC1101_ReadWriteByte(n);//先写入包大小
  41. for(j=0;j
  42. {
  43. CC1101_ReadWriteByte(*pBuff++);//写入数据到发送缓冲区
  44. }
  45. CC1101_CS_H();
  46. CC1101_Command(CC1101_CMD_STX);//开始发送数据
  47. while(!CC1101_GDO0);
  48. while(CC1101_GDO0);//等待发送完成
  49. }
  50. CC1101_Command(CC1101_CMD_SIDLE);//退出当前模式
  51. }
  52. //读取芯片状态
  53. u8CC1101_GetStatus(void)
  54. {
  55. returnCC1101_WriteReg(CC1101_REG_TEST2,0x98);
  56. }

CC1101.H

  1. /*
  2. *文件名:CC1101.c
  3. *功能:STM8CC1101驱动函数
  4. *作者:cp1300@139.com
  5. *创建时间:2013-12-0614:35
  6. *最后修改时间:2013-12-06
  7. *详细:433MHZ收发芯片驱动
  8. */
  9. #ifndef_CC1101_H_
  10. #define_CC1101_H_
  11. #include"system.h"
  12. //CC1101命令
  13. //以写的方式单直接访问将触发响应的命令
  14. typedefenum
  15. {
  16. CC1101_CMD_SRES=0x30,//重启
  17. CC1101_CMD_SFSTXON=0x31,//开启和校准频率合成器(若MCSM0.FSAUTOCAL=1)
  18. CC1101_CMD_SXOFF=0x32,//关闭晶体振荡器
  19. CC1101_CMD_SCAL=0x33,//校准频率合成器并关断(开启快速启动)。在不设置手动校准模式(MCSM0.FS_AUTOCAL=0)的情况下,SCAL能从空闲模式滤波。
  20. CC1101_CMD_SRX=0x34,//启用RX。若上一状态为空闲且MCSM0.FS_AUTOCAL=1则首先运行校准。
  21. CC1101_CMD_STX=0x35,//空闲状态:启用TX。若MCSM0.FS_AUTOCAL=1首先运行校准。若在RX状态且CCA启用:若信道为空则进入TX
  22. CC1101_CMD_SIDLE=0x36,//离开RX/TX,关断频率合成器并离开电磁波激活模式若可用
  23. CC1101_CMD_SAFC=0x37,//运行22.1节列出的频率合成器的AFC调节
  24. CC1101_CMD_SWOR=0x38,//运行27.5节描述的自动RX选举序列(电磁波激活)
  25. CC1101_CMD_SPWD=0x39,//当CSn为高时进入功率降低模式。
  26. CC1101_CMD_SFRX=0x3a,//冲洗RXFIFO缓冲
  27. CC1101_CMD_SFTX=0x3b,//冲洗TXFIFO缓冲
  28. CC1101_CMD_SWORRST=0x3c,//重新设置真实时间时钟
  29. CC1101_CMD_SNOP=0x3d,//无操作。可能用来为更简单的软件将滤波命令变为2字节。
  30. }CC1101_CMD_TYPE;
  31. //CC1101寄存器定义
  32. typedefenum
  33. {
  34. //可读写的寄存器
  35. CC1101_REG_IOCFG2=0x00,//GDO2输出脚配置
  36. CC1101_REG_IOCFG1=0x01,//GDO1输出脚配置
  37. CC1101_REG_IOCFG0=0x02,//GDO0输出脚配置
  38. CC1101_REG_FIFOTHR=0x03,//RXFIFO和TXFIFO门限
  39. CC1101_REG_SYNC1=0x04,//同步词汇,高字节
  40. CC1101_REG_SYNC0=0x05,//同步词汇,低字节
  41. CC1101_REG_PKTLEN=0x06,//数据包长度
  42. CC1101_REG_PKTCTRL1=0x07,//数据包自动控制
  43. CC1101_REG_PKTCTRL0=0x08,//数据包自动控制
  44. CC1101_REG_ADDR=0x09,//设备地址
  45. CC1101_REG_CHANNR=0x0a,//信道数
  46. CC1101_REG_FSCTRL1=0x0b,//频率合成器控制,高字节
  47. CC1101_REG_FSCTRL0=0x0c,//频率合成器控制,低字节
  48. CC1101_REG_FREQ2=0x0d,//频率控制词汇,高字节
  49. CC1101_REG_FREQ1=0x0e,//频率控制词汇,中间字节
  50. CC1101_REG_FREQ0=0x0f,//频率控制词汇,低字节
  51. CC1101_REG_MDMCFG4=0x10,//调制器配置
  52. CC1101_REG_MDMCFG3=0x11,//调制器配置
  53. CC1101_REG_MDMCFG2=0x12,//调制器配置
  54. CC1101_REG_MDMCFG1=0x13,//调制器配置
  55. CC1101_REG_MDMCFG0=0x14,//调制器配置
  56. CC1101_REG_DEVIATN=0x15,//调制器背离设置
  57. CC1101_REG_MCSM2=0x16,//主通信控制状态机配置
  58. CC1101_REG_MCSM1=0x17,//主通信控制状态机配置
  59. CC1101_REG_MCSM0=0x18,//主通信控制状态机配置
  60. CC1101_REG_FOCCFG=0x19,//频率偏移补偿配置
  61. CC1101_REG_BSCFG=0x1a

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top