微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > CC1101 433无线模块,STM8串口透传

CC1101 433无线模块,STM8串口透传

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

  1. 1_RfDataSendPack(u8*pBuff,u16len);
  2. #endif//CC1101

MAIN.C收发透传

  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==120)
  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发送数据包
  52. CC1101_WriteReg(CC1101_REG_PATABLE0,0);//关闭天线增益
  53. CC1101_Command(CC1101_CMD_SIDLE);//退出当前模式
  54. CC1101_Command(CC1101_CMD_SRX);//进入接收模式
  55. LED_OFF();
  56. }
  57. }
  58. //CC1101接收到数据
  59. if(CC1101_GDO2)
  60. {
  61. LED_ON();
  62. RfLen=CC1101_ReadReg(CC1101_REG_RXBYTES);
  63. CC1101_ReadRxFIFO(RfBuff,RfLen);
  64. UART1_SendData(&RfBuff[1],RfBuff[0]);//第0B为数据长度,后面的为有效数据
  65. CC1101_Command(CC1101_CMD_SIDLE);//退出当前模式
  66. CC1101_Command(CC1101_CMD_SFRX);//清除接收缓冲区
  67. CC1101_Command(CC1101_CMD_SRX);//进入接收模式
  68. LED_OFF();
  69. }
  70. }
  71. }


实现透传,调试中发现问题就是接收的时候必须关闭发射增益,否则无法接收,应该是内部发送接收天线进行了切换.

实物图

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

网站地图

Top