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.

[参考译文] LMX2571:FSK调制

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

https://e2e.ti.com/support/clock-timing-group/clock-and-timing/f/clock-timing-forum/577839/lmx2571-fsk-modulation

部件号:LMX2571
主题中讨论的其他部件: MSP430F5659

你好!

我目前正在我的项目中努力使用LMX2571。 (使用msp430f5659和CCS)

我想做的是使用LMX2571和20MHz跨度进行2级FSK调制。 (中心频率:30MHz,增量频率:10MHz)。

所以我设置了几个变量以获得30MHz载波频率。 以下是我设置的参数。

(我将根据LMX2571数据表'Figure 63'调用参数名称。)  

OSCin:20Mhz

预先分区:1.

多人:5人

PDF (相位检测器频率) :100Mhz

VCO:4800MHz

预分频器:2.

N:24

CHDIV1:32.

CHDIV2:5.

输出:30Mhz

因此,根据LMX2571数据表中的'Equation 4',FSK步进值可按如下公式计算。

正摆幅=(f_dev * DEN/f_PD)*(CHDIV1*CHDIV2/Prescaler) (其中f_dev = 10MHz)

=(10*10^6*2^24/100*10^6)*(32*5/2)=1.34217728亿=2^27  (假设合成器模式)

因此 ,FSK_DEV0应为2^27,但根据寄存器的大小,分辨率仅为2^16。

或者,我考虑使用F1,F2分别作为20MHz,40MHz,并将它们切换为FSK调制。 (例如,位1 = F1 (20MHz),位0 = F2 (40MHz))

但是,切换时间太长,无法将其用作FSK调制。

是否有任何方法可以使用此产品以高数据速率进行2级20MHz,40MHz FSK调制?

谢谢

