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.

[参考译文] LMX2582:使用节点 MCU 进行编程

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

https://e2e.ti.com/support/clock-timing-group/clock-and-timing/f/clock-timing-forum/1317684/lmx2582-programming-using-node-mcu

器件型号:LMX2582

大家好、

我们正计划使用节点 MCU 使用 SPI 接口对 LMX2582进行编程。

下面是我们计划在 LMX 6寄存器中写入的  

R70 0x460000
R69 0x450000
R68 0x440089
R64 0x400077
R62 0x3E0000
R61 0x3D0001
R59 0x3B0000
R48 0x3003FC
R47 0x2F08CF
R46 0x2E1FA3
R45 0x2D0384
R44 0x2C0000
R43 0x2B0000
R42 0x2A0000
R41 0x2903E8
R40 0x280000
R39 0x278204
R38 0x26002C
R37 0x254000
R36 0x240011
R35 0x23021B
R34 0x22C3EA
R33 0x212A0A
R32 0x20210A
R31 0x1F0401
R30 0x1E0034
R29 0x1D0084
R28 0x1C2924
R25 0x190000
R24 0x180509
R23 0x178842
R22 0x162300
R20 0x14012C
R19 0x130965
R14 0x0E018C
R13 0x0D4000
R12 0x0C7001
R11 0x0B0018
R10 0x0A10D8
R9 0x090302
R8 0x081084
R7 0x0728B2
R4 0x041943
R2 0x020500
R1 0x010808
R0 0x00221C

