CC1101 433无线模块,STM8串口透传
时间:11-19
来源:互联网
点击:
- 1_RfDataSendPack(u8*pBuff,u16len);
- #endif//CC1101
MAIN.C收发透传
- #include"system.h"
- #include"uart1.h"
- #include"delay.h"
- #include"main.h"
- #include"LED.h"
- #include"cc1101.h"
- //串口缓冲区
- #defineUART_BUFF_SIZE256//串口接收缓冲区大小
- u8UartBuff[2][UART_BUFF_SIZE];//串口接收缓冲区
- u16UartLen1=0;//串口接收数据长度
- u16UartLen2=0;//串口接收数据长度
- //CC1101缓冲区
- #defineRF_BUFF_SIZE64//CC1101缓冲区大小
- u8RfBuff[RF_BUFF_SIZE];//CC1101缓冲区
- u8RfLen=0;//CC1101接收缓冲区大小
- //缓冲区选择
- u8UART_RxNum=0;//串口缓冲区选择
- //主函数
- voidmain(void)
- {
- u8LastNum=0;
- u32delay=0;
- SYS_ClockInit();//初始化系统时钟为内部晶振,16MHZ
- //初始化LED
- LED_Init();
- //初始化串口
- UART1_Init(115200,ENABLE);//初始化UART1,开启接收中断
- UART1_SetRxBuff(UartBuff[UART_RxNum],UART_BUFF_SIZE);//设置串口1接收缓冲区
- CC1101_Init(0Xaa);
- //CC1101_WriteReg(CC1101_REG_PATABLE1,0xc0);
- CC1101_WriteReg(CC1101_REG_PATABLE0,0x00);
- CC1101_Command(CC1101_CMD_SIDLE);//退出当前模式
- CC1101_Command(CC1101_CMD_SRX);//进入接收模式
- SYS_EnableInterrupt();//开启系统中断
- while(1)
- {
- if(++delay==120)
- {
- delay=0;
- UartLen1=UART1_GetRxCnt();//获取接收数据数量
- if(UartLen1>0)
- {
- SYS_DisableInterrupt();//关闭中断
- LED_ON();
- LastNum=UART_RxNum;//记录上一次的缓冲区编号
- UART_RxNum=(~UART_RxNum)&0x01;
- UART1_SetRxBuff(UartBuff[UART_RxNum],UART_BUFF_SIZE);//切换串口接收缓冲区
- //UART1_ClearRxCnt();//清除接收计数器
- SYS_EnableInterrupt();//开启系统中断
- CC1101_WriteReg(CC1101_REG_PATABLE0,0xc0);//开启天线增益
- CC1101_RfDataSendPack(UartBuff[LastNum],UartLen1);//CC1101发送数据包
- CC1101_WriteReg(CC1101_REG_PATABLE0,0);//关闭天线增益
- CC1101_Command(CC1101_CMD_SIDLE);//退出当前模式
- CC1101_Command(CC1101_CMD_SRX);//进入接收模式
- LED_OFF();
- }
- }
- //CC1101接收到数据
- if(CC1101_GDO2)
- {
- LED_ON();
- RfLen=CC1101_ReadReg(CC1101_REG_RXBYTES);
- CC1101_ReadRxFIFO(RfBuff,RfLen);
- UART1_SendData(&RfBuff[1],RfBuff[0]);//第0B为数据长度,后面的为有效数据
- CC1101_Command(CC1101_CMD_SIDLE);//退出当前模式
- CC1101_Command(CC1101_CMD_SFRX);//清除接收缓冲区
- CC1101_Command(CC1101_CMD_SRX);//进入接收模式
- LED_OFF();
- }
- }
- }
实现透传,调试中发现问题就是接收的时候必须关闭发射增益,否则无法接收,应该是内部发送接收天线进行了切换.
实物图
CC1101433无线模块STM8串口透 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)