This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC1101:RTL-SDR 和 CC1101 wmbus

Guru**** 2389070 points
Other Parts Discussed in Thread: CC1101, WMBUS
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/698752/cc1101-rtl-sdr-and-cc1101-wmbus

器件型号:CC1101
主题中讨论的其他器件:WMBUS

您好!

我的目标是能够使用基于 RTL2832 SDR 的软件狗读取来自基于 CC1101的无线电的 wmbus 数据包。  

首先、为了确保 SDR 正常工作、我使用第三方的434.475 MHz 无线电和 RC1140-MBUS3模块对其进行了测试。 两个都工作正常。 我使用 xaelsouth 软件对 T1模式数据包进行解调和解码。

我还可以使用 RC1140-MBUS3模块读取来自 CC1101的 wmbus 数据包。

问题是我无法使用 RTL2832 SDR 读取数据包。 我不知道发生了什么。  

这是我的 CC1101配置->

//产品= CC1101
//芯片版本= A (版本= 0x04)
//晶体精度= 10ppm
// X 射频频率= 26MHz
//射频输出功率=+ 10dBm
// RX 滤波器带宽= 325.000000 kHz
//偏差= 38kHz
//数据速率= 32.630920 kBaud (在 T1模式下运行时将更改为100kbaud)
//调制=(0) 2-FSK
//曼彻斯特启用=(0)曼彻斯特禁用
//射频频率= 434.475MHz (这是在我所在国家/地区运行时 wmbus 的 fc)
//通道间距= 199.951172kHz
//通道编号= 0
//优化=-
//同步模式=(5) 15/16 +载波侦听高于阈值
// RX/TX 数据格式=(0)正常模式, 使用 FIFO 进行 RX 和 TX
// CRC 操作=(0)为 TX 和 RX 禁用 CRC
//正向纠错=(0) FEC 禁用
//长度配置=(0)固定长度数据包,长度在 PKTLEN 寄存器中配置。
//封装长度= 255
//前导码计数=(2) 4字节
//追加状态= 0
//地址检查=(0)无地址检查
// FIFO 自动刷新= 0
//器件地址= 0


const RF_CONFIG_T tModeRfConfig ={
0x08、// FSCTRL1频率合成器控制。
0x00、// FSCTRL0频率合成器控制。
0x10、//0x21、// FREQ2 频率控制字、高字节。
0xB5、//0x6B、// FREQ1 频率控制字、中间字节。
0xE8、//0xD0、// FREQ0 频率控制字、低字节。
0x5C、// MDMCFG4调制解调器配置。 -103 kBaud
0x04、// MDMCFG3调制解调器配置。
0x05、// MDMCFG2调制解调器配置.05
0x22、// MDMCFG1调制解调器配置。
0xf8、// MDMCFG0调制解调器配置。
0x00、// CHANNR 通道编号。
0x44、// DEVIATN 调制解调器偏差设置
0xB6、// FREND1前端 RX 配置。
0x10、// FREND0前端 RX 配置。
0x18、// MCSM0 主无线电控制状态机配置。
0x2E、// FOCCFG 频率偏移补偿配置。
0xBF、// BSCFG 位同步配置。
0x43、// AGCCTRL2 AGC 控制。
0x09、// AGCCTRL1 AGC 控制。
0xB5、// AGCCTRL0 AGC 控制。
0xEA、// FSCAL3频率合成器校准。
0x2A、// FSCAL2频率合成器校准。
0x00、// FSCAL1频率合成器校准。
0x1f、// FSCAL0频率合成器校准。
0x59、// FSTEST 频率合成器校准。
0x81、// TEST2 各种测试设置。
0x35、// TEST1 各种测试设置。
0x09、// TEST0 各种测试设置。
0x06、// IOCFG2 GDO2输出引脚配置。
0x00、// IOCFG0D GDO0输出引脚配置。 有关详细的伪寄存器说明,请参阅 SmartRFRegisteredStudio 用户手册。
0x00、// PKTCTRL1数据包自动化控制。
0x00、// PKTCTRL0数据包自动化控制。
0x00、// ADDR 器件地址。
0xFF // PKTLEN 数据包长度。
};

const uint8_t tModePaTable[]={0xC0};
const uint8_t tModePaTableLen = 1; 

这些值与 TI wmbus 堆栈相同、我刚刚将 FC 更改为434.475MHz。

 出于测试目的、RTL2832连接到 Raspberry PI、我使用此软件来解码数据包: github.com/xaelsouth/rtl-wmbus

这是我使用的 RTL_SDR 设置:RTL_SDR -f 434425000 -s 1600000 -2>/dev/null | build/RTL_wmbus

在 CC1101中是否必须进行任何其他配置?

