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.

[参考译文] DRV8235:仅通过 I2C (PMODE) 进行控制时、DRV8235 输出处于无效状态

Guru**** 2694555 points

Other Parts Discussed in Thread: DRV8235

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

https://e2e.ti.com/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1598905/drv8235-drv8235-outputs-inactive-when-controlled-only-via-i2c-pmode

器件型号: DRV8235

尊敬的团队:

代表我们的客户发帖。

问题 1:

频率

  • 电机驱动器: DRV8235

  • MCU: STM32F407.

  • 接口: I2C

  • 电机控制模式: GPIO 与 I2C (PMODE)

 

工作箱(基于 GPIO 的控制–电机运行)

当输入引脚直接由 STM32 GPIO 控制且仅通过 I2C 完成基本配置时、电机正向正常运行。  

#define I2C_CONFIG0  (uint8_t)(0x09)
#define I2C_CONFIG4  (uint8_t)(0x0D)
#define I2C_REG_CTRL0 (uint8_t)(0x0E)
#define I2C_REG_CTRL2 (uint8_t)(0x10)

#define DEVICE_ADDR  (uint8_t)(0x60)

HAL_StatusTypeDef DRV8235_Write(uint8_t addr、uint8_t reg、uint8_t 值)

  uint8_t buf[2]={ reg、value };
  返回 HAL_I2C_addr Master_Transmit (&hi2c1、addr、buf、2、HAL_MAX_DELAY);
}

/*基本配置*/
DRV8235_Write (DEVICE_ADDR、I2C_CONFIG4、0x00);
DRV8235_Write (DEVICE_ADDR、I2C_CONFIG0、0xE0);

/*方向由 STM32 GPIO 控制*/
HAL_GPIO_WritePin (TEA_DIR1_GPIO_Port、TEA_DIR1_Pin、GPIO_PIN_SET);
HAL_GPIO_WritePin (tea_dir2_GPIO_Port、tea_dir2_Pin、GPIO_PIN_SET);

Heavy check mark️ 电机正确向前运行。  

非工作情况(仅 I2C 控制–无输出)

当 GPIO 控制被移除并且 DRV8235 配置为使用时 PMODE(基于 I2C 的 IN1/IN2 + PWM 控制) 、在电机输出引脚上未观察到输出。

/*启用 PMODE 和基于 I2C 的控制*/
DRV8235_Write (DEVICE_ADDR、I2C_CONFIG4、0x3E); // pmode = 1、I2C_BC = 1、I2C_EN_IN1 = 1、I2C_EN_IN2 = 0

DRV8235_Write (DEVICE_ADDR、I2C_CONFIG0、0x61);

/*配置 PWM:1000 Hz、100%占空比*/
DRV8235_Write (DEVICE_ADDR、I2C_REG_CTRL2、0xFF);

             (或)

DRV8235_Write (DEVICE_ADDR、I2C_REG_CTRL2、0x3F);

/*启用输出*/
DRV8235_WriteSafe (DEVICE_ADDR、I2C_CONFIG0、0xE1);

X 在 OUT 引脚上未观察到输出
X 电机不运行  

观察

  • 基于 GPIO 的方向控制工作正常。

  • 切换到完全 I2C 控制(PMODE 启用)会导致输出无效。

  • 配置 PWM 寄存器、设置输出使能位。

  • 基于以下配置

 

在 PMODE(仅 I2C 控制)下运行 DRV8235 时、是否需要任何其他寄存器设置、引脚要求或时序条件来激活输出?

问题 2:

我正在使用 用于控制 4×DRV8235 器件的单个 I2C 总线

  • 所有四个 DRV8235 器件都连接到相同的 SDA 和 SCL 线路。

  • 我正在从 STM32 扫描 I2C 总线。

  • TEa = 0x60
  • Dum Tea = 0x6C
  • 咖啡= 0x64
  • 牛奶= 0x70
  • 这是下面附加的地址和代码
  •  仅地址 0x60 在 I2C 设备就绪检查期间使用进行响应HAL_I2C_IsDeviceReady()

  • 其他预期的器件地址可以 无响应 I2C 事务。为什么?

此致、

Danilo

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

    尊敬的 Danilo:

    请允许我花一些时间进行回顾。 我很快就会联系到一个更新。  

    此致、

    David

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

    尊敬的 Danilo:

    1.在 *启用 PMODE 和基于 I2C 的控制*/命令并设置 CONFIGx 寄存器之前、请确保设置 EN_OUT = 0b。  

    2. MCU 可能使用 HAL 库中常见的 8 位寻址。 如果是这种情况、可能需要将 7 位器件地址位移 1。  

    对于 A1=0 和 A0=1 的情况、7 位器件地址为 0x62、但可能需要写入 0xC4。

    8 位地址=(7 位地址<< 1) R/W  

    此致、

    David