搜索
bottom↓
回复: 14

cc1101物理地址可以大于255吗?

[复制链接]

出0入0汤圆

发表于 2011-5-31 17:24:49 | 显示全部楼层 |阅读模式
cc1101硬件物理地址只有1字节,0~255,我们应用经常几万个地址,现在除了软件地址之外,没有办法扩充硬件物理地址吗?

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

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2011-6-1 13:32:02 | 显示全部楼层
ddd!最近把si4432和cc1101都调通了!想深入了解一下应用!

出0入0汤圆

发表于 2011-6-1 13:47:00 | 显示全部楼层
在哪个平台上调的? 我在 STM32 上调,还有点问题没解决,可交流吗?

出0入0汤圆

发表于 2011-6-1 16:52:53 | 显示全部楼层
在相同的频率、波特率、前导长度、同步字的情况下,对侧能收到数据,但CC1101与Si4432的检查CRC等的位置是不同的,这里需要修改或者是数据包内加识别代码

出0入0汤圆

发表于 2011-6-5 18:50:02 | 显示全部楼层
楼主如何设置地址过滤的啊?
发送这样定义
0x05,   // PKTCTRL1  Packet automation control.
    0x05,   // PKTCTRL0  Packet automation control.
    0x01,   // ADDR      Device address.
    0x20 //DataSize    // PKTLEN    Packet length.

发送数据如下:
INT8U TxBuf[10]={0x08,0x0A,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07};         
INT8U TxBuf1[10]={0x0A,0x0A,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07};         
INT8U TxBuf2[10]={0x0A,0x08,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06};       
INT8U TxBuf3[10]={0x08,0x0A,0x07,0x06,0x05,0x04,0x03,0x02,0x01,0x00};
while(1)
        {
          leng=10;
          halRfSendPacket(TxBuf,leng);        // Transmit Tx buffer data           
          halRfSendPacket(TxBuf1,leng);        // Transmit Tx buffer data           
          halRfSendPacket(TxBuf2,leng);        // Transmit Tx buffer data           
          halRfSendPacket(TxBuf3,leng);        // Transmit Tx buffer data           
        }

接收定义如下:
0x05,   // PKTCTRL1  Packet automation control.
    0x05,   // PKTCTRL0  Packet automation control.
    0x08,   // ADDR      Device address.
    0x40 //DataSize    // PKTLEN    Packet length.

接收函数如下:
INT8U halRfReceivePacket(INT8U *rxBuffer, INT8U *length)
{
    INT8U status[2];
    INT8U packetLength;
        //INT8U i=(*length)*4;  // 具体多少要根据datarate和length来决定
       
    halSpiStrobe(CCxxx0_SRX);                //进入接收状态
        delay(2);
    while (!GDO0);
    while (GDO0);         
    if ((halSpiReadStatus(CCxxx0_RXBYTES) & BYTES_IN_RXFIFO)) //如果接的字节数不为0
        {
        packetLength = halSpiReadReg(CCxxx0_RXFIFO);//读出第一个字节,此字节为该帧数据长度
                //packetLength = halSpiReadReg(CCxxx0_RXFIFO);//读出第一个字节,此字节为该帧数据长度
               
        if (packetLength <= *length )                 //如果所要的有效数据长度小于等于接收到的数据包的长度
                {
            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
                {
            *length = packetLength;
            halSpiStrobe(CCxxx0_SFRX);                //清洗接收缓冲区
            return 0;
        }
    }
        else
        return 0;
}

现在情况是第一次能正确接收
INT8U TxBuf[10]={0x08,0x0A,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07};
INT8U TxBuf3[10]={0x08,0x0A,0x07,0x06,0x05,0x04,0x03,0x02,0x01,0x00};
第二次开始就不能接收
INT8U TxBuf3[10]={0x08,0x0A,0x07,0x06,0x05,0x04,0x03,0x02,0x01,0x00};了。奇怪。是不是发送速率太快的原因。
另外怎么目标物理地址是第一个字节呢?

出0入0汤圆

发表于 2011-6-6 22:10:16 | 显示全部楼层
mark 同样遇到地址滤波的问题。。。希望楼主指点一二

出0入0汤圆

发表于 2011-6-7 10:05:19 | 显示全部楼层
不定长确实是先长度,后地址。 我的程序先写长度,后写数据。所以收到)0x08开始的数据是正确的。
但是为什么如果中间有其他地址的干扰数据,最后面的那个数据就无法正确接收就不知道了。

出0入0汤圆

发表于 2011-6-7 10:38:58 | 显示全部楼层
地址滤波 需要在接收端程序判断地址数据吗?我判断了但是无法接收。我用串口显示来判断的。QQ指教下:664974392

出0入0汤圆

发表于 2011-6-7 11:43:10 | 显示全部楼层
不需要。硬件自动处理了。

出0入0汤圆

发表于 2011-6-7 12:40:18 | 显示全部楼层
回复【9楼】gavin_li
-----------------------------------------------------------------------

加个好友可以吗?QQ664974392

出0入0汤圆

发表于 2011-6-7 13:02:21 | 显示全部楼层
回复【9楼】gavin_li
-----------------------------------------------------------------------

地址滤波+WOR模式正在努力调试中。希望共同进步 gavin_li

出0入0汤圆

发表于 2011-6-7 13:24:01 | 显示全部楼层
你的Q加不了。要验证。加我的吧22124010.验证发送CC1101即可。

出0入0汤圆

发表于 2011-6-7 14:07:22 | 显示全部楼层
回复【12楼】gavin_li
-----------------------------------------------------------------------

出0入0汤圆

发表于 2011-8-1 11:19:29 | 显示全部楼层
地址超过255只能在软件层面进行区分了
还是推荐软件层面操作好,可扩展性好
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-7-23 07:17

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

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