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:设置异步模式串行波特率

Guru**** 2553260 points
Other Parts Discussed in Thread: CC1101

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/853590/cc1101-setting-asynchronous-mode-serial-baud-rate

器件型号:CC1101

您好!

如何在 CC1101上设置串行异步 TX/Rx 模式的波特率?

要使其进入异步 TX/Rx 模式并设置波特率、我必须设置哪些寄存器?

谢谢

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

    从 数据表中的27.1开始:

    "CC1101调制器对异步输入电平的采样速度比编程的数据速率快8倍。 异步流的时序要求是位周期中的误差必须小于编程数据速率的八分之一。"

    数据表的第12章介绍了如何设置数据速率。  

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

    非常感谢、之三!

    我对在位级别使用此类数据协议非常陌生。

    那么、如果我在 OOK 模式下将其配置为4.8kb/s、RX 输出引脚的串行波特率是38.4kb/s?

    我的问题是、我能否只在38.4kb/s 初始化 ESP32的串行线路并以这种方式接收所有数据、或者我是否必须实现一个在线路上捕获数据的自定义函数?

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

    我将 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中设置。 它只需要1和0进入它、然后打开或关闭载波。 (在本例中、我反转了串行端口输出、以便"1"(标记)关闭了载波、"0"(间距)开启了载波。) Arduino 通过串行端口的运行速度设置波特率。 我不知道是否有最大波特率。 我所需要的只是9600波特、该速率运行良好。

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

    好的、但是 RX 输出(CC1101)的波特率也是9600 (根据您的代码)、但这只是寄存器配置的结果、对吧?

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

    否  此配置中的 CC1101不关心波特率。

    CC1101的 RX 仅侦听通道。 如果存在载波、RX 将输出"1"。 如果没有载波、它将输出"0"。

    实际上、波特率是传输的另一端发送的数据。

    CC1101的 RX 输出必须转到 UART、该 UART 会像有线连接一样对位流进行解码。 在我的应用中、我使用 Arduino 软件串行库在软件中执行该操作、但也可以在硬件中完成。

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

    哦、现在我明白了! 为了直接复制车库门代码、我应该保存 CC1101 RX 输出引脚的上升沿和下降沿、对吧?

    很抱歉,我太吵了,非常感谢你们的帮助:P

    那么、为了再次将代码发送回、我需要以 相同的时间间隔重放相同的上升沿和下降沿序列到 TX 输入引脚吗? 或者我是否错过了什么?

    谢谢!

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

    是的、当 TX 输入引脚为高电平时、CC1101会打开其发送器。 您可以控制施加到 TX 输入引脚的信号的时序。

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

    大家好、非常感谢、我成功接收到868MHz 的车库门信号! 但是、您的寄存器不起作用、我必须将 IOCFG2设置为 0x0D、而不是0x2E。

    但有一个问题、载波侦听设置在443MHz 下不起作用、它正在接收噪声。 我如何解决这个问题?

    以及传输似乎不起作用。  IOCFG0设置为 0x0D、但在我将模块置于 TX 模式(STX SPI cmd)并尝试重放数据后、我的 RTL-SDR 上不显示任何内容。 你知道发生什么事了吗?

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

    如果我将其置于传输模式(在868.3MHz 上)、我在868.43频率上只看到非常窄的连续线、但 TX GDO 设置为低电平。

    无论我在 TX 输入中输入什么内容、它都只显示窄线。 我 的 PKTCTRL0位于0x32。

    尽管它以错误的频率"传输"、但它仍然读取正确的频率

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

    更新了

    我认为我的板有很大的错误、请看一下。 我更换了它、看起来更好。 问题是、有一条连续的红线(不是图片上的红线)、仅在传输时才会变为黄色。 红线是正常的、还是我的电路板调制不是很好?

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

    此问题的当前状态是什么?