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.

[参考译文] ADS112U04EVM:UART python 脚本无响应

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/970887/ads112u04evm-no-response-from-uart-python-script

器件型号:ADS112U04EVM
主题中讨论的其他器件: ADS112U04MAX232ADS122U04

您好!

我当前正在尝试更改 ADS112U04EVM 上的配置寄存器、但在尝试读取寄存器或手动获取转换结果时、器件没有响应。

我已经在该器件上阅读了一些文章、我认为我在软件方面做的一切都是正确的。 无论如何、我已经在下面发布了大部分内容。 我已通过 PuTTy 检查计算机的写入输出来确认其工作正常。

该器件上还有很多跳线和开关。 我尝试通过在 JP1上短接来停止器件上的 Tiva 处理器、这没有任何变化。 我还想知道是否需要将 J3上的 GPIO1引脚拉为高电平、因为非 EVM 版本的数据表显示必须将其上拉才能执行 TI 上一篇文章中所述的命令、 但是、对于 EVM 版本、它不会这样说。  

代码如下:

----

#set 串行数据
SER = serial.Serial ('/dev/ttymxc0、115200、字节大小= serial.EIGHTBITS、stopbits=serial.stopbits_one、timeout=1)

复位
SER.WRITE (struct.pack ('!BB'、0x55、0x06))
SER.FlushOutput ()
时间睡眠(0.1)

用于连续转换的#SET 寄存器
SER.WRITE (struct.pack ('!BB'、0x55、0x22))          #read config register 1 -应为0x00
SER.flushOutput ()()                           #send 缓冲区中剩下的所有内容
conf1_read = ser.read ().rstrip ()#read
打印("配置寄存器1")                        #test 语句
print (struct.unpackt ('!B'、conF1_read))            #show values
时间睡眠(0.1)

SER.WRITE (struct.pack ('!BBB'、0x55、0x42、0x48)   #SYNC WORD -写入寄存器1 -将数据更改为0x48
SER.FlushOutput ()
TIME.SLEEP (0.01)
SER.WRITE (struct.pack ('!BB'、0x55、0x22))         #SYNC word -再次读取配置寄存器1以确保写入工作正常
SER.FlushOutput ()
conf1_read = ser.read ().rstrip ()
打印("配置寄存器1")
print (struct.unpackt ('!B'、conF1_read))
SER.FlushOutput ()
TIME.SLEEP (0.01)

输出从 ADC 接收到的数据
当为真时:
开始/同步字节
SER.WRITE (struct.pack ('!BB'、0x55、0x08))          #START 转换命令
SER.FlushOutput ()
TIME.SLEEP (0.01)
SER.WRITE (struct.pack ('!BB'、0x55、0x10))          #read data (RDATA 字节)命令
SER.FlushOutput ()
received_data = ser.read().rstrip ()             #read 串行端口
DATA_LEFT = ser.inWaiting ()                    检查剩余字节
print (struct.unpackt ('!B'、received_data)         #print 到终端接收到的数据

----

感谢您的任何帮助!

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

    您好、ChT、

    欢迎来到 E2E 论坛!  将外部处理器与 ADS112U04EVM 配合使用时、经常会忽略几个方面。  在 JP1添加跳线时、板载微控制器保持复位状态(假设 USB 用于供电)。  EVM 上的电平转换器用作缓冲器、并在连接 JP1时禁用。  这意味着 RESET 引脚(J3上的连接)处于未确定状态、需要将该引脚上拉至 DVDD。

    另一个常见错误是、如果从外部电源为 EVM 的3.3V 电源供电、则不会出现5V 模拟电源。  ADS112U04的 AVDD 和 DVDD 电源都必须有效或器件保持复位状态。  因此、请确保 ADC 的所有电源均可用、并且 AVDD 的跳线处于有效位置。

    另一个潜在问题是在接收数据的同时发送数据。  ADS112U04不支持全双工、它将停止通信、如果同时发生 RX 和 TX、则需要对器件进行复位。

    此致、

    Bob B

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

    尊敬的 Bob:

    感谢你的帮助。

    我已将所有跳线放回用户指南中所示的默认位置。 我已确保 JP11将中间引脚和3.3V 引脚连接在一起。  
    然后、我将 J3上的 RESET 引脚的跳线连接到电路板上的 DVDD 引脚。 通过将 TP18 (AVDD 至 ADC)和 TP19 (DVDD 至 ADC)跨接至 GND、我可以在每个测试点测量3.3V 电压。 插入 USB 电缆后、这是正确的设置吗?我应该将 JP11移回5V 位置吗?

    在双工方面、虽然我目前使用的是 RS232、但我使用的是 TI 上一个问题中提出的代码、据说该问题有效(这用于调试目的)。 我还尝试了一个 RS485、但当我在端口上使用 SPI//时、它最终给了我不正确的 ASCII 字符。 但是,无论我在 ser.read()之前更改 time.sleep 命令多长时间,我仍然不会从 ADC 接收任何字节。

    我已经意识 到、当电路板上的处理器复位(s4按钮)时、当 JP1未短接时、我可以读取发送到 ADC 的值以写入配置寄存器值。 我还可以在 GUI 请求时读取发送到读取 ADC 的值、但即使在这种情况下、我也不会得到返回的字节、只会得到发送的字节。 它确实确认了我要发送的十六进制值是正确的。  

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

    您好、ChT、

    请参阅下面的我的回答。

    此致、

    Bob B

    [引用用户="Ch T"]

    尊敬的 Bob:

    感谢你的帮助。

    我已将所有跳线放回用户指南中所示的默认位置。 我已确保 JP11将中间引脚和3.3V 引脚连接在一起。  
    然后、我将 J3上的 RESET 引脚的跳线连接到电路板上的 DVDD 引脚。 通过将 TP18 (AVDD 至 ADC)和 TP19 (DVDD 至 ADC)跨接至 GND、我可以在每个测试点测量3.3V 电压。 插入 USB 电缆后、这是正确的设置吗?我应该将 JP11移回5V 位置吗? [BOB]我至少会从该电源配置开始、直到您能够使通信正常工作。  但是、如果您使用 USB 供电、则 JP11上的 AVDD 选择应在任一位置工作。

    在双工方面、虽然我目前使用的是 RS232、但我使用的是 TI 上一个问题中提出的代码、据说该问题有效(这用于调试目的)。 我还尝试了一个 RS485、但当我在端口上使用 SPI//时、它最终给了我不正确的 ASCII 字符。 但是,无论我在 ser.read()之前更改 time.sleep 命令多长时间,我仍然不会从 ADC 接收任何字节。 [BOB] RS232和 RS485是指某些类型的接口的标准。  ADS112U04使用异步串行通信、该通信在相对于 ADS112U04的 DVDD 电源电压的电压电平上以定义的波特率、奇偶校验和停止设置运行。  传输是二进制的(而不是 ASCII)、并且每次传输到 ADS112U04时必须包含同步字。 加电后、您是否尝试读取寄存器以查看是否得到响应?  此外、请确保来自 micro 的 TX 连接到 EVM 上的 RX、而来自 micro 的 RX 连接到 EVM 上的 TX。

    我已经意识 到、当电路板上的处理器复位(s4按钮)时、当 JP1未短接时、我可以读取发送到 ADC 的值以写入配置寄存器值。 我还可以在 GUI 请求时读取发送到读取 ADC 的值、但即使在这种情况下、我也不会得到返回的字节、只会得到发送的字节。 它确实确认了我要发送的十六进制值是正确的。 [BOB]首次使用 EVM 时、是否能够读取/写入寄存器并通过 GUI 收集数据?  如果一切都像原来一样连接到 EVM、则 ADS112U04应做出响应。  这种情况不起作用的任何原因都与 AVDD 和 DVDD 电源或 RESET 引脚保持低电平有关。  如果通过直接连接到3.3V 电源来使 RESET 引脚保持高电平、则器件可能未正确启动。  按下 S4调用处理器复位、也会对连接到原始配置中的 ADS112U04的复位引脚进行脉冲。  如果您比较来自固件的通信、您应该会看到来自代码的类似通信。  如果 ADS112U04最初工作但现在没有响应、如果在 EVM 或 ADS112U04未通电的情况下连接处理器、则器件可能已损坏。

    [/报价]

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

    尊敬的 Bob:

    很抱歉耽误你的时间。 我设法在 PC 和 ADC 之间进行通信(我认为我的脚本没有正确刷写输出缓冲器-需要一段时间。睡眠(0.01)之前)、但是我只能使用 TTL-RS232-3.3V USB 连接器进行通信。 这对于测试来说是可以的、但我确实需要这只是没有 TTL 的直接双线通信。 现在、我想知道 ADC 是否可以与+13V 至0V 信号通信?

    我认为这不是、但我希望得到一些确认、以防我需要一个 MAX232。

    此致

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

    您好、ChT、

    您只能与 ADS122U04 DVDD 电压范围内的逻辑电平器件进行通信。  如果您需要 RS232级别、则需要接口设备、如 MAX232。

    ADS122U04不能直接连接 RS232信号电平。  该器件的主要思想是跨越隔离栅、其中信号电平将处于接口器件的标准逻辑电平范围内。  当然、可以将 I/O 电平转换为其他协议和电压电平、例如 RS232、RS485等。

    此致、

    Bob B