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.

[参考译文] LMH0318:使用 SPI 读取和写入寄存器时遇到困难

Guru**** 2510415 points


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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1235974/lmh0318-difficulty-in-reading-and-writing-register-using-spi

器件型号:LMH0318

大家好、

我使用的是 LMH0318RTWR、控制器是 ESP32。 我在写入 数据和从其寄存器读取数据时面临困难、

#define LMH_ENABLE 25
#define LMH_MOD_SEL 26

#define LMH_CS 5

#define MISO_PIN 19
#define MOSI_PIN 23
#define 读取0xFF
#define0xFE

#define SPI_Setting SPI 设置(20000000、MSBFIRST、SPI_MODE0)
void LMH_READ_SPI_DATA (uint8_t registerAddr)
 uint8_t data1、data2、data3;
 SPI.beginTransaction(SPI_SETTING);
 digitalWrite (LMH_CS、低电平)
 SPI.transfer (read)
 spi.transfer (registerAddr)
 SPI.transfer (read)
 digitalWrite (LMH_CS、高电平)
 delayMicroseconds(1000);
 digitalWrite (LMH_CS、低电平)
 Data1 = SPI.Transfer (读取)
 Data2 = SPI.Transfer (读取)
 Data3 = SPI.Transfer (读取)
 digitalWrite (LMH_CS、高电平)

 spi.endTransaction ();

 serial.print("\n 从寄存器获取数据:");
 serial.print (registerAddr、hex)
 serial.print("\n***** ")
 serial.print (data1、hex)
 serial.print (": ")
 serial.print (data2、hex)
 serial.print (": ")
 serial.println (data3、hex)
} //结束读取

void LMH_WRITE_SPI_DATA (uint8_t registerAddruint8_t data)
 SPI.beginTransaction(SPI_SETTING);
 digitalWrite (LMH_CS、低电平)
 spi.transfer (写入)
 spi.transfer (registerAddr)
 spi.传输(数据)
 digitalWrite (LMH_CS、高电平)
 spi.endTransaction ();
 // delayMicroseconds (1000);
} //结束写入
 
 
在读取寄存器中、我得到所需的数据帧(R/W A7 A6 A5 A4 A3 A2 A1 A0 D7 D5 D4 D3 D2 D1 D0)、但我得到的数据代替数据(D7 - D0)
 

此致、

詹姆斯·曼

TI 客户支持

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

    您好、James:

    请参阅下面讨论如何使用 SPI 接口连接到器件的视频:

    https://www.ti.com/video/5600358649001?keyMatch=

    此致、Nasser  

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

    您好、James:

    同一位客户联系我并提供以下反馈:
    "我确实观看了这个视频、并基于这个制作了"读写"函数。
    在读取0xF0 (器件版本寄存器)时、我获取默认数据值、即0x01。 但是、当我尝试写入数据时、我无法做到。
    我发送用以写入数据的数据帧是[0xFE][寄存器地址(A7-A0)][数据(D7-D0)]。 请查看此帧。
    对于其他寄存器、我无法读取默认值。"

    请提供帮助建议。 谢谢你。

    此致、
    杰拉尔德

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

    您好、James:

    我可以要求更新吗? 谢谢你。

    此致、
    杰拉尔德

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

    您好!

    1)。 请确保我们正在写入相应的寄存器。

    2)。 其次、似乎您可以读取寄存器、但不能写入寄存器。 对于写入操作、我们需要首先写入我们要写入的寄存器地址。 然后、我们需要使 ssbar#处于活动状态或取消置位几微秒(请参阅数据表时序)、然后重新置位 ssbar#以移出寄存器内容。  

    3)。 另外、请放置逻辑分析仪或示波器以确认写入时序。

    此致、Nasser