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.

[参考译文] PGA450Q1EVM:Arduino Mega 的 TIDA-00151

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/795854/pga450q1evm-tida-00151-from-arduino-mega

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

你好!

 我没有从2019年4月购买的 PGA450Q1EVM-S (TIDA-00151)获得预期的响应、该器件在 Serial1 UART 上使用 Arduino Mega 进行连接、并使用 TI 的 sketch PGA450Q1EVMS_UART_Demo.ino 进行编程。

我的问题与 Jared Rawlins 在以下文章中提出的问题非常相似: http://e2e.ti.com/support/tools/sim-hw-system-design/f/234/p/728573/2749777#jktype=e2e&pi320995filter=all&pi320995scroll=false&pi320995=2

我用 13.8V、1A 直流电为 PGA450Q1EVM-S 供电、并将 Arduino 接地、当我运行 sketch 时、我从传感器单元接收看似随机的数据。 在论坛上、Jared 似乎没有解决他的问题。  

感谢您的建议。  

反复运行命令0、18次、然后运行命令1远距离、 然后运行命令2、6次、然后运行命令4、两次后从串行监视器输出、以便让您了解它的输出内容:

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

CMD1输入选择:0=侦听、1=短整型、2=长整型
255、255、
255、255、
255、255、
255、255、
255、255、
255、255、
错误-未从 PGA450-Q1接收数据。 SerialAvailable=1
错误-未从 PGA450-Q1接收数据。 SerialAvailable=1
0、255、

有时、命令0也返回:  

18、52、

更改 sketch 以将十六进制格式的字符串打印到串行监视器(使用: serial.print (UART_RX[n]、hex);)以响应重复的命令0调用、如下所示:  

FF、FF、
53、FF、
53、FF、
12、34、
FF、FF、
12、34、
FF、FF、
34、B9、
FF、FF、
FF、FF、
FF、FF、
FF、FF、
FF、FF、
FF、FF、
FF、FF、
FF、FF、
FF、FF、
FF、FF、
B9、FF、

  在 www.ti.com/.../sldu019b.pdf 中、我发现我应该希望在命令0调用后返回0x12、0x23。

感谢您的建议。  

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

    我应该澄清、PGA450Q1EVMS_UART_Demo.ino 尚未经过全面测试(测试版)、并且在处理响应数据时存在已知错误。 尽管我无法立即评估捕获如此多空闲响应字节(0xFF)的原因、但您似乎偶尔会看到来自 Cmd0的正确响应(校验和为0xB9的0x、12、34)。 让我来看看使用 LaunchPad (可能是 Arduino 问题)。

    我们正在努力争取正式/稳定地发布此演示固件、但直到本季度晚些时候才发布。 感谢您在测试版的同时进行实验。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Akeem:

    感谢您的回复。 我跟进三个子主题:

    1. 从你的信息中,我总结并思考以下几点:

    - 0xFF 表示传感器系统处于空闲状态。  

    -来自 cmd0的正确响应为0x12、0x34 (TI UART 指南文档指示0x12、0x23为正确响应),为什么有两种可能的响应?

    -校验和应该是来自 cmd0的0xB9,它是如何计算的?

    2.如果我的目标距离传感器1m、那么您能否逐步说明我应该执行什么命令调用以及预期的结果、以便使用我的设置进行距离测量?

    3.我很高兴在 Mega 上测试此固件的稳定版本,同时,由于这不像我想象的那样直接,您能不能就我需要购买什么来从该系统获取范围数据(TI launchpad? TIGER?、USB-FTDI 软件狗)?

    此致、

    Johannes Wiig  

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

    Johannes、您好!

    回应您的观点:

    1。

     -是的、如果主器件被强制读取 UART 而从器件却不表示数据可用、则0xFF 可能表示空闲状态。

     - CMD0只提供一个响应:0x12、0x24、0xB9。

     -校验和是根据 TIDA-00151 UART 和 LIN 演示固件中适用于 PGA450-Q1的示例代码函数"CHECKSUM_ADD_Cary "进行计算的:

    char 校验和_add_cary (char param1、char param2)

    union{unsigned short U16;unsigned char u8[2];}sum;

    sum.U16 = param1+param2;

    返回((Sum.u8[0]!=0 )? (sum.u8[1]+1):sum.u8[1]);

    2.触发突发/监听命令、然后读取结果的最基本示例是发送命令1、后跟命令2:

    命令1—触发短距离或长距离突发并使用硬编码驱动和接收设置进行捕获。 还读取检测到的最近物体的阈值交叉的第一个实例。

    示例十六进制条目:0x00、0x55、0x11、0x02、0x00

    其中:

      • •[0] 0x00:中断域
      • •[1] 0x55:同步字段
      • •[2] 0x11:1 =命令1。 1 = EEPROM 地址0x31中设置的传感器地址
      • •[3] 0x02:00 =侦听。 01 =短路。 02 =长整型

    命令2—读取检测到的最接近物体的阈值交叉的第一个实例。

    十六进制条目示例:0x00、0x55、0x21、0x00

    其中:

      • •[0] 0x00:中断域
      • •[1] 0x55:同步字段
      • •[2] 0x21:2 =命令2。 1 = EEPROM 地址0x31中设置的传感器地址
      • •[3] 0x00:忽略但需要校验和

    有关预定义 UART 命令的完整列表、请参阅 PGA450Q1EVM-S 用户指南和 TIDA-00151 UART 演示指导

    上述 UART 演示指导提供了一个示例、说明如何使用 PGA450Q1EVM 的 TI-GER 板收集测距数据。