主题中讨论的其他器件:LDC1312、
大家好、MSP430网站上的
我有一个定制板上的项目。 我使用的是在 I2C 总线上带有 LDC1312 (电感数字转换器)的 MSP430FR5994 (实际上有四个 LDC、每个 LDC 在各自的 I2C 接口上)。 它是总线上的唯一器件。 MSP430是主设备。
过去、我已成功将此类代码"裸机"用于此类代码、但这次我决定使用 MSP430 Driverlub。 我想我现在要访问 LDC 寄存器来配置器件(写入寄存器、但在读取寄存器时遇到了相当大的问题。 读取寄存器时、Driverlib 返回0。 然而、从 CCS、UCBxRXBUF (对于此接口、x= 0)访问寄存器时、存储器映射寄存器中除了0。 我将范围扩大到 I2C 总线、看起来数据正在通过与 MSP430接收缓冲器相匹配的接口;但是、如前所述、Driverlib 只返回0。
该 LDC 的读取接口需要"I2C Restart"。 不确定使用 Driverlib 是否操作正确。 (setMode 语句似乎没有任何差异
MSP430的 I2C 接口在其他地方进行初始化并配置 LDC 寄存器。
我尝试了许多不同的代码、包括在收到 Driverlib 接收请求后立即读取寄存器、没有区别。 选项不足。 你怎么看?
LDC 位于 I2C 地址0x2A 处。 读取的数据为0。
BaseAddress = 0x0640 (I2C 接口 b0)、LDC1312Register = 0
简单代码:
uint8_t RxMSB、RxLSB;
EUSCI_B_I2C_setMode (BASEADDRESS_I2C2、EUSCI_B_I2C_TRANSMIT_MODE);
EUSCI_B_I2C_masterSendMultiByteStart (BaseAddresss、LDC1312寄存器); //在 I2C 总线上发送由"setSlaveAddress ()"提供的从器件地址
EUSCI_B_I2C_masterSendMultiByteFinish (BaseAddresss、LDC1312寄存器);
EUSCI_B_I2C_setMode (BASEADDRESS_I2C2、EUSCI_B_I2C_RECEIVE_MODE);
EUSCI_B_I2C_masterReceiveStart (BaseAddresss); //在 I2C 总线上发送从器件地址
RxMSB = EUSCI_B_I2C_masterReceiveMultiByteNext (BaseAddresss);
RxLSB = EUSCI_B_I2C_masterReceiveMultiByteFinish (BaseAddresss);
我已经尝试了几种不同的方法来读取接收缓冲区、但它始终为0。
我包含了示波器屏幕截图。