Jongchan Woo

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好Jongchan:
    FSK模式不起作用,因为总输出除法器值太大。 总除法器值= 3x32 = 160。 输出时的20MHz变化意味着VCO时的3.2GHz变化,这是不可能的。
    但是,我认为F1F2切换是正确的方法。 您的FSK比特率是多少? 您可以使用TrCtl引脚进行切换,切换时间应该很短。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    非常感谢Noel

    我需要至少10k FSK比特率。 是否可以达到这一比率?

    另外,我还有另一个问题。 我一直在尝试通过切换TrCtl pin从F1切换到F2,正如您提到的,我应该写什么寄存器以及如何写?

    我现在要做的是在 R0寄存器中写入0x0002 + FCAL_EN_ENABLE + F1F2_SEL_F1 + F1F2_MODE_ENABLE + F1F2_CTRL_EXT + F1F2_INIT_RECAL + RxTX_POL_AH + RxTX_CTRL_EXT (0b0.1101万10000011)。1000.0011万。 还将 OUTBUF_TX_EN_F2设置为0,在R23寄存器中将OUTBUF_RX_EN_F2设置为1, 将OUTBUF_TX_EN_F1设置为1, 将OUTBUF_RX_EN_F1设置为0。

    因此,当我将Trctl值设置为1时,我要通过TX发送F1,如果Trctl值为0,则通过RX发送F2。 但是,它不起作用。 您能告诉我问题是什么吗?

    谢谢

    宗尚

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

    我只是意识到20MHz和40MHz输出之间寄存器设置的唯一区别是CHDIV2。 因此,在这些频率之间切换的最简单方法可能是不断刷新CHDIV2寄存器位。 您不需要F1,F2切换或FSK模式。
    当VCO = 5120MHz时,CHDIV = 4 x 64将输出20MHz,而CHDIV = 4 x 32将输出40MHz。 此更改将在SPI编程后立即生效,因此频率之间的切换速度非常快。 这种方法可以支持非常高的FSK速率。

    如果您想要F1F2切换,请使用以下配置。
    将R0[8] F1F2_CTRL设置为1,这意味着使用TrCtl pin切换F1和F2。
    将R0[7] F1F2_mode设置为1,这将启用F1F1模式。
    将R0[11] RxTX_CTRL设置为1,这意味着使用TrCtl pin切换TX和RX端口。
    将R0[10] RxTX_POL设置为1,这意味着当TrCtl引脚较高时,TX端口处于活动状态。
    将R7[7] OUTBUF_TX_EN_F1设置为1,这会将F1寄存器设置指定为使用TX端口。
    将R23[6] OUTBUF_RX_EN_F2设置为1,这将分配F2寄存器设置为使用RX端口。
    请注意,每当我们执行F1F2切换时,VCO将被校准。 因此,要适应最终频率需要一些时间。 我想这个结算时间大约是20个月。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢Noel

    我很抱歉提出更多问题,但我意识到FSK比特率应该在10万左右。 是否仍有可能实现?

    此外,您还建议使用两种FSK调制方法。 您认为哪一项在这两项中速度更快? 我认为第二种F1F2切换方法比仅仅将寄存器值再次写入第一种方法快。

    另一个问题是,我目前正在使用msp430f5659来使用lmx2571,将引脚4.2 连接到TrCtl。 正如您所提到的,我刚刚设置了R0,R7,R23的所有寄存器值,并尝试将引脚4.2 值从1更改为0 (如CCS中的P4OUT &=~BIT2设置),但未找到任何内容。 您认为这里的问题是什么?

    加号)

    我不知道TI如何在lmx2571数据表中获得数据图形,如图66和67。 我想检查在F1和F2之间更改频率或通过写寄存器更改频率需要多长时间。 是否有专用工具或机器?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是否可以同时使用F1和F2仅使用TX? 您建议的当前设置是F1通过TX传输,F2通过RX传输(在我的系统中不起作用...)。 但是,我想知道是否可以通过TX同时传输F1和F2。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好Jongchan:

    对于F1F2模式,100kHz FSK速率太快。 我刚刚检查过,使用您的应用程序配置,使用F1F2模式的切换时间是1X,甚至比FSK速率更长。 但是,CHDIV2的切换时间超快,我不能很准确地测量。
    因此,编程CHDIV2可使您获得最短的切换(响应)时间。 但是,SPI编程速度也需要足够高。 对于10MHz SPI速率,写入时间已经为2.4us。
    我们使用Agilent E5052B测量切换时间。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢Noel,

    非常感谢您的帮助。 我将按照你的建议重写注册表。 我想知道如何在一定的时间内再次写寄存器。 例如,您提到的是  

    10MHz SPI率写入时间为2.4us。 如果我想制作100K bps FSK,以便瞬态时间应为5us。 如何控制此时间? 此外,如果我想达到最高汇率,我该怎么办?

    我当前使用的是使用代码编辑器工作室6.1 的msp430f5659设备.........1

    我使用以下函数写入寄存器值

    Void LMX2571_ReG_Write (无符号字符REG_ADDRESS,无符号短数据)

    volatile unsigned char dummy_rx;

    P4OUT (P4OUT)&=~BIT3;//为变速箱设置STE Low (STE低)

    UCA2TXBUF =(无符号字符)(REG_ADDRESS);//将第一个字节发送到TX缓冲区:寄存器的地址

    ((UCA2STAT & UCBUSY));// USSCI_B1 TX缓冲器就绪?

    Dummy _Rx = UCA2RXBUF;// Dummy Read Rx buf

    UCA2TXBUF =(无符号字符)(data >>8);//将第二个字节发送到TX缓冲区:DATA[23:16]

    ((UCA2STAT & UCBUSY));// USSCI_B1 TX缓冲器就绪?

    Dummy _Rx = UCA2RXBUF;// Dummy Read Rx buf

    UCA2TXBUF =(无符号字符)(DATA和0x00FF);//将第三个字节发送到TX缓冲区:DATA[15:8]

    ((UCA2STAT & UCBUSY));// USSCI_B1 TX缓冲器就绪?

    Dummy _Rx = UCA2RXBUF;// Dummy Read Rx buf

    P4OUT || BIT3;//变速箱末端SEN高

    __DELAY周期(10万);

    }

    您能否为FSK实现特定时间控制提出任何建议?

    另一个问题是我也想用20Mhz信号进行OOK调制。 (例如,位1 = 20Mhz信号,位0 =无信号)。 我认为我应该打开和关闭信号,以便产生一些比特。 实现此调制的最有效方式是什么? 如何在短时间内关闭和打开信号? 目标比特率与FSK相似。

    此致,

    Jongchan Woo

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好Jongchan:
    我不熟悉软件,无法评论您的代码。
    也许我可以对编程速度再作一些解释。
    由于寄存器的长度为24位,因此要编写寄存器,我们需要24 SPI时钟周期。 如果SPI以10MHz运行,则需要2.4us来写入寄存器。 显然,这在您的应用中太长,因为FSK速率为100kHz。
    如果SPI以50MHz运行,只需0.48us就可以更改CHDIV2值,我认为这不会对您的系统造成损害。
    同样,对于OOK应用程序,您可以切换R7[7] OUTBUF_EN_TX寄存器位以启用或禁用输出缓冲区。