您能否确认我可以使用节点 MCU 写入

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

    尊敬的 Manasa:  
    如果 MCU 可以在 DS 中执行具有时序要求的 SPI 写入、那么应该没有问题。  

    此致、  

    维森特  

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

    大家好、

    我正在使用节点 MCU (ESP8266)进行编程

    我们使用 Tics pro 软件验证了 LMX2582的功能。 它的工作正常。

    但我们无法使用节点 MCU (仅是我们观察到的默认频率)锁定频率

    如果您验证代码并指导我们代码中缺少什么、从而控制 LMX2582、

    #include <SPI.h>
    
    // Define LMX2582 control pins
    #define LMX_CS_PIN 15 // Adjust to your CS pin
    #define LMX_CLK_PIN 14 // Adjust to your CLK pin
    #define LMX_MOSI_PIN 13 // Adjust to your MOSI pin
    
    // LMX2582 register addresses (16-bit addresses)
    #define REG_R0  0x00
    #define REG_R1  0x01
    #define REG_R2  0x02
    #define REG_R4  0x04
    #define REG_R7  0x0728B2
    #define REG_R8  0x081084
    #define REG_R9  0x090302
    #define REG_R10 0x0A10D8
    #define REG_R11 0x0B0018
    #define REG_R12 0x0C7001
    #define REG_R13 0x0D4000
    #define REG_R14 0x0E018C
    #define REG_R19 0x130965
    #define REG_R20 0x14012C
    #define REG_R22 0x162300
    #define REG_R23 0x178842
    #define REG_R24 0x180509
    #define REG_R25 0x190000
    #define REG_R28 0x1C2924
    #define REG_R29 0x1D0084
    #define REG_R30 0x1E0034
    #define REG_R31 0x1F0401
    #define REG_R32 0x20210A
    #define REG_R33 0x212A0A
    #define REG_R34 0x22C3EA
    #define REG_R35 0x23021B
    #define REG_R36 0x240011
    #define REG_R37 0x254000
    #define REG_R38 0x26002C
    #define REG_R39 0x278204
    #define REG_R40 0x280000
    #define REG_R41 0x2903E8
    #define REG_R42 0x2A00
    #define REG_R43 0x2B00
    #define REG_R44 0x2C00
    #define REG_R45 0x2D0384
    #define REG_R46 0x2E1FA3
    #define REG_R47 0x2F08CF
    #define REG_R48 0x3003FC
    #define REG_R59 0x3B0000
    #define REG_R61 0x3D0001
    #define REG_R62 0x3E0000
    #define REG_R64 0x400077
    #define REG_R68 0x440089
    #define REG_R69 0x450000
    #define REG_R70 0x460000
    
    // Function to write to an LMX2582 register
    void writeLMXRegister(uint8_t regAddr, uint16_t data) {
      // Combine regAddr and data into a 24-bit value
      uint32_t regData = ((uint32_t)regAddr << 16) | (uint32_t)data;
    
      // Write R/W bit and address MSB
      SPI.transfer((regData >> 23) & 0x01);  
      SPI.transfer((regData >> 16) & 0xFF);  
    
      // Write address LSB and data MSB
      SPI.transfer((regData >> 8) & 0xFF);   
      
      // Write data LSB
      SPI.transfer(data & 0xFF);  
    }
    
    void setup() {
      Serial.begin(115200);
    
      // Initialize SPI communication
      SPI.begin();
      
      // Configure LMX_CS_PIN as an output
      pinMode(LMX_CS_PIN, OUTPUT);
    
      // Set CS pin high initially
      // digitalWrite(LMX_CS_PIN, HIGH);
      
      // Configure SPI settings for 1 MHz speed (adjust as needed)
      SPI.beginTransaction(SPISettings(25000, MSBFIRST, SPI_MODE0));  
    
      digitalWrite(LMX_CS_PIN, LOW);
    
      writeLMXRegister(REG_R70, 0x460000);
      writeLMXRegister(REG_R69, 0x450000);
      writeLMXRegister(REG_R68, 0x440089);
      writeLMXRegister(REG_R64, 0x400077);
      writeLMXRegister(REG_R62, 0x3E0000);
      writeLMXRegister(REG_R61, 0x3D0001);
      writeLMXRegister(REG_R59, 0x3B0000);
      writeLMXRegister(REG_R48, 0x3003FC);
      writeLMXRegister(REG_R47, 0x2F08CF);
      writeLMXRegister(REG_R46, 0x2E1FA3);
      writeLMXRegister(REG_R45, 0x2D0384);
      writeLMXRegister(REG_R44, 0x2C00);
      writeLMXRegister(REG_R43, 0x2B00);
      writeLMXRegister(REG_R42, 0x2A00);
      writeLMXRegister(REG_R41, 0x2903E8);
      writeLMXRegister(REG_R40, 0x280000);
      writeLMXRegister(REG_R39, 0x278204);
      writeLMXRegister(REG_R38, 0x26002C);
      writeLMXRegister(REG_R37, 0x254000);
      writeLMXRegister(REG_R36, 0x240011);
      writeLMXRegister(REG_R35, 0x23021B);
      writeLMXRegister(REG_R34, 0x22C3EA);
      writeLMXRegister(REG_R33, 0x212A0A);
      writeLMXRegister(REG_R32, 0x20210A);
      writeLMXRegister(REG_R31, 0x1F0401);
      writeLMXRegister(REG_R30, 0x1E0034);
      writeLMXRegister(REG_R29, 0x1D0084);
      writeLMXRegister(REG_R28, 0x1C2924);
      writeLMXRegister(REG_R25, 0x190000);
      writeLMXRegister(REG_R24, 0x180509);
      writeLMXRegister(REG_R23, 0x178842);
      writeLMXRegister(REG_R22, 0x162300);
      writeLMXRegister(REG_R20, 0x14012C);
      writeLMXRegister(REG_R19, 0x130965);
      writeLMXRegister(REG_R14, 0x0E018C);
      writeLMXRegister(REG_R13, 0x0D4000);
      writeLMXRegister(REG_R12, 0x0C7001);
      writeLMXRegister(REG_R11, 0x0B0018);
      writeLMXRegister(REG_R10, 0x0A10D8);
      writeLMXRegister(REG_R9, 0x090302);
      writeLMXRegister(REG_R8, 0x081084);
      writeLMXRegister(REG_R7, 0x0728B2);
      writeLMXRegister(REG_R4, 0x041943);
      writeLMXRegister(REG_R2, 0x020505);
      writeLMXRegister(REG_R1, 0x010808);
      writeLMXRegister(REG_R0, 0x00221C);
    
      // Bring CS pin high to deselect the LMX2582 slave
      digitalWrite(LMX_CS_PIN, HIGH);
    }
    
    void loop() {
      // Bring CS pin low to select the LMX2582 slave
      // Example: Write data to LMX2582 registers
      // Optional delay
      // delay(1000);
    }
    

    #包含

    //定义 LMX2582控制引脚
    #define LMX_CS_PIN 15 //根据 CS 引脚调整
    #define LMX_CLK_PIN 14 //根据 CLK 引脚进行调整
    #define LMX_MOSI_PIN 13 //根据 MOSI 引脚调整

    // LMX2582寄存器地址(16位地址)
    #define REG_R0 0x00
    #define REG_R1 0x01
    #define REG_R2 0x02
    #define REG_R4 0x04
    #define REG_R7 0x0728B2
    #define REG_R8 0x081084
    #define REG_R9 0x090302
    #define REG_R10 0x0A10D8
    #define REG_R11 0x0B0018
    #define REG_R12 0x0C7001
    #define REG_R13 0x0D4000
    #define REG_R14 0x0E018C
    #define REG_R19 0x130965
    #define REG_R20 0x14012C
    #define REG_R22 0x162300
    #define REG_R23 0x178842
    #define REG_R24 0x180509
    #define REG_R25 0x190000
    #define REG_R28 0x1C2924
    #define REG_R29 0x1D0084
    #define REG_R30 0x1E0034
    #define REG_R31 0x1F0401
    #define REG_R32 0x20210A
    #define REG_R33 0x212A0A
    #define REG_R34 0x22C3EA
    #define REG_R35 0x23021B
    #define REG_R36 0x240011
    #define REG_R37 0x254000
    #define REG_R38 0x26002C
    #define REG_R39 0x278204
    #define REG_R40 0x280000
    #define REG_R41 0x2903E8
    #define REG_R42 0x2A00
    #define REG_R43 0x2B00
    #define REG_R44 0x2C00
    #define REG_R45 0x2D0384
    #define REG_R46 0x2E1FA3
    #define REG_R47 0x2F08CF
    #define REG_R48 0x3003FC
    #define REG_R59 0x3B0000
    #define REG_R61 0x3D0001
    #define REG_R62 0x3E0000
    #define REG_R64 0x400077
    #define REG_R68 0x440089
    #define REG_R69 0x450000
    #define REG_R70 0x460000

    //用于写入 LMX2582寄存器的函数
    void writeLMXRegister (uint8_t regAddr、uint16_t data){
    //将 regAddr 和数据组合成一个24位值
    uint32_t regData =((uint32_t) regAddr << 16)|(uint32_t) data;

    //写入 R/W 位并寻址 MSB
    spi.transfer ((regData >> 23)和0x01);
    spi.transfer ((regData >> 16)和0xFF);

    //写入地址 LSB 和数据 MSB
    spi.transfer ((regData >> 8)和0xFF);

    //写入数据 LSB
    SPI.TRANSMIT (DATA & 0xFF);

    void setup(){
    Serial.begin(115200);

    //初始化 SPI 通信
    SPI.begin();

    //将 LMX_CS_PIN 配置为输出
    pinMode (LMX_CS_PIN、输出);

    //初始将 CS 引脚设置为高电平
    // digitalWrite (LMX_CS_PIN、HIGH);

    //配置1 MHz 速度的 SPI 设置(根据需要调整)
    SPI.beginTransaction(SPISettings(25000、MSBFIRST、SPI_MODE0);

    digitalWrite (LMX_CS_PIN、低电平);

    writeLMXRegister (REG_R70、0x460000);
    writeLMXRegister (REG_R69、0x450000);
    writeLMXRegister (REG_R68、0x440089);
    写入 LMXRegister (REG_R64、0x400077);
    writeLMXRegister (REG_R62、0x3E0000);
    writeLMXRegister (REG_R61、0x3D0001);
    writeLMXRegister (REG_R59、0x3B0000);
    写入 LMXRegister (REG_R48、0x3003FC);
    writeLMXRegister (REG_R47、0x2F08CF);
    writeLMXRegister (REG_R46、0x2E1FA3);
    writeLMXRegister (REG_R45、0x2D0384);
    writeLMXRegister (REG_R44、0x2C00);
    writeLMXRegister (REG_R43、0x2B00);
    写入 LMXRegister (REG_R42、0x2A00);
    writeLMXRegister (REG_R41、0x2903E8);
    writeLMXRegister (REG_R40、0x280000);
    writeLMXRegister (REG_R39、0x278204);
    writeLMXRegister (REG_R38、0x26002C);
    写入 LMXRegister (REG_R37、0x254000);
    写入 LMXRegister (REG_R36、0x240011);
    写入 LMXRegister (REG_R35、0x23021B);
    writeLMXRegister (REG_R34、0x22C3EA);
    写入 LMXRegister (REG_R33、0x212A0A);
    写入 LMXRegister (REG_R32、0x20210A);
    writeLMXRegister (REG_R31、0x1F0401);
    writeLMXRegister (REG_R30、0x1E0034);
    写入 LMXRegister (REG_R29、0x1D0084);
    writeLMXRegister (REG_R28、0x1C2924);
    writeLMXRegister (REG_R25、0x190000);
    writeLMXRegister (REG_R24、0x180509);
    writeLMXRegister (REG_R23、0x178842);
    writeLMXRegister (REG_R22、0x162300);
    写入 LMXRegister (REG_R20、0x14012C);
    写入 LMXRegister (REG_R19、0x130965);
    写入 LMXRegister (REG_R14、0x0E018C);
    写入 LMXRegister (REG_R13、0x0D4000);
    writeLMXRegister (REG_R12、0x0C7001);
    writeLMXRegister (REG_R11、0x0B0018);
    writeLMXRegister (REG_R10、0x0A10D8);
    writeLMXRegister (REG_R9、0x090302);
    writeLMXRegister (REG_R8、0x081084);
    writeLMXRegister (REG_R7、0x0728B2);
    写入 LMXRegister (REG_R4、0x041943);
    writeLMXRegister (REG_R2、0x020505);
    writeLMXRegister (REG_R1、0x010808);
    writeLMXRegister (REG_R0、0x00221C);

    //将 CS 引脚拉为高电平,以取消选择 LMX2582从器件
    digitalWrite (LMX_CS_PIN、高电平);

    void loop(){
    //将 CS 引脚拉为低电平以选择 LMX2582从器件
    //示例:将数据写入 LMX2582寄存器
    //可选延迟
    //延迟(1000);

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

    尊敬的 Manasa:  
    我们无法帮助处理驱动程序/MCU 代码。  
    您可以在 TICSpro 中导出原始寄存器:  

    此致、  

    维森特