搜索
bottom↓
回复: 1

【求助】CC1101问题

[复制链接]

出0入0汤圆

发表于 2011-6-3 22:41:46 | 显示全部楼层 |阅读模式
买了两块CC1101模块做无线通信,51单片机控制,发现问题,接收端收到一帧空的数据,然后收到一帧正确的数据,如此重复,看图


串口监视数据 (原文件名:数据.jpg)


发送端每秒发送一帧数据,0xf0,0xf1,0xf2和0x0a是我加的测试信息,

大虾们帮忙分析分析

代码在下面:

send_byte()和send_string()是通过串口发送数据函数

主循环部分:

while(1) {  

     if(set_flag)

   {

set_flag = 0;

send_string("send test data\n",sizeof("send test data\n"));

halRFSendPacket(test_data,sizeof(test_data)-1);

halSpiStrobe(CCxxx0_SRX);         //进入接收状态

  }

if(int1_flag)

{

int1_flag = 0;         //清标志位

i = MAXSIZE_BUF;

if(halRfReceivePacket(tx_buf,&i))

{

send_string(tx_buf,i);

send_byte('\n');

}

send_byte('\n');

}

}

用中断判断是否收到数据,GDO0配置为0x06,接单片机的外部中断1,下降沿触发:

void exint1(void) interrupt 2 using 1

{

int1_flag = 1;

TXLED = ~TXLED;

}

发送和接受子函数:

void halRfSendPacket(uchar *txBuffer, uchar size)

{

halSpiWriteReg(CCxxx0_TXFIFO, size);

halSpiWriteBurstReg(CCxxx0_TXFIFO, txBuffer, size);        //写入要发送的数据

halSpiStrobe(CCxxx0_STX);         //进入发送模式发送数据  

while(~int1_flag);

halSpiStrobe(CCxxx0_SFTX);

int1_flag = 0;         //清标志位

}

uchar halRfReceivePacket(uchar *rxBuffer, uchar *length)

  {

uchar status[2];

uchar packetLength;  



halSpiStrobe(CCxxx0_SRX);//进入接收状态  



send_byte(0xf0);



if ((halSpiReadStatus(CCxxx0_RXBYTES) & BYTES_IN_RXFIFO)) //如果接的字节数不为0

{

send_byte(0xf1);

packetLength = halSpiReadReg(CCxxx0_RXFIFO);        //读出第一个字节,此字节为该帧数据长度

if (packetLength <= *length) //如果所要的有效数据长度小于等于接收到的数据包的长度

{

send_byte(0xf2);

halSpiReadBurstReg(CCxxx0_RXFIFO, rxBuffer, packetLength); //读出所有接收到的数据

*length = packetLength;         //把接收数据长度的修改为当前数据的长度

// Read the 2 appended status bytes (status[0] = RSSI, status[1] = LQI)

halSpiReadBurstReg(CCxxx0_RXFIFO, status, 2); //读出CRC校验位

halSpiStrobe(CCxxx0_SFRX);         //清洗接收缓冲区

return (status[1] & CRC_OK);         //如果校验成功返回接收成功

}

else

{

send_byte(0xf3);

*length = packetLength;

halSpiStrobe(CCxxx0_SFRX);         //清洗接收缓冲区

return 0;

}

}

else

return 0;

}

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入36汤圆

发表于 2015-11-17 23:41:15 | 显示全部楼层
我也是一个帧正确,一个帧错误,交叉进行的,我怀疑是上一次正确接收后没有设置为接收状态。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-25 19:53

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表