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.

[参考译文] PGA460-Q1:连接到 Arduino Uno_source 代码

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/840688/pga460-q1-interfaced-to-arduino-uno_source-code

器件型号:PGA460
主题中讨论的其他器件:、 ENERGIAMSP430F5529

您好!

  您能否与我分享用于连接 PGA460-Q1的 Arduino 源代码。我已经使用 PGA460-Q1驱动器 IC 和 Murata 传感器设计和开发了超声波传感器模块。我想将此传感器与 Arduino uno 集成以获取距离信息。请为此提供合适的源代码  

谢谢、此致

Sreejith S V

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

    Sreenejith、您好!

    对于 PGA460软件开发、我建议您从 PGA460软件开发指南 和 PGA460 Energia 库和代码示例 下载开始。 这些示例将帮助指导您了解 Energia 和 Arduino 微控制器套件的 USART (UART 和 SPI)特定示例。

    有关 USART 数据包的一般结构的信息、请参考 数据表中的"7.3.6.2.1 USART 异步模式"部分: http://www.ti.com/lit/ds/symlink/pga460-q1.pdf。 请注意 UART 配置的非默认2停止位要求。

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

    感谢 Akeem 的快速响应。我们将仔细查看这些文档、如果需要任何支持、请与您联系。

    谢谢、此致

    Sreejith

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

    我刚刚浏览了文档、尝试使用 Arduino id 编译代码、遇到了很多错误。我解决 了大部分错误、但仍然存在一些与库函数相关的错误。您可以向我分享适用于 Arduino IDE 和 Arduino 控制器的修改后代码。我的实际代码 目标是使用 Arduino 通过单线通信从传感器获取距离数据。传感器板已准备好使用 pga460和 Murata 传感器。

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

    我刚刚浏览了文档、尝试使用 Arduino id 编译代码、遇到了很多错误。我解决 了大部分错误、但仍然存在一些与库函数相关的错误。您可以向我分享适用于 Arduino IDE 和 Arduino 控制器的修改后代码。我的实际代码 目标是使用 Arduino 通过单线通信从传感器获取距离数据。传感器板已准备好使用 pga460 和 Murata 传感器。

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

    Sreenejith、您好!

    Arduino Uno 是否支持 Serial1? 该代码使用两个串行端口:一个用于与 PC 的串行通信、另一个用于与 PGA460的串行/UART 通信。

    要使 PGA460 Energia 库在 Arduino Mega 中运行、请执行以下操作:

    1) 1)从 PGA460EnergiaLibrary_vx.x.x 库文件夹中删除以下内容:"PGA460_SPI.CPP"、"PGA460_SPI.h"、"utility"文件夹。 PGA460的 SPI 功能专为 MSP430F5529微控制器定制。 SPI 支持仅通过 Energia 启用、目前不支持 Arduino。

    2) 2)替换 #include 的所有实例 添加到 #include 在库文件中(PGA40_USSC.h/.cpp)

    3) 3)在所有文件中、将"PUSH2"、"GREEND_LED"、"RED_LED"的任何引用更改为 Arduino 引脚编号。 这些指示符特定于 LaunchPad 的 Energia.h 文件。

    4) 4)从 PGA460_USSC.CPP 中的 initBoostXLPGA460函数中删除案例3。

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

    尊敬的 Akeem:

             感谢您的回复。我已经通过研究代码并为 Arduino IDE 进行了修改来解决了问题。已成功为 Arduino Mega 编译。我的传感器 PCB 制造正在进行中、组装后将使用 Arduino Mega 和传感器板测试此代码。将让您发布状态。

    我能否使用相同的代码连接多个传感器?多个传感器接口的接口是什么?

    我的假设是通过更改地址、我们可以使用一根导线接口连接多个传感器。为此、我需要在 Arduino 串行和传感器板之间连接串行至单线收发器芯片、并将所有传感器板 IO 线路连接到收发器输出?是这样的、请告诉我

    谢谢

    Sreejith

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

    Sreenejith、您好!  

    PGA460提供四种不同的接口:UART、SPI、OWU 和 TCI

    OWU 和 TCI 是以高电平电池为基准的汽车接口。 在这种情况下、您将需要一个收发器从 VPWR (即12V)电平转换为5V 以实现逻辑高电平。如果您的应用不是汽车应用、我建议您使用 UART 或 SPI、这样您就可以直接将 PGA460连接到 Arduino、而无需收发器。 不管怎样、UART/SPI 更易于使用。

    由于 PGA460具有三位软件地址(UART_ADDR)、因此在同一 UART 或 SPI 总线上最多可以有八个 PGA460s。 有关自动寻址的详细信息、请参阅 PGA460常见问题解答#4.4.11 (www.ti.com/.../slaa733):

    4.4.11 PGA460是否支持菊花链? 主控制器能否自动区分 PGA460 UART 地址并对其进行编程?  PGA460不支持菊花链自动寻址和自动从节点位置检测(SNPD)。 外部硬件或开关必须与外部主控制器结合使用、以便自动为连接到同一总线的多个 PGA460器件分配地址。 提供的示例可互换 IO 和 TX 引脚。 切换 IO 时、请务必选择额定电压为 VPWR (高达30V)的双向开关。 TX 引脚是一个单向引脚、额定电压为3.3V (默认值)或5.0V

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

    尊敬的 Akeem:

            我的带传感器板的 PGA460现已准备就绪、可使用 Arduino MEGA 开始测试。我将 TXD 和 RXD 引脚连接到 Arduino MEGA 的 RX0和 TX0、并提供12VDC 电源输入。但传感器没有响应。我已附上原理图和 Arduino 串行监视器屏幕截图。请检查并提出建议 以进行同样的故障排除

    此致

    Sreejith

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

    尊敬的 Akeem:

              我已经解决了问题、并从传感器获取物体距离数据。以下是问题

    1)我使用的是5V 微控制器、因此需要将100k 上拉电阻连接到5V

    2) 2) Arduino 中所需的 UART 通信端口为 TX1和 RX1  

    3)需要启用温度补偿寄存器位、否则请移除 MOSFET 并将接地端连接 到变压器次级引脚4

    您能给我建议 一下我的硬件所需的实际配置以及红色标记配置的含义。我正在使用 Murata MA58MF14-7N 传感器

    通信模式:0=UART,1=TCI,2=OneWireUART... 0
    UART kBaud:0=9.6、1=19.2、2=38.4、3=57.6、4=74.8、 5=115.2...0
    P1和 P2阈值:0=%25、1=50%或2=75%的最大值... ?
    4.传感器设置:0=Murata MA58MF14-7N,1=Murata MA40H1SR,x=Skip... 0
    TVG 范围:0=32-64dB、1=46-78dB、2=52-84dB 或3=58-90dB、x=Skip...?
    6.固定 TVG 电平:0=%25、1=50%或2=75%最大值、x=Skip... ?
    7.最小距离= 0.1m *字节... ?
    8.运行系统诊断程序?:0=No,1=Yes... 0
    9.回波数据转储:0=无、1=P1BL、2=P2BL、3=P1LO、4=P2LO、… ?
    正在刻录用户 EEPROM?:0=否,1=是... ?
    11.命令周期延迟:10ms *字节... ?
    12.要检测的对象数(1-8)=字节... 1
    13. PGA460的 UART 地址(0-7)=字节... 0

    此致

    Sreejith

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

    器件型号:PGA460

    你(们)好

     我还会在有物体或没有物体的情况下获得相同的超声波读数。打开和关闭电源有时会给出不同的测量值。  请为此提供合适的解决方案。

    我使用 Arduino MEGA 2560和 Murata MA58MF14-7N 换能器。

    此致

    Sreejith

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

    Sreenejith、您好!

    为了帮助调试您的问题、请提供:

    • 发送突发/监听命令前后的 PGA460 EEPROM 寄存器值。
    • 至少一个物体的超声波测量结果
    • 至少一次测量的回波数据转储

    在下电上电之前和之后发送这些项目。

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

    Sreejith、

    您标记为红色的项目可描述如下(从 PGA460 Energia 库和代码示例 下载的 PGA460_USSC.cpp 文件中)。

    如果您没有从 EVM-GUI 评估中预先确定的 PGA460 EEPROM 寄存器值、请使用阈值和 TVG 设置的中间代码值作为起点。

    项目3:

    /*----------------- initThresholds ----

    |函数 initThresholds
    |
    |目的:更新两个预设的阈值映射、并执行批量阈值写入
    |
    |参数:
    | THR (IN)--根据最大电平的特定百分比将所有阈值电平更新为固定电平。
    |所有时间均为中码(1.4ms 间隔)。
    |修改现有的条件语句,或附加其他条件语句以进行自定义用户阈值配置。
    |•0 = 25%、第64级、共255个
    |•1 = 50%、第128级、共255个
    |•2 = 75%级别192、共255个
    |
    |返回:无
    ******-------------------------------------------------------------------------------------------- *

    项目#5&6:

    /*----------------- initTVG --
    |函数 initTVG
    |
    |目的:更新时变增益(TVG)范围和映射、并执行大容量 TVG 写入
    |
    |参数:
    | AGR (IN)--更新 TVG 的模拟增益范围。
    |•0 = 32-64dB
    |•1 = 46-78dB
    |•2 = 52-84dB
    |•3 = 58-90dB
    | TVG (IN)--根据最大电平的特定百分比将所有 TVG 电平更新为固定电平。
    |所有时间均为中码(2.4ms 间隔)。
    |修改现有的案例语句、或为自定义用户 TVG 配置附加其他案例语句
    |•0 =范围的25%
    |•1 = 50%的范围级别
    |•2 = 75%级别的范围
    |
    |返回:无
    ******-------------------------------------------------------------------------------------------- *

    项目7:

    Energia 程序将忽略以10cm 为增量读取的小于最小距离值的任何物体。 设置为"0"以禁用此主控制器极短距离屏蔽。 这是在突发和/或衰减特征触发阈值捕获时实施的。

    项目9:

    /*----------------- runEchoDataDump ----
    |函数 runEchoDataDump
    |
    |用途:运行预设1或2突发和/或监听命令以捕获128字节的回波数据转储。
    |切换回波数据转储使能位以启用/禁用回波数据转储模式。
    |
    |参数:
    | PRESET (IN)--确定运行哪个预置命令:
    |•0 =预设1突发+监听命令
    |•1 =预设2突发+监听命令
    |•2 =预设1仅监听命令
    |•3 =预设2仅监听命令
    |•17 =预设1突发+监听广播命令
    |•18 =预设2突发+监听广播命令
    |•19 =预设1仅监听广播命令
    |•20 =预设2仅监听广播命令
    |
    |返回:无
    ******-------------------------------------------------------------------------------------------- *

    项目#10:

    /*----------------- BurrnEEPROM ----
    |函数 BurnEEPROM
    |
    |目的:烧写 EEPROM 以在加电后将工作/影子寄存器值保存到 EEPROM
    |循环使用 PGA460器件。 返回 EE_PGRM_OK 位以确定 EEPROM 烧写是否成功。
    |
    |参数:
    |无
    |
    |返回:EEPROM 程序成功的 bool 表示
    ******-------------------------------------------------------------------------------------------- *

    项目11:

    在主控制器上循环 Energia 程序时、每个突发/监听命令之间的时间量。 可在10ms 乘法器的延迟间隔内设置。

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

    感谢 Akeem 为您提供了详细的说明。现在我收到的是物体距离、它随各种配置设置而变化。

    但现在的问题是  ,无论是否存在物体,我都能获得相同的超声波读数。打开和关闭电源有时会给出不同的测量值。  请为此提供合适的解决方案。

    请找到以下示例对象检测结果和配置设置。

    配置   

    1.Communication 模式:0=UART、1=TCI、2=OneWireUART ... 0
    UART kBaud:0=9.6、1=19.2、2=38.4、3=57.6、4=74.8、 5=115.2...1.
    P1和 P2阈值:0=%25、1=50%或2=75%的最大值... 0
    4.传感器设置:0=Murata MA58MF14-7N,1=Murata MA40H1SR,x=Skip... 0
    TVG 范围:0=32-64dB、1=46-78dB、2=52-84dB 或3=58-90dB、x=Skip... 2.
    6.固定 TVG 电平:0=%25、1=50%或2=75%最大值、x=Skip... 1
    7.最小距离= 0.1m *字节... 1
    8.运行系统诊断程序?:0=No,1=Yes... 1
    9.回波数据转储:0=无、1=P1BL、2=P2BL、3=P1LO、4=P2LO、… 0
    正在刻录用户 EEPROM?:0=否,1=是... 0
    11.命令周期延迟:10ms *字节... 5.
    12.要检测的对象数(1-8)=字节... 8.
    13. PGA460的 UART 地址(0-7)=字节... 0

    初始结果

    P1对象1距离(m):8.90
    P1对象2距离(m):1.00
    P1对象3距离(m):10.49
    P1对象4距离(m):7.50
    P1对象5距离(m):11.14
    P1对象6距离(m):9.56
    P1对象7距离(m):10.50
    P1对象8距离(m):0.90

    一个下电上电后的结果

    P1对象1距离(m):9.61
    P1对象2距离(m):2.40
    P1对象3距离(m):10.48
    P1对象4距离(m):7.67
    P1对象5距离(m):11.14
    P1对象6距离(m):9.56
    P1对象7距离(m):10.50
    P1对象8距离(m):0.90

     

    此致

    Sreejith

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

    尊敬的 Akeem:

              感谢您的回复。请告诉我如何获取这些值(EEPROM 寄存器和回显数据转储)、因为我使用 Arduino Mega 和 Arduino IDE 来运行主代码并在串行监视器上仅获取距离信息。

    此致

    Sreejith

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

    谢谢 Akeem。

    现在、问题总是得到相同的值、直到每个电源打开/关闭周期和 EEPROM 写入显示始终失败

    此致

    Sreejith

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

    Sreejith、

    每次捕获时、您尝试检测多少个对象? 您正在打印 PGA460可以报告的最大对象数、即8。 无论如何、结果无效、因为单次捕获中的多个对象的距离值应始终为升序。

    您的结果如下:

    初始结果 一个下电上电后的结果

    P1对象1距离(m):8.90
    P1对象2距离(m):1.00
    P1对象3距离(m):10.49
    P1对象4距离(m):7.50
    P1对象5距离(m):11.14
    P1对象6距离(m):9.56
    P1对象7距离(m):10.50
    P1对象8距离(m):0.90

    P1对象1距离(m):9.61
    P1对象2距离(m):2.40
    P1对象3距离(m):10.48
    P1对象4距离(m):7.67
    P1对象5距离(m):11.14
    P1对象6距离(m):9.56
    P1对象7距离(m):10.50
    P1对象8距离(m):0.90

    输出的正确表示应显示为:

    初始结果
    P1对象1距离(m):0.90
    P1对象2距离(m): 1.00
    P1对象3距离(m):7.50
    P1对象4距离(m):8.00
    P1对象5距离(m):8.90
    P1对象6距离(m):9.56
    P1对象7距离(m):10.49
    P1对象8距离(m):10.50

    需要检查的几件事:

    1. 原始飞行时间值是多少? 超声波测量结果数组中的元素可能存在偏移、这就是您的结果在从飞行时间转换为距离时出现错误的原因。 有关报告原始超声波测量结果值的说明、请参阅相关文章 :https://e2e.ti.com/support/sensors/f/1023/p/849269/3142148#3142148
    2. 要读取回波数据转储值、请根据您要观察的预设值将输入选项#9设置为1或2:回波数据转储:0=None、1=P1BL、2=P2BL、3=P1LO、4=P2LO、... (1或2) 3.
    3. 如果没有连接传感器、结果会发生变化吗?

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

    感谢 Akeem 的回复。请找到以下结果

    1. 原始飞行时间值是多少? 超声波测量结果数组中的元素可能存在偏移、这就是您的结果在从飞行时间转换为距离时出现错误的原因。

    结果,在像这样更改库代码后

    案例0://Obj1距离(m)

       objDist =(ultraMeasResult[1]<8)+ ultraMeasResult[2];
       objReturn=objDisist;//跳过 ToF 进行距离转换//(objDist/2*0.000001*speedSound)- digitalDelay;
       中断;

    9.回波数据转储:0=无、1=P1BL、2=P2BL、3=P1LO、4=P2LO、… 2.
    正在刻录用户 EEPROM?:0=否,1=是... 0
    11.命令周期延迟:10ms *字节... 5.
    12.要检测的对象数(1-8)=字节... 8.
    13. PGA460的 UART 地址(0-7)=字节... 0
    使用所选设置配置 PGA460。 等待...
    系统诊断-频率(kHz):16.81
    系统诊断-衰减周期(us):1232.00
    系统诊断-芯片温度(C):-30.00
    系统诊断-噪音级别:71.00
    正在检索回波数据转储配置文件。 等待...
    255,220,55,61,183,246,63,191,191,191,191,191,191,191,191,191,191,191,191,191,187,87,87,61,183,243,251,48,247,187,187,83,166,1986,208,541,131,192,182,182,182,137,182,137,192,572,152,146,192,152,142,182,182,182,182,192,182,192,152,51,51,51,51,51,192,192,182,182,192,182,192,192,182,182,192,192,186,193,193,196,196,193,192,182,192,182,182,182,192,182,192,186,196,193,192,192,182,182,192,192,192,186,196,193,192,192,182,182,182,182,192,182,182,182,192,182,192,182,192,182,182,192,182,182,182,192,182,18
    P1对象2距离(m):1.41
    P1对象6距离(m):7.48
    P1对象7距离(m):1.41
    P1对象8距离(m):7.01
    P1对象2距离(m):1.41
    P1对象6距离(m):7.48
    P1对象7距离(m):1.41
    P1对象8距离(m):7.01
    P1对象2距离(m):1.41
    P1对象6距离(m):7.48
    P1对象7距离(m):1.41

    1. 要读取回波数据转储值、请根据您要观察的预设值将输入选项#9设置为1或2:回波数据转储:0=None、1=P1BL、2=P2BL、3=P1LO、4=P2LO、... (1或2) 3.

    9.回波数据转储:0=无、1=P1BL、2=P2BL、3=P1LO、4=P2LO、… 2.
    正在刻录用户 EEPROM?:0=否,1=是... 0
    11.命令周期延迟:10ms *字节... 5.
    12.要检测的对象数(1-8)=字节... 8.
    13. PGA460的 UART 地址(0-7)=字节... 0
    使用所选设置配置 PGA460。 等待...
    系统诊断-频率(kHz):16.81
    系统诊断-衰减周期(us):1232.00
    系统诊断-芯片温度(C):-30.00
    系统诊断-噪音级别:77.00
    正在检索回波数据转储配置文件。 等待...
    255,220,55,61,183,246,63,191,191,191,191,191,191,191,191,191,191,191,191,191,187,87,87,61,183,243,251,48,247,187,187,187,83,166,185,186,192,187,182,186,192,186,71,262,152,176,192,152,152,146,192,152,152,146,196,192,146,192,152,152,152,146,192,152,152,146,192,146,192,152,146,192,152,146,192,152,152,146,192,146,192,152,146,192,146,192,152,146,192,152,152,146,192,152,152,146,192,146,192,146,192,146,192,146,192,146,192,152,146,192,152,146,192,146,192,146,192,146,192,146,192,146,192,146,192,146,192,14
    P1对象1距离(m):5.98
    P1对象2距离(m):1.41
    P1对象6距离(m):7.48
    P1对象7距离(m):1.41
    P1对象8距离(m):7.01
    P1对象1距离(m):5.98
    P1对象2距离(m):1.41
    P1对象6距离(m):7.48

    1. 如果没有连接传感器、结果会发生变化吗?

    无传感器,结果

    9.回波数据转储:0=无、1=P1BL、2=P2BL、3=P1LO、4=P2LO、… 2.
    正在刻录用户 EEPROM?:0=否,1=是... 0
    11.命令周期延迟:10ms *字节... 5.
    12.要检测的对象数(1-8)=字节... 8.
    13. PGA460的 UART 地址(0-7)=字节... 0
    使用所选设置配置 PGA460。 等待...
    系统诊断-频率(kHz):16.81
    系统诊断-衰减周期(us):1232.00
    系统诊断-芯片温度(C):-30.00
    系统诊断-噪音级别:70.00
    正在检索回波数据转储配置文件。 等待...
    255,220,55,61,183,246,63,191,191,191,191,191,191,191,191,191,191,191,191,191,187,87,87,61,183,243,251,48,247,187,187,187,83,166,186,186,196,206,192,182,182,187,187,187,187,186,72,136,196,196,196,203,262,152,152,152,152,152,146,196,196,203,196,246,196,196,246,196,193,262,152,152,146,196,196,196,246,196,192,152,152,146,196,196,192,152,152,152,146,196,246,196,192,152,152,146,196,196,192,152,146,196,246,196,192,152,152,152,146,192,146,192,146,196,192,152,146,192,152,146,196,196,192,152,152,152,152,14
    P1对象1距离(m):5.98
    P1对象2距离(m):1.41
    P1对象6距离(m):7.48
    P1对象7距离(m):1.41
    P1对象8距离(m):7.01
    P1对象1距离(m):5.98
    P1对象2距离(m):1.41

    在一个电源循环结果之后(无传感器)

    P1对象1距离(m):8.90
    P1对象2距离(m):0.91
    P1对象3距离(m):10.49
    P1对象4距离(m):7.50
    P1对象5距离(m):11.14
    P1对象6距离(m):10.96
    P1对象7距离(m):10.42
    P1对象8距离(m):0.29

    此致

    Sreejith

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

    更改8个对象的库代码后、接收到以下结果

    正在检索回波数据转储配置文件。 等待...
    255,220,55,61,183,246,63,191,191,191,191,191,191,191,191,191,191,191,191,191,187,87,87,61,183,243,251,48,247,187,187,83,166,1982,271,182,182,182,182,137,246,192,572,152,146,246,192,152,246,192,152,146,246,192,152,146,246,192,172,146,192,152,146,192,172,146,192,146,192,146,192,146,192,146,192,241,246,192,152,146,192,146,192,146,192,146,192,146,192,146,192,146,192,152,146,192,146,192,146,192,146,192,146,192,146,192,146,192,146,241,241,246,192,146,192,152,152,146,192,152,146,192,146,192,152,146,192,14
    读取测量结果时出错...读取测量结果时出错...读取测量结果时出错...无对象...
    读取测量结果时出错...读取测量结果时出错...读取测量结果时出错...无对象...

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

    尊敬的 Akeem:

             请根据上述结果通知我、并帮助我发布超声波传感器模块的测试版。

    您能告诉我您的空闲情况、以及方便通话的时间来讨论和解决我的传感器初始 PoC 版本的问题吗?

    此致

    Sreejith

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

    正在等待您的回复。

    此致

    Sreejith

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

    Sreenejith、您好!

    我推荐的调试方法是使用数字逻辑分析仪首先捕获物理 UART TXD 和 RXD 信号、以确保 Arduino 正确传输预期的 UART 数据包、并验证器件是否正确响应数据。 您的结果都不正确、这会导致我相信所捕获的 UART 元件阵列存在一些偏移、或者您的 UART 端口未在 Arduino 上正确配置。

    下面是一个实现原始 UART 命令的示例、而不是使用 PGA460 Energia 库函数。 尝试运行此示例、通过探测传感器的正极端子来检查是否有突发激励、从而确定 PGA460是否正在接收主发送的命令。 请注意、该准系统代码尚未包含命令5响应的终端捕获(超声波测量结果)、但允许您探测 UART TXD 和 RXD 引脚以确定是否存在有效的器件响应(通过逻辑分析仪/示波器):

    //注:用于向 PGA460发送突发/监听命令的裸机原始 UART 演示
    
    // cmd 0 - P1突发监听
    字节 buf0[4]={0x55、0x00、0x01、0xFE};
    // cmd 1 - P2突发监听
    字节 buf1[4]={0x55、0x01、0x01、0xFD};
    /cmd 5 -超声波测量(假设 UART_ADDR=0)
    字节 buf5[4]={0x55、0x05、0xFA};
    /cmd 10 -寄存器写入时间的十倍到4.096ms
    字节 buf10[5]={0x55、0x0A、0x26、0x00、0xCF};
    /cmd 17 -广播 P1突发监听
    字节 buf17[4]={0x55、0x11、0x01、0xED};
    /cmd 19 -广播 P1只监听
    字节 buf19[4]={0x55、0x13、0x01、0xEB};
    /cmd 25 -广播批量阈值写入
    字节 buf25[35]={0x55、0x88、0x88、0x88、0x88、0x88 0x88、0x88、0x88、0x84、0x21、 0x08、0x42、0x10、0x80、0x80、 0x80、0x80、0x00、0x88、0x88、 0x88、0x88、0x88、0x88、0x84、 0x21、0x08、0x42、0x10、0x80、 0x80、0x80、0x80、0x00、0x7C};
    
    const int buttonPin = PUSH2; //按钮引脚
    const int ledPin 的编号= RED_LED; // LED 引脚
    的编号 int buttonState = 0; //用于读取按钮状态
    
    void setup()的变量{pinMode
    
    (ledPin,输出);
    pinMode (buttonPin,input_pullup);
    delay (1000);
    
    //将设置代码放在此处,运行一次:
    Serial1.begin(19200);//初始化 PGA460 UART 串行通道
    延迟(1000);
    
    //假设 UART_ADDR=0
    //批量阈值写入中间代码值以清除 THR_CRC_ERR
    4.01.write (buf25、sizeof (buf25));
    delay (100);
    
    //[TODO ]将 rec P1设置为4.096ms
    
    //将 UART_ADDR=0的时间去耦到4.096ms
    Serial1.write (buf10、sizeof (buf10));
    delay (100);
    }
    
    void loop (){
    //将主代码放在此处,重复运行:
    
    //检查是否按下按钮。
    while (digitalRead (buttonPin)== HIGH){}
    
    //广播 P1突发+监听(不依赖于 UART_ADDR)
    SERIAL1.write (buf17、sizeof (buf17));
    
    //延迟100ms
    延迟(100);
    
    //[TODO ]在终端上打印超声波测量结果
    //从 UART_ADDR=0读回超声波测量结果
    SERIAL1.write (buf5、sizeof (buf5));
    
    //切换红色 LED
    digitalWrite (ledPin、!(digitalRead (ledPin)));//打开 LED (高电平表示电压电平)
    
    //每秒重复循环
    延迟(1000);
    } 

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

    谢谢 Akeem。

     将按照建议进行调试,并让您更新结果

    此致

    Sreejith

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

    尊敬的 Akeem:

              请在运行 裸机原始 UART 演示 code.please 检查时找到以下测试结果、并告知我您的建议。

    传感器正极端子波形

    UART TX 和 RX 波形

    此致

    Sreejith

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

    Sreejith、

    感谢您探测 XDCR+和 UART 信号。 这就证实了器件会使传感器发生突发、并且通信是完整的。 我看到的唯一问题是蓝色 UART 波形(我假设这是 PGA460-TXD 引脚)在某些点处于低电平空闲状态。 我建议您在 PGA460-TXD 引脚上添加一个弱上拉电阻器(10k Ω 或22k Ω)、以确保该引脚始终处于高电平空闲状态。 这可能会解释您收到的某些数据无法正确转换的原因。

    在典型的 UART 系统中、从器件应在 TXD 引脚上保持高电平空闲;然而、PGA460在 TXD 和 RXD 引脚上同时具有 SPI 和 UART 功能、因此默认情况下处于三态、因此您应尝试添加外部电阻器上拉电阻器。 您还可以尝试将主控制器的 UART-RXD 引脚配置为具有上拉电阻的输入、以实现类似的结果。

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

    出色的 Akeem。现在传感器正在工作。我在主 RX 侧放置了10k 上拉电阻。我仍在使用 此传感器以实现远距离多个物体。如果 需要、将允许您更新并请求支持

    非常感谢 Akeem。

    此致

    Sreejith

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

    您好、Akeem

             我无法获得大于1m 的物体距离。 我尝试了几个选项、但仍能达到1m。请建议我这样做

    此致

    Sreejith

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

    Sreejith、

    向我发送一份存储器映射配置副本(批量 EEPROM 读取- UART 命令11)、以及当对象处于30cm、50cm 和1m 时回波数据转储的三个输出(UART 命令7)。 这将有助于我了解为何无法检测1m 以外的物体。