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.

TDES954: 使用STM32的I2C驱动时,整个读取流程都是对的,但是器件返回数据不对。

Part Number: TDES954
原理图如下:(可以帮忙核对下原理图是否有问题?)
1)  依据原理图器件IDX引脚确定I2C器件地址为:0x32
2)  初始化STM32(使用IO口虚拟I2C协议)
3)  依据器件读时序读寄存器数据
     读Device ID Register(0x00),器件返回0x00
     
     读Device status register(0x04),器件返回0x01
     
问题:整个读取按照时序操作,返回值不对,问题不知道出在哪里?帮忙分析一下。
  • 您好,上电时序是按照datasheet 9.2 Power-Up Sequencing的时序吗? 建议用示波器测量下上电时序。

  • 1)PDB引脚电压测量显示1.0V(手册说明大于1.5V,那么1.0V这个值正常不?),使用电阻33K,电容10uF。

    2)测试发现,即便更改电阻,使PDB输入电压到1.6V,现象依然一样。

    3)时序测量没问题。

    4)读Revision/Mask ID (Address 0x03),返回0xd3

    5)读DEVICE_STS (Address 0x04),返回0x01

    6)I2C时钟频率74KHz

  • 这是我读取Revision/Mask ID (Address 0x03)整个时序逻辑分析仪抓取结果。

  • 0x32是7bit从机地址,即7bit为0110010,但实际上是左移一位,第八位为读写位,0=write,1=read。

    所以地址不要写0x32, 应该为0x64. 您写0x32,应该是收不到ACK信号的?可以用示波器测量下时序。

    主机发出寻址命令之后,从机是否有应答信号,有应答信号才可以继续往下配置寄存器或者进行读写。

    再试试。