TI论坛
直播中

陈键

9年用户 1085经验值
擅长:可编程逻辑 电源/新能源
私信 关注
[问答]

LMP90100无法读寄存器是怎么回事?


  • LMP90100,一直是IO模拟SPI
    之前的电路版本,读、写寄存器均正常
    电路变更:LMP90100的片选信号和中断信号由之前的隔离器隔离(ADUM1401)更换为光耦(PS2801C-4)
    现象:寄存器写正常,无法读寄存器,无论哪个寄存器,更换过2个批次的LMP90100、代码调整若干次,同样的现象
    求指点解决问题的方向或提供一个IO模拟SPI读LMP90100的示例程序,感谢!

回帖(2)

吴键洪

2025-1-3 14:12:44
如果现象就是你描述的,那之前读写都正常,换成光耦后就不正常,那说明问题出在光耦上。
你可以用示波器看下进出光耦的波形,对比下是不是幅度等等有变化。
举报

贾小龙

2025-1-3 18:14:40
根据您的描述,LMP90100无法读取寄存器的问题可能与电路变更有关。以下是一些建议和解决方案:

1. 检查光耦(PS2801C-4)的连接和配置是否正确。确保光耦的输入和输出引脚连接正确,并且光耦的工作电压和电流满足要求。

2. 检查LMP90100的电源和地连接是否正确。确保电源和地连接稳定,没有短路或断路现象。

3. 检查LMP90100的SPI接口连接是否正确。确保SPI接口的时钟线、数据线和片选线连接正确,并且没有干扰。

4. 检查代码中的SPI读写操作是否正确。确保SPI读写操作的时序和参数设置正确,可以参考LMP90100的数据手册中的SPI接口部分。

5. 尝试使用不同的SPI读写库或函数,以排除代码问题的可能性。

6. 如果以上方法都无法解决问题,可以尝试使用示波器检查SPI接口的信号波形,以确定问题是否出在硬件或软件上。

关于IO模拟SPI读LMP90100的示例程序,以下是一个简单的示例:

```c
#include
#include

// 假设已经定义了SPI接口的读写函数
void spi_write(uint8_t data);
uint8_t spi_read();

void lmp90100_read_register(uint8_t reg, uint8_t *value) {
    // 写入寄存器地址
    spi_write(reg | 0x80); // 0x80表示读取操作
    // 读取寄存器值
    *value = spi_read();
}

int main() {
    uint8_t reg_value;
    lmp90100_read_register(0x00, ®_value); // 读取寄存器0x00的值
    // 处理读取到的寄存器值
    return 0;
}
```

请注意,这个示例程序仅供参考,您需要根据您的硬件和软件环境进行调整。希望这些建议能帮助您解决问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分