cc1101物理地址可以大于255吗?
cc1101硬件物理地址只有1字节,0~255,我们应用经常几万个地址,现在除了软件地址之外,没有办法扩充硬件物理地址吗? ddd!最近把si4432和cc1101都调通了!想深入了解一下应用! 在哪个平台上调的? 我在 STM32 上调,还有点问题没解决,可交流吗? 在相同的频率、波特率、前导长度、同步字的情况下,对侧能收到数据,但CC1101与Si4432的检查CRC等的位置是不同的,这里需要修改或者是数据包内加识别代码 楼主如何设置地址过滤的啊?发送这样定义
0x05, // PKTCTRL1Packet automation control.
0x05, // PKTCTRL0Packet automation control.
0x01, // ADDR Device address.
0x20 //DataSize // PKTLEN Packet length.
发送数据如下:
INT8U TxBuf={0x08,0x0A,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07};
INT8U TxBuf1={0x0A,0x0A,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07};
INT8U TxBuf2={0x0A,0x08,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06};
INT8U TxBuf3={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, // PKTCTRL1Packet automation control.
0x05, // PKTCTRL0Packet automation control.
0x08, // ADDR Device address.
0x40 //DataSize // PKTLEN Packet length.
接收函数如下:
INT8U halRfReceivePacket(INT8U *rxBuffer, INT8U *length)
{
INT8U status;
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 = RSSI, status = LQI)
halSpiReadBurstReg(CCxxx0_RXFIFO, status, 2); //读出CRC校验位
halSpiStrobe(CCxxx0_SFRX); //清洗接收缓冲区
return (status & CRC_OK); //如果校验成功返回接收成功
}
else
{
*length = packetLength;
halSpiStrobe(CCxxx0_SFRX); //清洗接收缓冲区
return 0;
}
}
else
return 0;
}
现在情况是第一次能正确接收
INT8U TxBuf={0x08,0x0A,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07};
INT8U TxBuf3={0x08,0x0A,0x07,0x06,0x05,0x04,0x03,0x02,0x01,0x00};
第二次开始就不能接收
INT8U TxBuf3={0x08,0x0A,0x07,0x06,0x05,0x04,0x03,0x02,0x01,0x00};了。奇怪。是不是发送速率太快的原因。
另外怎么目标物理地址是第一个字节呢? mark 同样遇到地址滤波的问题。。。希望楼主指点一二 不定长确实是先长度,后地址。 我的程序先写长度,后写数据。所以收到)0x08开始的数据是正确的。
但是为什么如果中间有其他地址的干扰数据,最后面的那个数据就无法正确接收就不知道了。 地址滤波 需要在接收端程序判断地址数据吗?我判断了但是无法接收。我用串口显示来判断的。QQ指教下:664974392 不需要。硬件自动处理了。 回复【9楼】gavin_li
-----------------------------------------------------------------------
加个好友可以吗?QQ664974392 回复【9楼】gavin_li
-----------------------------------------------------------------------
地址滤波+WOR模式正在努力调试中。希望共同进步 gavin_li 你的Q加不了。要验证。加我的吧22124010.验证发送CC1101即可。 回复【12楼】gavin_li
-----------------------------------------------------------------------
恩 地址超过255只能在软件层面进行区分了
还是推荐软件层面操作好,可扩展性好
页:
[1]