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.

[参考译文] DRV8308:通过SPI编程DRV8308

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

https://e2e.ti.com/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/656555/drv8308-programming-drv8308-by-spi

部件号:DRV8308

尊敬的TI:

非常感谢 您的阅读。

能否帮助我通过  SPI编程DRV8308?

我想知道是否仅对DRV8308编程,应该使用哪些引脚?

现在,我使用了VM(12 V),ENA(high,RST(low),SCLK,SCS,SDATAI,SDATAO,SMODE(low)。

但是,当我读取寄存器时,我感到困惑的是,总是返回0x0000

再次感谢您的阅读。

如果您能重播,我将不胜感激。

谢谢你。

Zky

电子邮件:zky@xeltek-cn.com

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

    您好Zky:

    您是否在SDATAO上有外部上拉?

    是否检查了VCP,VREG和VINT电压?

    请首先关注读取寄存器0x2A。 所有其它寄存器的默认值为0x0000。

    SPI故障的最常见原因是:
    1) SDATAI与SCLK的设置/保持
    2) SDATAO没有上拉
    3)相对于SDATAO上拉,SCLK太快
    4) SCS错误地构建交易框架。 有关正确的帧结构,请参阅7.5 2部分  

    如果您未在寄存器0x2A中读取0x0018,请提供事务的范围捕获。  

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

    感谢您的帮助。
    现在我读了reigster 0x2A,值是0x19,而不是0x18,非常混乱,
    我测试了VCP,VREG和VINT,它们似乎都是正确的。


    还有一个问题,如何对OPT进行编程,就像下面这样?

    写入注册(0x2D,0x1234);
    写入注册(0x2D,0x1415);
    写入注册(0x2D,0x1617);
    写入注册(0x2D,0x1819);
    write_Register (0x39,0x0002);
    DelayMs(100);
    write_Register (0x2d,0x0edd);//数据表0EDD中不清楚????
    DelayMs(500);

    但不管用。

    谢谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Rick Duncan,您好
    您是否有机会观看我的上次重播?
    现在,我读了寄存器0x2a,值是0x18,但我不知道如何将所有寄存器写入OTP。
    现在,我尝试如下操作,

    写入注册(0x2D,0x1234);
    写入注册(0x2D,0x1415);
    写入注册(0x2D,0x1617);
    写入注册(0x2D,0x1819);
    write_Register (0x39,0x0002);
    DelayMs(100);
    write_Register (0x2d,0x0edd);//数据表0EDD中不清楚????
    DelayMs(500);

    但不管用。

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

     尊敬的用户500.7464万:

    很抱歉耽误你的时间。 我们现在正在研究此问题,但可能需要到下周中。

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

    要写入OTP寄存器,请执行以下步骤:

    1)通过调节电机确定寄存器0x0到0xB的所需值
    2)确保VM大于11V
    3)将"启用"设置为逻辑高值
    4)在寄存器0x0到0xB中写入所需的值
    5)执行7.5 章节中所述的步骤
    前四次写入进入OTP编程模式
    写入0x39将执行OTP写入
    最后一次写入退出OTP编程模式

    此时将对OTP位进行编程。 循环使能引脚并重新读取寄存器。 寄存器0x0到0xB中读取的默认值应与编程值匹配。

    请注意,这是一次性流程。 如果在写入过程中加载了不正确的值或出现错误,则无法恢复。 寄存器值仍可通过SPI进行更改。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Rick Duncan,您好

    非常感谢。

    您的回复非常有帮助!  

    谢谢你。

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

    顺便说一下,如果有一些方法可以检查OTP位是否已编程?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的用户500.7464万:

    编程后,寄存器0x0到0xB应将OTP值读取为新的默认值。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Rick Duncan您好:

    如果我写入0x00到寄存器0x0到0xb,然后写入opt,我是否可以再次写入OTP?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     尊敬的用户500.7464万:

    一旦设置了OTP (一次性编程)寄存器,就不能对其进行更改。