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.

[参考译文] 尝试使具有曼彻斯特编码的同步串行模式工作(到目前为止只会产生噪声)

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1036447/trying-to-get-synchronous-serial-mode-w-manchester-encoding-to-work-so-far-getting-only-noise

器件型号:CC110L

您好!

我正在尝试使用 CC110L 构建869.200 MHz 接收器、之前基于(现已停产) ATA5761芯片。 这个无线系统使用一个相当原始的数据包格式、此格式基于1 Kbaud 曼彻斯特编码:24位前导码、一个起始位、然后是3字节或4字节有效载荷(有关 这方面的更多详细信息、请参阅 e2e.ti.com/.../cc1101-compatibility-with-obsolete-fsk-transmitter-receiver-circuits)。

由于这个旧系统仍在与众多客户一起使用、我需要支持旧的数据包格式。 仔细阅读 CC110L 数据表后、我的结论是我只能使用同步串行模式、因为没有同步字、只有一个起始位。 因此、我将 GDO0设置为数据输出、将 GDO2设置为时钟输出、两者都连接到 MCU、负责对接收到的数据流进行解码。

CC110L 的设置在一定程度上成功了、但在过去的几天里、我无法获得一致的数据流、仅数据线路上的噪声和时钟线路上的8位突发:

(黄色= GDO0 =数据、蓝色= GDO2 =时钟)

时钟脉冲恰好是所需的1kHz 频率这一事实表明、数据速率设置成功、但很显然、配置不正确。 我的问题是、我没有构建/编程接收器的经验、所以我不知道我做了什么错误、以及什么值对于 AGC 等东西来说或多或少是正确的。

同步串行模式的设置是根据数据表第5.26.2段"同步串行操作"中的说明完成的。

关于频率和通道设置:所需频率为869.2MHz。 所以:

fosc = 27MHz

FREQ2:FREQ1:FREQ0 = 0x20310D = 2109709 =>基频= 869.1733246 MHz

MDMCFG0.CHANSPC_M = 3、MDMCFG1.CHANSPC_E = 0、CHANNR.CHAN = 0 =>通道偏移= 26.67618kHz

因此、除非我犯了错误、否则通道1应位于869.1733246 + 0.02667618 = 869.2000008 MHz

下面是完整的寄存器列表及其所有值。 所有黄色值均使用所需参数进行修改;方括号之间的所有未标记值均为未更改的复位值。

我将许多参数保持不变、这显然是问题的一部分。 是否有人可以查看并确定可能需要设置的其他参数? 或者、是否有示例代码显示工作同步串行模式接收器的设置?

然后是这样的:许多字段在数据表中有此注释:"使用 SmartRF Studio 中的设置"。 问题是 SmartRF Studio 需要 Windows、但我没有 Windows、只有 Linux、因此我无法运行 SmartRF Studio (在 WINE 或 Mono 运行时环境中无法运行)。 这些未记录和未解释的设置是否以任何方式很重要?

最后:是否有任何好的来源可以更详细地解释如何设置这样的无线电接收器? 我的射频设计经验非常有限(主要是发射器、滤波器和屏蔽技术)、我认为我应该进一步了解接收器系统。

提前感谢您的任何进一步建议!

名称

地址

说明

GDO2_CFG

0x00

0x0B

GDO2:串行同步时钟输出

GDO1_CFG

0x01

[0x2E]

[GDO1:SPI-SO]

GDO0_CFG

0x02

0x0C

GDO0:串行同步时钟输出

FIFOTHR

0x03

[0x07]

RX FIFO 和 TX FIFO 阈值

SYNC1

0x04

[0xD3]

同步字、高字节(不在同步串行模式中使用)

SYNC0

0x05

[0x91]

同步字、低字节(不在同步串行模式中使用)

PKTLEN

0x06

[0xFF]

数据包长度(未在同步串行模式下使用)

PKTCTRL1

0x07

[0x40]

数据包自动化控制(未在同步串行模式下使用)

PKTCTRL0

0x08

0x52

数据包自动化控制->无限数据包长度

地址

0x09

[0x00]

器件地址(未在同步串行模式中使用)

CHANNR

0x0A

0x01

通道#1

FSCTRL1

0x0B

[0x0F]

频率合成器控制

FSCTRL0

0x0C

[0x00]

频率合成器控制

FREQ2

0x0D

0x20

频率控制字、高字节