提前感谢!

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    "首先、为了确保 SDR 正常工作、我使用第三方的434.475 MHz 无线电和 RC1140-MBUS3模块对其进行了测试。 两个都工作正常。 我使用 xaelsouth 软件对 T1模式数据包进行解调和解码。

    我还可以使用 RC1140-MBUS3模块读取来自 CC1101的 wmbus 数据包。"

    从上面可以看出、情况如下:
    SDR <-> RC1140-MBUS3正常

    CC1101 <-> RC1140-MBUS3正常

    SDR <-> CC1101不正常。

    RC1140-MBUS3和 CC1101/ MCU 运行哪个软件?

    我们从未研究过您尝试使用的 SDR。 此测试的最终目标是什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    RC1140-MBUS 只是一个 UART 模块、我只将其用于向 SDR 发送测试数据包。 我在使用 CC1101发送完全相同的测试数据包时遇到问题。 这非常奇怪。

    我刚刚制作了一个简单的软件、每10秒发送一个测试数据包。 我有两个单独的板、一个使用 RC1140-MBUS3、另一个使用 CC1101。

    除了 RC1140-MBUS3能够很好地读取 CC1101测试数据包外、CC1101中的 wmbus 实施似乎并不是100%正确。 正如我提到过的、我还使用 SDR 测试了 wmbus 智能仪表、它工作正常。

    请注意、我在 T1模式下运行、因此这是一个与 SDR 的仅 TX 链路。

    SDR 板是 Rafael 820T2调谐器软件狗。

    目标是证明 wmbus 网关具有更好的范围和灵活性的概念、例如滑翔机中使用的基于 SDR 的网关(wiki.glidernet.org)。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RC1140-MBUS 实现了 WMBUS 堆栈。 您是指 CC1101中的 wmbus 实现。 首先、必须在控制 CC1101的 MCU 中实现。 您的 CC1101硬件和软件到底是什么?

    T 模式需要6个编码中的3个
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我们将 TI Wmbus 协议栈用于 MSP430、因为我们可以使用 RC1140-MBUS3读取 wmbus 数据包。

    对于此测试、我们使用产品的固件。 我们仅使用相同的硬件(MSP430 + CC1101)。

    用于此测试的代码是 swra234a。 它包含868MHz 下 T1模式的示例。  我们刚刚将载波频率更改为434.475MHz、因为我们所在国家/地区的 wmbus 必须以该频率运行。

    这是来自 TI => www.ti.com/general/docs/litabsmultiplefilelist.tsp?literatureNumber=swra234a 的源代码链接

    这就是我如此困惑的原因。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我附加了两张图片,第一张图片是来自基准的解调信号(wmbus 智能仪表,它与 SDR 非常配合),第二张图片是来自 CC1101板的解调信号,它使用 TI Wmbus 堆栈的示例代码。

    WMBUS 智能仪表- 434.475MHz -解调信号

    WMBUS CC1101板- 434.475 MHz - TI wmbus 堆栈、示例代码-解调信号

    这看起来像是与前导码有关的问题,我尝试更改前导码设置,但不起作用。

    更新了:我将前导码长度增加到了8个字节。 堆栈将同步字配置为-> SYNC1 = 0x54、SYNC0 = 0x3D。 这将产生该位流

    010...0101    01010100 00111101

    (序言)     SYNC1       SYNC0

    这与 wmbus 标准相匹配、但如果您看到 CC1101屏幕截图、您会注意到有一个位错误。 序列是01010101 00 1010100....

    该位是前导码末尾之后的下一个位(syncd1的开始)。 SYNC1值应该与0x54不同才能实现这一目的,但它在堆栈中确实是0x54。。

    我在 xaelsouth wmbus 软件中做了一些修改、以在数据包解码中考虑此行为、然后我可以读取 CC1101数据包。 但这样、无线电并不能完全满足 wmbus 标准。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    它看起来像是发送0xAA 前导码、而不是0x55前导码。 在标准中、前导码定义为 nx (01)、如果发送了0x (10)模式、这似乎不符合规范。

    您是如何获得所使用的 wmbus 堆栈的?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    之三、我认为您是正确的。 我从德州仪器(TI)网站 swra234a 下载了堆栈。 是否可以更改 CC1101前导码格式(0x55而不是0xAA)?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    CC1101只能使用0xAA 前导码。 我将尝试在内部检查堆栈为何发送0xAA 前导码。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    之三

    我相信我找到了解决方法、您能检查这是否安全吗?

    我删除了前导码/同步用法(MDMCFG2 = 0x00)。 为了模拟前导码和同步,我在发送 wmbus 数据包->{ 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, 0x55、0x55、0x55、0x54、0x3D}。

    我认为堆栈是根据 wmbus 进行的、这是因为我可以使用 SDR 读取 CC1101数据包、而无需在解码软件中进行任何修改。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我考虑了一些类似的东西。 将包括前导码和 SYNC 在内的完整数据包作为有效负载的一部分放置是安全的、或者如果您在同步前准备发送0x55而没有任何时间延迟、则是安全的。