Other Parts Discussed in Thread: DRV8235
器件型号: 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);
️ 电机正确向前运行。
非工作情况(仅 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);
在 OUT 引脚上未观察到输出
电机不运行
观察
-
基于 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