FREQ1

0x0E

0x31

频率控制字、中间字节

FREQ0

0x0F

0x0D

频率控制字、低字节-> 869.1733246 MHz

MDMCFG4

0x10

0xB5

调制解调器配置->通道带宽= 120.5357143 kHz

MDMCFG3

0x11

0x37

调制解调器配置->符号速率= 1.0010004 kHz

MDMCFG2

0x12

0x08

调制解调器配置-> 2-FSK、曼彻斯特编码、无前导码

MDMCFG1

0x13

0x20

调制解调器配置

MDMCFG0

0x14

0x03

调制解调器配置->通道间距= 26.67617798 kHz

DEVIATN

0x15

[0x47]

调制解调器偏差设置

MCSM2

0x16

[0x07]

主无线电控制状态机配置

MCSM1

0x17

0x3C

主对讲机控制状态机配置->保持 RX 模式

MCSM0

0x18

[0x04]

主对讲机控制状态机配置->手动校准

FOCCFG

0x19

[0x36]

频率偏移补偿配置

BSCFG

0x1A

[0x6C]

位同步配置

AGCCTRL2

0x1b

[0x03]

AGC 控制

AGCCTRL1

0x1C

[0x40]

AGC 控制

AGCCTRL0

0x1D

[0x91]

AGC 控制

未使用

0x1E - 0x1F

保留

0x20

FREND1

0x21

[0x56]

前端 RX 配置

FREND0

0x22

[0x10]

前端 TX 配置

FSCAL3.

0x23

[0xA9]

频率合成器校准

FSCAL2.

0x24

[0x0A]

频率合成器校准

FSCAL1

0x25

[0x20]

频率合成器校准

FSCAL0

0x26

[0x13]

频率合成器校准

未使用

0x27 - 0x28

保留

0x29

[0x59]

保留

0x2A

[0x7f]

保留

0x2B

[0x3F]

测试2

0x2C

[0x88]

各种测试设置

测试1

0x2D

[0x31]

各种测试设置

测试0

0x2E

[0x07]

各种测试设置

SRX

0x34

