您好!
如何在 CC1101上设置串行异步 TX/Rx 模式的波特率?
要使其进入异步 TX/Rx 模式并设置波特率、我必须设置哪些寄存器?
谢谢
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无线电与 Infiduino (Arduino 的3.3V 版本)配合使用。 对讲机连接替换了有线 RS-232连接。
我的应用是对模型列车的远程控制。 此帖子底部列出的我的网页上提供了完整说明和我的所有 Arduino 源代码。 Arduino 代码位于名为 Arduino.zip 的 ZIP 文件中-查找名为 RTCModemE.cpp 和 RTCModemE.h 的 sketch 有关 CC1101寄存器设置、请查看同一 ZIP 文件中的 CC1101E_OOK.h 和 CC1101E_OOK.h。
以下是我使用的 CC1101寄存器设置
静态常量寄存器 Setting_t C905_8[]= { CC1101_IOCFG2、 0x2E}、//高阻抗 {CC1101_IOCFG1、 0x2E}、//高阻抗 // GDO1被选为 CC1101的串行数据输出 // GDO1也被用作 CC1101到 Arduino 的 SPI 输出{CC1101_IOCFG0、 0x0D}、// GDO0在异步 TX 模式下硬连线为 CC1101的串行数据输入 //此设置选择它作为异步 RX 模式 {CC1101_FIFOHR、 0x47}、//根据 DN022确定、当 RX 滤波器带宽<= 325kHz {CC1101_PKTCTRL0、0x32}、// OOK //{CC1101_CHANNR、 0x00}、// 100KHz 通道-#0给出905.799438 MHz -远程 RX {CC1101_CHANNR、 0x6B}、// 100KHz 通道-#107给出916.496826 MHz -远程 TX {CC1101_FSCTRL1、 0x06}、// IF 频率152 KHz {CC1101_FREQ2、 0x22}、// 905.8MHz -基频、使用通道107进行发送 {CC1101_FREQ1、 0xD6}、 {CC1101_FREQ0、 0xA5}、 {CC1101_MDMCFG4、 BW162}、//带宽3:32 PM 6/13/2016 // 0xf8 = 58kHz -不能与 RTCEngineE 配合使用(太窄) // 0xE8 = 68kHz -与 RTCEngineE 配合使用。 // 0xD8 = 81kHz -与 RTCEngineE 一起使用。 // 0xC8 = 101kHz -使用 RTCEngineE、不能使用我的修订版 I3A Tiu。 // 0xB8= 116.07kHz -使用 RTCEngineE、不能使用我的修订版 I3A Tiu。 // 0xA8= 135.4kHz -使用 RTCEngineE。 临界性运行、I Rev 3A Tiu。 // 0x98 = 162.5kHz -一个 Tiu 在101Khz 时不工作、它在203kHz 和162.5kHz 时工作 //与 RTCEngineE 一起工作。 使用了 Rev I3A 和 Rev L Tiu。 不适用于 Mike 的修订版 I Tiu // 0x88 = 203.125kHz 使用 RTCEngineE。 与修订版 I3A Tiu 一起工作。 看起来像稳定运行 //没有任何噪声问题。 // 0x78 = 232.14 kHz // 0x68 = 270.83 kHz // 0x48 = 406.2 KHz -不能与 Mike 的修订版 I Tiu 一起工作 // 0x28 = 541 kHz -与 Mike 的修订版 I Tiu 一起工作-但改进测试显示 RX 比 噪音更容易//更容易受到噪音的影响 (使用 RTCEngineE 进行测试时可见) {CC1101_MDMCFG3、 0x83}、//数据速率9.596波特 {CC1101_MDMCFG2、 0x30}、//调制格式 ASK/OOK {CC1101_MDMCFG1、 0x21}、//通道间距 w/MDMCFG0 // 0x21 = 100kHz // 0x20 = 50kHz {CC1101_MDMCFG0、 0xf8}、//通道间距 w/MDMCFG1 {CC1101_DEVIATN、 0x14}、//偏差-未在 ASK/OOK 中使用//{CC1101_MCSM2、 0x10}、//设置 RX_TIME_RSSI -接口停止工作 {CC1101_MCSM1、 0x00}、//始终选择清除通道、为0x30、除非当前接收到数据包 {CC1101_MCSM0、 0x18}、//从空闲状态转到 RX 或 TX 时为 FS_AUTOCAL{CC1101_FOCCFG、 0x16}、//每个 CC1101文档、针对 OOK 的 FOC_LIMIT[1:0] s/b 0。 这意味着该值应为0x14 {CC1101_AGCCTRL2、0x07}、// SmartRF 提供0x43 -根据 DN022、该值应介于0x03和0x07之间、0x06和0x07似乎工作正常 // 0x92与0x03、0x04、0x05、0x06生成杂散位 // 0x91与0x03、0x04、0x05、0x05位一起生成杂散位 0x06和0x07似乎正常 //{CC1101_AGCCTRL1、0x00}// PER DN022 0x00、相对阈值禁用、绝对阈值@ MAGN_TARGET 设置 //0x30 CS 相对阈值= RSSI 值增加14db //通常这不符合我的预期 //0x08禁用 CS 绝对阈 值{CC1101_AGCCTRL1、0x00 | 0x30 | 0x08}、//设置 CS 检测相对、绝对禁用。 {CC1101_AGCCTRL0、0x91}、//每个 DN022在0x91和0x92之间、总的来说、0x91似乎运行良好 // 0x93产生大量垃圾 // 0x90工作正常并减少了垃圾数量、但不比0x91 {CC1101_WORCTRL、 0xFB}、 {CC1101_FREND1、 0x56}、//根据 DN022确定、当 RX 滤波器带宽<= 101kHz 时//注意:我已将带宽//扩展 到162.5kHz、但我没有更改此值。 似乎工作正常。 {CC1101_FREND0、 0x11}、// PA 功率设置索引1 -发送一 个{CC1101_FSCAL3、 0xE9}、 {CC1101_FSCAL2、 0x2A}、 {CC1101_FSCAL1、 0x00}、 {CC1101_FSCAL0、 0x1f}、 {CC1101_TEST2、 0x81}、//根据 DN022确定、当 RX 滤波器带宽<= 325kHz {CC1101_TEST1、 0x35}、//根据 DN022确定、当 RX 滤波器带宽<= 325kHz {CC1101_TEST0、 0x09}、 };
否 此配置中的 CC1101不关心波特率。
CC1101的 RX 仅侦听通道。 如果存在载波、RX 将输出"1"。 如果没有载波、它将输出"0"。
实际上、波特率是传输的另一端发送的数据。
CC1101的 RX 输出必须转到 UART、该 UART 会像有线连接一样对位流进行解码。 在我的应用中、我使用 Arduino 软件串行库在软件中执行该操作、但也可以在硬件中完成。
大家好、非常感谢、我成功接收到868MHz 的车库门信号! 但是、您的寄存器不起作用、我必须将 IOCFG2设置为 0x0D、而不是0x2E。
但有一个问题、载波侦听设置在443MHz 下不起作用、它正在接收噪声。 我如何解决这个问题?
以及传输似乎不起作用。 IOCFG0设置为 0x0D、但在我将模块置于 TX 模式(STX SPI cmd)并尝试重放数据后、我的 RTL-SDR 上不显示任何内容。 你知道发生什么事了吗?