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

433MHz模块stm8、cc1101

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

  1. ,//位同步配置
  2. CC1101_REG_AGCTRL2=0x1b,//AGC控制
  3. CC1101_REG_AGCTRL1=0x1c,//AGC控制
  4. CC1101_REG_AGCTRL0=0x1d,//AGC控制
  5. CC1101_REG_WOREVT1=0x1e,//高字节时间0暂停
  6. CC1101_REG_WOREVT0=0x1f,//低字节时间0暂停
  7. CC1101_REG_WORCTRL=0x20,//电磁波激活控制
  8. CC1101_REG_FREND1=0x21,//前末端RX配置
  9. CC1101_REG_FREND0=0x22,//前末端TX配置
  10. CC1101_REG_FSCAL3=0x23,//频率合成器校准
  11. CC1101_REG_FSCAL2=0x24,//频率合成器校准
  12. CC1101_REG_FSCAL1=0x25,//频率合成器校准
  13. CC1101_REG_FSCAL0=0x26,//频率合成器校准
  14. CC1101_REG_RCCTRL1=0x27,//RC振荡器配置
  15. CC1101_REG_RCCTRL0=0x28,//RC振荡器配置
  16. CC1101_REG_FSTEST=0x29,//频率合成器校准控制
  17. CC1101_REG_PTEST=0x2a,//产品测试
  18. CC1101_REG_AGCTEST=0x2b,//AGC测试
  19. CC1101_REG_TEST2=0x2c,//不同的测试设置
  20. CC1101_REG_TEST1=0x2d,//不同的测试设置
  21. CC1101_REG_TEST0=0x2e,//不同的测试设置
  22. //只读的状态寄存器,如果写入将导致命令滤波
  23. CC1101_REG_PARTNUM=0xf0,//CC2550的组成部分数目
  24. CC1101_REG_VERSION=0xf1,//当前版本数
  25. CC1101_REG_FREQEST=0xf2,//频率偏移估计
  26. CC1101_REG_LQI=0xf3,//连接质量的解调器估计
  27. CC1101_REG_RSSI=0xf4,//接收信号强度指示
  28. CC1101_REG_MARCSTATE=0xf5,//控制状态机状态
  29. CC1101_REG_WORTIME1=0xf6,//WOR计时器高字节
  30. CC1101_REG_WORTIME0=0xf7,//WOR计时器低字节
  31. CC1101_REG_PKTSTATUS=0xf8,//当前GDOx状态和数据包状态
  32. CC1101_REG_VCOVCDAC=0xf9,//PLL校准模块的当前设定
  33. CC1101_REG_TXBYTES=0xfA,//TXFIFO中的下溢和比特数
  34. CC1101_REG_RXBYTES=0xfB,//RXFIFO中的下溢和比特数
  35. //手册上面没有的
  36. CC1101_REG_STATUS1=0xfc,//
  37. CC1101_REG_STATUS0=0xfd,//
  38. //功率控制
  39. CC1101_REG_PATABLE0=0x40,
  40. CC1101_REG_PATABLE1=0x41,
  41. CC1101_REG_PATABLE2=0x42,
  42. CC1101_REG_PATABLE3=0x43,
  43. CC1101_REG_PATABLE4=0x44,
  44. CC1101_REG_PATABLE5=0x45,
  45. CC1101_REG_PATABLE6=0x46,
  46. CC1101_REG_PATABLE7=0x47,
  47. }CC1101_REG_TYPE;
  48. //IO
  49. #defineCC1101_GDO0(GPIOC->IDR&BIT3)//PC3
  50. #defineCC1101_GDO2(GPIOC->IDR&BIT4)//PC4
  51. voidCC1101_Init(u8Addr);//初始化CC1101
  52. u8CC1101_ReadReg(CC1101_REG_TYPERegAddr);//读取CC1101通用寄存器
  53. u8CC1101_WriteReg(CC1101_REG_TYPERegAddr,u8data);//写入CC1101通用寄存器
  54. u8CC1101_Command(CC1101_CMD_TYPECmd);//发送单字节命令
  55. u8CC1101_GetStatus(void);//读取芯片状态
  56. voidCC1101_RfDataSend(u8*pBuff,u8len);
  57. voidCC1101_ReadRxFIFO(u8*pBuff,u8len);
  58. //CC1101PackSize有效数据包大小,0-64,也就是CC1101单次发送数据大小-1
  59. voidCC1101_RfDataSendPack(u8*pBuff,u16len);
  60. #endif//CC1101



MAIN.C收发透传

[cpp]view plaincopy

  1. #include"system.h"
  2. #include"uart1.h"
  3. #include"delay.h"
  4. #include"main.h"
  5. #include"LED.h"
  6. #include"cc1101.h"
  7. //串口缓冲区
  8. #defineUART_BUFF_SIZE256//串口接收缓冲区大小
  9. u8UartBuff[2][UART_BUFF_SIZE];//串口接收缓冲区
  10. u16UartLen1=0;//串口接收数据长度
  11. u16UartLen2=0;//串口接收数据长度
  12. //CC1101缓冲区
  13. #defineRF_BUFF_SIZE64//CC1101缓冲区大小
  14. u8RfBuff[RF_BUFF_SIZE];//CC1101缓冲区
  15. u8RfLen=0;//CC1101接收缓冲区大小
  16. //缓冲区选择
  17. u8UART_RxNum=0;//串口缓冲区选择
  18. //主函数
  19. voidmain(void)
  20. {
  21. u8LastNum=0;
  22. u32delay=0;
  23. SYS_ClockInit();//初始化系统时钟为内部晶振,16MHZ
  24. //初始化LED
  25. LED_Init();
  26. //初始化串口
  27. UART1_Init(115200,ENABLE);//初始化UART1,开启接收中断
  28. UART1_SetRxBuff(UartBuff[UART_RxNum],UART_BUFF_SIZE);//设置串口1接收缓冲区
  29. CC1101_Init(0Xaa);
  30. //CC1101_WriteReg(CC1101_REG_PATABLE1,0xc0);
  31. CC1101_WriteReg(CC1101_REG_PATABLE0,0x00);
  32. CC1101_Command(CC1101_CMD_SIDLE);//退出当前模式
  33. CC1101_Command(CC1101_CMD_SRX);//进入接收模式
  34. SYS_EnableInterrupt();//开启系统中断
  35. while(1)
  36. {
  37. if(++delay==120000)
  38. {
  39. delay=0;
  40. UartLen1=UART1_GetRxCnt();//获取接收数据数量
  41. if(UartLen1>0)
  42. {
  43. SYS_DisableInterrupt();//关闭中断
  44. LED_ON();
  45. LastNum=UART_RxNum;//记录上一次的缓冲区编号
  46. UART_RxNum=(~UART_RxNum)&0x01;
  47. UART1_SetRxBuff(UartBuff[UART_RxNum],UART_BUFF_SIZE);//切换串口接收缓冲区
  48. //UART1_ClearRxCnt();//清除接收计数器
  49. SYS_EnableInterrupt();//开启系统中断
  50. CC1101_WriteReg(CC1101_REG_PATABLE0,0xc0);//开启天线增益
  51. CC1101_RfDataSendPack(UartBuff[LastNum],UartLen1);//CC1101发送数据包

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

网站地图

Top