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.

[参考译文] TIDA-00151:自动驾驶 RC 汽车

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

https://e2e.ti.com/support/tools/simulation-hardware-system-design-tools-group/sim-hw-system-design/f/simulation-hardware-system-design-tools-forum/728573/tida-00151-self-driving-rc-car

器件型号:TIDA-00151
主题中讨论的其他器件: PGA450-Q1MSP-EXP430F5529ENERGIAPGA450Q1EVM

大家好、TI、再次来看一下。

我目前正在使用 PGA450 (TIDA-00151)、正如 Arduino Mega 所述。 我在驱动系统时遇到问题。 如何启动系统以开始为我提供数据? 我是否必须输入特定序列? 我看到了您建议的 UART 命令、但它们似乎没有执行任何操作。

如果有任何帮助,我们将不胜感激。 老实说,我对它为什么不会产生数据感到失落。

谢谢。

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

    您好、Jared、

    我怀疑您的目标地址可能与 EEPROM 地址0x1F 中存储的地址不匹配。

    如果您购买了预编程的 TIDA-00151 (EVM-S)参考设计,则可以按照 UART 演示指导( www.ti.com/.../sldu019b.pdf )的第2节中的说明使用以下 UART 命令:

    • 命令0—测试 UART 通信。
    • 命令1—触发短距离或长距离突发并使用硬编码驱动和接收设置进行捕获。
    • 命令2—读取检测到的最接近物体的阈值交叉的第一个实例。
    • 命令3—更新 EEPROM 值。
    • 命令4—读取所有768字节的 FIFO 数据。
    • 命令5—根据驱动和接收设置的 EEPROM 配置突发和捕获超声波配置文件。
    • 命令6—所选运行模式(短或长)的阈值报告。
    • 命令7—未在示例固件中使用。 为自定义用户定义函数保留。

    预编程的 EMV-S 是 EEPROM 寄存器、地址0x1F 被编程为0x01的器件地址值(请参阅 UART 演示指导的表3)。 发出 UART 命令时、请确保字节2的四个 LSB 在本例中设置为0x1。

    例如、使用 Command0测试 UART 通信、发送:{0x00、0x55、0x01、0x00}、 PGA450-Q1将使用{0x12、0x34}进行响应。

    如果器件的 EEPROM 未在我们的合同制造商处进行 EEPROM 编程、则默认 EEPROM 值为0x00或0xAA。

    • 如果 addr=0x00、请尝试发送: {0x00、0x55、0x00、0x00}。
    • 如果 addr=0xAA、则需要将 EEPROM 地址0x1F 的值更新为0x00到0x0F 之间、因为第一个 LSB 仅由 UART 命令检查。 要更新 EEPROM、您需要使用 SPI 接口来设置内部复位状态、然后手动将 EEPROM 地址0x1F 写入并编程到所需的值。 数据表的"7.4.3重置"部分介绍了如何将微控制器置于复位状态、数据表的"7.5.1 SPI 接口"部分介绍了通过 SPI 更新 EEPROM 的过程。 将该 EEPROM 值更新为<=0x0F 后、可以使用 UART 命令3向前更新 EEPROM (不再需要 SPI)。

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

    当我单击演示的链接时、由于某种原因、它不会带我到那里。 可以帮帮我吗?

    非常感谢
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Jared、
    抱歉、将 E2E 链接放在括号之间时很容易断开。 修复了上面的链接、并在下面重新打印。

    PGA450Q1EVM-S 用户指南和 TIDA-00151 UART 演示指导应用手册: www.ti.com/.../sldu019b.pdf
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Akeem:

    感谢你的帮助。 此器件是否与面向 Arduino 的 UART 兼容? 您对此有什么经验吗? 我尝试了多种发送字节的方法、我尝试了0x00和0x0F 之间的所有不同十六进制地址、只是为了确保在意外情况下不会以不同的方式对其进行编程、 我已经在 Arduino 上尝试过多种不同的板和不同的 UART 端口(我目前正在使用 MEGA)。

    器件如何响应? 它是在接收到该序列后立即发送字节、还是具有缓冲周期? 我唯一要尝试的是更改 Arduino 读取字节的方式、或者尝试通过 SPI 端口进行报告、正如您的数据表所建议的、如果我没有获得正确的数据。

    对这一问题的任何建议都是如此。

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

    您好、Jared、
    PGA450-Q1应与任何 UART 主器件兼容、包括 Arduino。 PGA450-Q1的逻辑电平为5V、因此 UART 端口可直接连接到 Arduino、而无需电平转换。 我尚未在 Arduino 上测试 PGA450-Q1、但已确认我们的器件与 Energia 中的 MSP-EXP430F5529 LaunchPad 兼容(与 Arudino 相同的 IDE 和顶级语言)。
    您可以  在超声波常见问题解答页面 e2e.ti.com/.../640810上找到要导入到 Arduino 中的 PGA450Q1EVM-S 演示的 Energia 演示代码、作为"PGA450-Q1 UART 演示 Energia 代码(Beta 版本):PGA450Q1EVMS_UART_Demo.ino" ino sketch 文件下载。 您应该能够直接在 Arduino 中运行此项目(具体取决于您使用的串行端口-此项目使用 Serial1)。

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

    首先、感谢您为此项目提供的所有帮助。 我仍然有问题。 我目前仍然没有在电路板上接受良好的测试。 当我运行测试命令时、它仅发送255、这不是它根据数据表应发回的命令。 我想继续检查编程。 你们建议如何连接计算机? 只需 SPI 至 USB 连接?

    请告诉我并感谢一顿。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Jared、

    是的、必须使用 SPI 来检查 PGA450-Q1的已编程状态。
    使用满量程 PGA450Q1EVM 中的 TI-GER 电路板时,EVM 用户指南( www.ti.com/.../sldu007c.pdf )的“8.5 OTP"和“8.6 DEVRAM"部分介绍了 PGA450-Q1 8051 MCU 的检查和编程过程。 要将 TI-GER 板连接到 PGA450Q1EVM-S 小型模块,请参阅 EVM-S 用户指南( www.ti.com/.../sldu019b.pdf )图2上的 TI-GER SPI 连接。

    如果您没有 TI-GER 电路板、则可以使用具有 SPI 或 USB-TO-SPI 器件的5V 逻辑电平 MCU、通过先将器件设置为复位状态、然后手动读取 OTP 地址0x0000、0x0001和0x0002来检查 OTP 是否已进行编程。 如果这些地址上的值分别为0x02、0x20和0x00、那么器件已经被 OTP 编程为无条件长跳转至 DEVRAM、并且您应该能够对器件进行 DEVRAM 编程。 有关 如何将8051 MCU 置于活动或复位状态的信息,请参阅 PGA450-Q1数据表(www.ti.com/.../pga450-q1)的“7.4.3 RESET”部分。 MCU 在加电时始终处于激活状态。

    您还可以读取 OTP 存储器的所有8kB、以检查是否已对其进行编程。 如果所有 OTP 值都为零、则器件根本没有编程。 请参阅 PGA450-Q1数据表( www.ti.com/.../pga450-q1 )的"7.5编程"部分,了解如何使用 SPI 对 OTP 进行编程。 数据表表表表15显示了各种存储器(OTP、DEVRAM、ESFR 等)的 SPI 读/写命令的结构。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Akeem、您好!

    如何获得 TI-GER 电路板? 我目前能够通过 Arduino 从 EVM-S 板获取信息、但它看起来充其量只是随机的。 当使用你们提供的演示程序发送测试命令时、它目前正按此顺序发回0、34、83、255。

    我至少知道地址已正确编程、它会看到我发送的数据、因为它不会与其他地址发生反应。 但是、它不会像我所期望的那样对命令做出反应。 例如、如果我尝试使用命令4读取所有数据、它不会发送任何数据。 当我单击命令6时、它不发送任何内容。 但是、当我使用命令1或5时、它会作出反应并发送不同的字节。 它也对命令2反应良好。

    我是否可以在无需购买满量程 EVM 的情况下获得 TI-GER 板? 满量程 EVM 板无法在我的应用中工作、因为它会占用太多空间、这就是我尝试将 EVM 板与 Arduino MEGA 配合使用的原因。

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

    您好、Jared、

    遗憾的是、TI-GER 电路板无法单独购买。 鉴于您的器件现在响应迅速、可能无需购买此工具进行调试。

    要确保正确配置 Arduino 的 UART 端口、请参阅 TI-GER 电路板的以下 UART 配置屏幕截图、并设置等效设置以匹配。

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

    这似乎是我的 UART 通信的设置方式。

    您建议如何完成此任务? 我们希望运行汽车、并具有4个传感器来检测汽车周围的物体、以便它可以自行驱动。 Arduino 似乎无法正常工作。 TI 是否有任何建议?

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

    扼要重述一下、以下是我对您情况的理解:
    1) 1)您有四个 PGA450Q1EVM-S (TIDA-00151)模块、这些模块使用 UART 演示代码进行了 OTP 预编程。
    2) 2)您正在使用 Arduino MCU 通过5V 逻辑电平 UART 与每个 EVM-S 模块进行通信。
    3) 3)您的 UART 端口配置为8位数据、无奇偶校验、一个停止位、19.2kBaud。
    4) 4)您在使用 COMMANE-0 (PGA450-Q1 UART 测试)时收到了 PGA450-Q1的响应"0、34、83、255"。 此命令的响应应为{0x12、0x23}、因此实际结果与预期结果不匹配。 这表明器件对 RxD 引脚上接收到的命令做出了响应、但实际输出或输出解释不正确。
    5) 5)您没有 TIGER 板来运行 EVM-S 用户指南中介绍的演示说明测试、因此您只依赖 Arduino。

    下面是一些其他问题、这些问题可能会对调试有所帮助:
    6) 6)您使用什么电源电压为 PGA450-Q1供电? PGA450-Q1需要7-18V 电压、因此 USB 电源不足。
    7) 7)您是否参考或将"PGA450Q1EVMS_UART_Demo.ino" Energia sketch 移植到 Arduino 中以运行 PGA450-Q1 UART 命令、或者您是否编写了自己的 sketch?
    8) 8)您是否能够在发送命令0时捕获 PGA450-Q1的 TxD 和 RxD 引脚的逻辑分析仪输出?