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

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

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

  1. 间:2014-01-01
  2. *最后修改时间:2014-01-01
  3. *说明:写入数据到发送FIFO
  4. *************************************************************************************************************************/
  5. voidCC1101_WriteTxFIFO(u8*pBuff,u8len)
  6. {
  7. u16i;
  8. CC1101_CS_L();
  9. CC1101_ReadWriteByte(BURST_WRITE_FIFO);
  10. for(i=0;i
  11. {
  12. CC1101_ReadWriteByte(pBuff[i]);
  13. }
  14. CC1101_CS_H();
  15. }
  16. /*************************************************************************************************************************
  17. *函数:voidCC1101_ReadRxFIFO(u8*pBuff,u8len)
  18. *功能:读取接收缓冲区
  19. *参数:pBuff:需要读取的数据缓冲区指针,len:需要读取的数据长度
  20. *返回:无
  21. *依赖:底层宏定义
  22. *作者:cp1300@139.com
  23. *时间:2014-01-01
  24. *最后修改时间:2014-01-01
  25. *说明:从接收FIFO读取数据
  26. *************************************************************************************************************************/
  27. voidCC1101_ReadRxFIFO(u8*pBuff,u8len)
  28. {
  29. u16i;
  30. CC1101_CS_L();
  31. CC1101_ReadWriteByte(BURST_READ_FIFO);
  32. for(i=0;i
  33. {
  34. pBuff[i]=CC1101_ReadWriteByte(0xff);
  35. }
  36. CC1101_CS_H();
  37. }
  38. //发送数据,将缓冲区数据全部发送出去
  39. //一次最多64B,因为受到FIFO限制
  40. voidCC1101_RfDataSend(u8*pBuff,u8len)
  41. {
  42. CC1101_Command(CC1101_CMD_SIDLE);//退出当前模式
  43. CC1101_Command(CC1101_CMD_SFTX);//清空发送缓冲区
  44. CC1101_WriteTxFIFO(pBuff,len);//写入数据到发送缓冲区
  45. CC1101_Command(CC1101_CMD_STX);//开始发送数据
  46. while(!CC1101_GDO0);
  47. while(CC1101_GDO0);
  48. CC1101_Command(CC1101_CMD_SIDLE);//退出当前模式
  49. }
  50. //发送数据包
  51. //每次发送最多65B,第一字节为长度,数据多将会重复发送
  52. //可以发送任意大小
  53. //CC1101PackSize有效数据包大小,0-64,也就是CC1101单次发送数据大小-1
  54. voidCC1101_RfDataSendPack(u8*pBuff,u16len)
  55. {
  56. u16i,m,n,j;
  57. m=len/(CC1101_DATA_LEN-1);//整数数据帧数量
  58. n=len%(CC1101_DATA_LEN-1);//余数
  59. //发送整数包
  60. for(i=0;i
  61. {
  62. Delay_MS(1);
  63. CC1101_Command(CC1101_CMD_SIDLE);//退出当前模式
  64. CC1101_Command(CC1101_CMD_SFTX);//清空发送缓冲区
  65. CC1101_CS_L();
  66. CC1101_ReadWriteByte(BURST_WRITE_FIFO);
  67. CC1101_ReadWriteByte(CC1101_DATA_LEN-1);//先写入包大小
  68. for(j=0;j<(CC1101_DATA_LEN-1);j++)
  69. {
  70. CC1101_ReadWriteByte(*pBuff++);//写入数据到发送缓冲区
  71. }
  72. CC1101_CS_H();
  73. CC1101_Command(CC1101_CMD_STX);//开始发送数据
  74. while(!CC1101_GDO0);
  75. while(CC1101_GDO0);//等待发送完成
  76. }
  77. //发送余数包
  78. if(n!=0)
  79. {
  80. Delay_MS(1);
  81. CC1101_Command(CC1101_CMD_SIDLE);//退出当前模式
  82. CC1101_Command(CC1101_CMD_SFTX);//清空发送缓冲区
  83. CC1101_CS_L();
  84. CC1101_ReadWriteByte(BURST_WRITE_FIFO);
  85. CC1101_ReadWriteByte(n);//先写入包大小
  86. for(j=0;j
  87. {
  88. CC1101_ReadWriteByte(*pBuff++);//写入数据到发送缓冲区
  89. }
  90. CC1101_CS_H();
  91. CC1101_Command(CC1101_CMD_STX);//开始发送数据
  92. while(!CC1101_GDO0);
  93. while(CC1101_GDO0);//等待发送完成
  94. }
  95. CC1101_Command(CC1101_CMD_SIDLE);//退出当前模式
  96. }
  97. //读取芯片状态
  98. u8CC1101_GetStatus(void)
  99. {
  100. returnCC1101_WriteReg(CC1101_REG_TEST2,0x98);
  101. }


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=0x3

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

网站地图

Top