命令选通:启用 RX

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

    您好 Richard、

    已经指派了一个人员来研究这个问题。 他们会给你回复。  

    此致、
    Siddanth


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

    绝对有必要使用 SmartRF Studio 生成您的设置、因为许多寄存器在表征期间具有可找到的值、并且无法使用等式进行计算、例如频率数据速率等

    ALO、串行模式下不能使用曼彻斯特模式。 如果您的数据是曼彻斯特编码的、并且您在接收器上使用串行模式、则需要对接收到的数据在 SW 中进行曼彻斯特编码。 数据表中明确说明了这一点:

    以下是 SmartRF Studio 为以下参数生成的设置:

    // Address Config = No address check 
    // Base Frequency = 869.199707 
    // CRC Autoflush = false 
    // CRC Enable = false 
    // Carrier Frequency = 869.199707 
    // Channel Spacing = 199.813843 
    // Data Format = Synchronous serial mode 
    // Data Rate = 1.001 
    // Deviation = 4.943848 
    // Device Address = 0 
    // Manchester Enable = false 
    // Modulated = true 
    // Modulation Format = 2-FSK 
    // Packet Length = 255 
    // Packet Length Mode = Infinite packet length mode 
    // Preamble Count = 4 
    // RX Filter BW = 60.267857 
    // Sync Word Qualifier Mode = No preamble/sync 
    // TX Power = 0 
    // PA table 
    #define PA_TABLE {0x50,0x00}
    
    static const registerSetting_t preferredSettings[]= 
    {
        {CC110L_IOCFG2, 0x0B},
        {CC110L_IOCFG0, 0x0C},
        {CC110L_FIFOTHR, 0x47},
        {CC110L_PKTCTRL0, 0x12},
        {CC110L_FSCTRL1, 0x06},
        {CC110L_FREQ2, 0x20},
        {CC110L_FREQ1, 0x31},
        {CC110L_FREQ0, 0x4D},
        {CC110L_MDMCFG4, 0xF5},
        {CC110L_MDMCFG3, 0x37},
        {CC110L_MDMCFG2, 0x00},
        {CC110L_MDMCFG0, 0xE5},
        {CC110L_DEVIATN, 0x14},
        {CC110L_MCSM0, 0x18},
        {CC110L_FOCCFG, 0x16},
        {CC110L_RESERVED_0X20, 0xFB},
        {CC110L_FSCAL3, 0xE9},
        {CC110L_FSCAL2, 0x2A},
        {CC110L_FSCAL1, 0x00},
        {CC110L_FSCAL0, 0x1F},
        {CC110L_TEST2, 0x81},
        {CC110L_TEST1, 0x35},
        {CC110L_TEST0, 0x09},
    };
    

    BR

    Siri

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="2957" URL"~/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1036447/trying-to-get-synchronous-serial-mode-w-manchester-encoding-to-work-so-far-getting-only-noise/3832584 #3832584"]绝对有必要使用 SmartRF Studio 生成设置

    这是一个主要问题、因为我没有 Windows 计算机、而且显然没有 Linux (或 Mac)版本的 SmartRF Studio。

    也许有必要制作 SmartRF Studio 的在线版本、社区成员可以在其中输入参数以获得必要的寄存器设置?

    [引用 userid="2957" URL"~/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1036447/trying-to-get-synchronous-serial-mode-w-manchester-encoding-to-work-so-far-getting-only-noise/3832584 #3832584"]以下是 SmartRF Studio 为以下参数生成的设置:

    遗憾的是、这些设置只能提供有限的改进。 时钟线现在显示一个连续(虽然抖动很大)信号而不是8位突发、并且数据线(顶部)仍然只产生随机噪声:

    但是、我注意到一件事:

    当我在载波信号(869.200000 MHz)出现时为接收器加电并初始化时、这些线路保持静音状态(两者均为低电平)、因此接收器至少以某种方式响应。

    但是、当我关闭载波时、上述信号会返回、并且在我再次打开载波时根本没有响应。

    我可以对载波源进行重新编程、从而在不关闭载波的情况下调制载波、以查看数据通道上是否出现调制、但这当然不会改变加电时不存在载波时它不响应的行为。

    您是否知道导致此行为的原因?

    总之、感谢您迄今为止的回答!

    此致、

    Richard

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

    在执行更多测试并修改发送器以打开和关闭调制后、取得了令人鼓舞的进展:

    • 当调制处于活动状态时、我会在数据输出上看到一个相干信号、以及某种程度上
    • 当载波打开时、接收器现在始终响应-同样在加电之后也是如此(这有点奇怪、因为昨天看起来不起作用)。

    问:在没有载波时、将我看到的噪声静音的最佳方法是什么?

    我认为我可以对曼彻斯特解码进行排序-如果我是正确的、我必须将数据速率加倍才能获得正确的输出(为有效负载流指定了1kHz 数据速率、而不是曼彻斯特编码流)。

    感谢您迄今提供的帮助!

    此致、

    Richard

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

    首先、在串行模式下、时钟应运行 CONT. 我不知道为什么它不使用您的设置。 我复制了您发布的设置、根本看不到时钟。

     

    无法将噪声静音。 只要对讲机处于 RX 模式、它就会接收空中的任何内容、噪音或不接收。

    您可以在引脚(GPIO1)上输出 CS 信号。 然后、您可以使用此选项触发何时开始处理串行数据引脚上的数据。

    如果您的发送器使用的位速率为1kbps (曼彻斯特)、则接收器将需要使用2ksps 的符号速率

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

    好的、在 GDO1上使用 CS 信号可以正常工作、尽管数据信号的延迟意味着当 CS 变为高电平时仍会收到一些噪声位。 但这并不是一个真正的问题。

    我仍在尝试使接收器按照与原始 ATA5760器件类似的规格工作。 这涉及到相当多的反复试验、但我正在尝试。 事实证明、ATA5760完全可以承受频率和频率漂移的偏差- CC110L 在5760处理的某些批次发送器中仍然存在一些问题、但增加带宽并修整 IF 频率和频率偏差看起来很有希望。

    最后一个问题:是否有机会获得 SmartRF Studio 的在线版本以获取收发器参数? 如果不是,我将花时间在 Windows 中安装 VM (我想 Linux 版本太多了,不能要求...),因为我也想在未来的设计中使用 CC110L,当然还有现代的 完全支持的数据包格式、而不是我目前所坚持的这种过时的传输协议。

    总之、感谢您的支持!

    此致、

    Richard

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

    恐怕没有 SmartRF Studio 的在线版本、也没有 Linux 版本。

    BR

    Siri