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.

[参考译文] DRV8308EVM:使用 tensy 3.6无法读取 DRV8308EVM SPI 寄存器

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

https://e2e.ti.com/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/780068/drv8308evm-unable-to-read-drv8308evm-spi-registers-w-teensy-3-6

器件型号:DRV8308EVM
主题中讨论的其他器件: DRV8308

我们正在使用 teensy 3.6读取 DRV8308EVM SPI 寄存器的内容。 我们配置了 OTP 存储器、使用 Arduino Uno、我们能够读取和写入 DRV8308EVM SPI 寄存器、但无法与 teensy 3.6配合使用。 我们从 SDATAO 上的 DRV8308EVM 获得的唯一输出为1s (例如11111111)。 我们已经在 SDATAO 中使用和不使用上拉电阻器的情况下进行了试验。 Tensy 3.6上的3.3V。 我们尝试使用两组不同的 SPI 引脚(SCK0、MOSI0、MISO0和 SCK1、MOSI1、 MISO1)以确保它不是引脚问题。 SPI 时钟频率为1MHz、我们能够验证来自 teensy 3.6的 MOSI 输出是否正确。 JP4根据 SMODE 手册中的原理图进行连接。 SDATAI 与 SCLK 上的建立/保持时间已经被验证为高于手册中提到的最小时间。 我们还确保了 SCS 写入之间存在一个时间延迟(我们的延迟为1500ns)。 我们是否缺少任何可能导致此问题的步骤? 我们在这个问题上已经停留了很长一段时间。

图1:MOSI 和 SCLK

图2:SCS 和 SCLK

图3:MISO (全部为1)和 SCLK

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

    Arduino 方法与 Tensy 方法有何区别?

    此致、

    -Adam
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Adam:
    感谢您的回答。 两者之间没有电路差异、我们也使用了相同的代码结构(包括 SPI.h 库、设置 SPI 时钟频率​、一个写入序列、一个延迟和一个读取序列)。
    代码片段:

    #include


    SPISettings 设置(1000000、MSBFIRST、SPI_MODE0);
    const int slavePIN = 10;

    void setup(){
    Serial.begin(9600);
    PinMode (slavePIN、输出);
    digitalWrite (slavePIN、low);

    SPI.begin();


    void loop(){
    SPI.beginTransaction(settings);
    digitalWrite (slavePIN、HIGH);//将其驱动为高电平以启动 DRV8308EVM 的串行接口
    SPI.transfer (B00000000);//first 0表示写入命令、剩余0表示0x00寄存器的地址
    SPI.transfer (B00000000);//写入第一个字节
    SPI.transfer (B10000000);//写入第二个字节
    digitalWrite (slavePIN、low);
    延迟(1);

    digitalWrite (slavePIN、HIGH);
    SPI.transfer (B10000000);//first 1表示读取命令、其余0表示0x00寄存器的地址
    unsigned int A0x00p = SPI.transfer16 (0);//忽略数据、因为读取命令是在此之前发送的
    serial.println (A0x00p、bin);
    digitalWrite (slavePIN、low);

    spi.endTransaction();
    延迟(100);


    我们还通过在 PJRC (forum.pjrc.com/.../55103-SPI-Slave)上使用此帖子中的示例代码尝试进行 teensy 3.6至 tensy 3.6主从 SPI 通信、验证了 teensy 3.6是否正常工作。

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

    很遗憾、我无法从这里调试它。 电压电平是否相同?

    此致、

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

    您能否指定您所指的电压?

    我们现在也面临一个新问题,就像昨天一样。 我们尝试恢复到代码的工作版本(使用 Arduino Uno)、然后我们开始面临同样的问题、即从 DRV8308EVM 的 SPI 寄存器只读取1。 我们还使用 GUI (以前工作过)再次尝试了它、现在电机也不能使用 GUI。 我们无法使用 GUI 的"Read"按钮读取故障寄存器值(显示的值为65536)。 GUI 上的故障和锁定指示灯在时钟频率模式下为红色、我们注意到 DRV8308变得非常热。 我们使用24V 电源运行 EVM。

    我们不确定如何继续执行故障排除过程、如果有任何帮助、我们将不胜感激! 谢谢你。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Ahalya

    EVM 可能已损坏。 您能给我展示一下您的设置吗?

    您还可以尝试其他 EVM 吗?

    此致、

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

    尊敬的 Adam:

    感谢您的响应-我已附上我们当前使用 GUI 尝试进行的设置(类似于 DRV8308EVM 指南中提到的电路)图片。

    正如我之前提到 的、我们最初能够让 TelcoMotion DT4260-24-055-04h-TI BLDC 与 GUI 一起工作、然后是 Arduino Uno (但不是 tensy 3.6)。 我们还在 EVM 和 Arduino 中使用了另一个电机(Maxon 电机、器件型号:251601)、并且运行良好。 但是、之后、我们再次使用 GUI 进行了尝试、但它不再起作用。 此帖子随附了 Maxon 电机的规格表。 其标称电流额定值为2.33A、堵转电流为23.3A。 我们 没有更改板载的 RISENSE 电阻器值。 当我们将 EVM 与另一个电机配合使用时、EVM 是否可能损坏?

    e2e.ti.com/.../maxon251601.pdf

    谢谢你。

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

    您的设置图像没有显示。 使用另一个电机不应损坏 EVM。

    此致、

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

    尊敬的 Adam:

    我再次尝试附加设置映像。 在此图中、我们尝试使用 GUI 来操作套件附带的电机。

    这是我们唯一的 EVM、因此我们已经订购了更多 DRV8308EVM、它们很快就会到达、但我们不知道为什么这个 EVM 停止工作、我们希望能够了解原因、这样新电路板就不会发生这种情况。 谢谢!

    -Ahalya  

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

    我不确定是什么造成了损坏、但我怀疑 Rsense 电阻器是造成损坏的原因。 电机是否曾加载或突然停止?

    此致、

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

    我们没有加载电机-当我们使用 Arduino Uno 尝试它时、我们向速度寄存器写入速度值、并在代码中启用/禁用电机以在短时间内运行。

    谢谢!