您好!
我们使用 DRV8243-Q1进行电机控制、并使用 SPI 接口 与 DRV8243和 stm32f401re MCU 进行通信。 寄存器时使用的最大电流。 此外、还请澄清我在通过 SPI 通信与驱动器进行通信时的一些疑问。
与驱动程序通信需要进行哪些 SPI 初始化设置?
2.如 nsleep、nFAULT、DRVOFF 等引脚应该保持高电平或低电平以便开始通信?
3、为了与驱动程序通信(即读取和写入寄存器)、我将 SPI 模式配置为模式0、MSB 优先、时钟频率为1MHz 和16位帧格式。 尝试读取 Device_ID 寄存器、但无法获得预期的结果。 和使用 SPI HAL 库。
预期结果应为0x32、因为我正在使用 DRV8243-Q1、但我得到的是0x80、如下面所附的屏幕截图所示。

上述读取的代码片段在下面随附、
uint8_t R_device_id = 0b01000000;
//Read data from the DRV8243 DeviceID register
uint32_t DeviceIDRegisterAddress = R_device_id;
DeviceIDRegisterValue1 = readDRV8243Register(&hspi2,DeviceIDRegisterAddress,0x00);
//function definition for read register
uint16_t readDRV8243Register(SPI_HandleTypeDef *hspi,uint8_t regAddress,uint8_t regValue)
{
// Select the DRV8243(DRV1) by pulling CS low
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, 0);
// Send the register address to request data
uint16_t dataToSend = ((uint16_t)regAddress << 8) | regValue;
//HAL_SPI_Transmit(hspi,(uint8_t*)&dataToSend, 2, 100);
// Receive the data from the DRV8243
uint16_t receivedData;
HAL_SPI_TransmitReceive(hspi, (uint8_t*)&dataToSend, (uint8_t*)&receivedData, 1, 100);
// Deselect the DRV8243(DRV1) by pulling CS high
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, 1);
return receivedData;
}
谢谢!





