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.

[参考译文] DRV8311:使用 tSPI 型号时,无法正确读取默认寄存器值

Guru**** 2477885 points


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

https://e2e.ti.com/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1244678/drv8311-using-the-tspi-variant-unable-to-read-default-register-values-correctly

器件型号:DRV8311

您好!

我们正在使用 drv8311p ,在尝试读取 tSPI 后,使用数据帧格式的寄存器,我们无法获得 dafault 值。

使用 STM32和 HAL 库

uint16_t drv8311p_SPIRead (SPI_HandleTypeDef * hspi、uint8_t addr){

   // SPI 帧格式
   //奇偶校验位为15和16,由于禁用了默认奇偶校验错误,因此忽略

   uint16_t DATA = 0;
   数据= 0x8000;
   uint32_t control = 1<<RW |(0 & MASK4BIT)<< ID | addr << ADDR |(0 & MASK2BIT)<< Reserved | data;


   uint32_t rxBuff =0xbeef;
   uint8_t * p =(uint8_t *)&control;
   HAL_GPIO_Writepin (SPI2_CS_GPIO_Port、SPI2_CS_Pin、GPIO_PIN_RESET);
   HAL_SPI_TransmitReceive (hspi、(uint8_t *)&CONTROL、(uint8_t *)&rxBuff、41000);
   HAL_GPIO_Writepin (SPI2_CS_GPIO_Port、SPI2_CS_Pin、GPIO_PIN_SET);

   //devStatus =(rxBuff>>16)& MASK8BIT ;//更新设备状态

   返回(rxBuff 和 MASK16BIT);



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

    您好、Amrith、  

    今天是美国假日、我们的许多团队成员目前不在办公室、本周晚些时候再来-请预计会有延迟回复  

    此致、  
    安德鲁  

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

    您好、Amrith、

    您提到您无法获取默认值。 您将获得什么值? 或者你没有得到任何值吗? 您能否共享您正在进行的 SPI 读取的波形?

    此致!

    ~艾丽西亚

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

    您好、Alicia。

    感谢您的答复。

    我们将其与开发套件附带的驱动程序代码进行了比较、然后我们得以修复问题。

    不过,FLT_MODE 寄存器提供的0115h 的初始值如数据表中所列出,我们能够读取大多数其它寄存器并获得正确的默认值。

    更新了:我们尝试读取 DRV_STS1寄存器、但值为0x81、而不是0x80、表示故障。

    所有 STS 寄存器都给出了值0x00、因此遗憾的是、我们无法确定发生了什么故障。我们可以复位 FAULT 位、但它是在器件重启时设置的。

    您能对此提供什么建议吗?

    谢谢!

    阿姆里特

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

    您好、Amrith、

    根据您从 FLT_MODE 读取的数据、 根据下表、似乎已禁用 OTP 读取故障。 可能是代码中某处禁用了此功能、这就是寄存器不处于默认值的原因。

    更新:我们尝试读取 DRV_STS1寄存器,但值为0x81而不是0x80,表示故障。

    为了说明这一点、您是指寄存器 DEV_STS1吗?

    我们可以重置故障位,但在重启器件时设置了该位。

    在您对器件进行下电上电时、什么是 VM?

    此致!

    ~艾丽西亚