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.

[参考译文] ADS131A04EVM:开始转换

Guru**** 2398695 points
Other Parts Discussed in Thread: ADS131A04, ADS131A04EVM

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/573006/ads131a04evm-starting-conversion

部件号:ADS131A04EVM
主题中讨论的其他部件:ADS131A04

您好,


我在设置ADS131A04时遇到问题。 我使用ADS131A04EVM,但将SPI线路连接到Raspberry Pi。 读写寄存器工作正常。 我将使用异步从模式,并且中断是由ADS131生成和接收的(由Pi),没有问题。 按照数据表图109,我设置一些我需要的寄存器,启用ADC,发送唤醒并锁定寄存器。 每个命令都按预期确认。 但是-我读取的帧中没有转换值。 我只连接了EVM的J7 (关于1.3 V的n输入,关于2.0 V的p输入),EVM的其余输入是打开的。 我希望所用输入的值相当准确,其他输入的值可能会有一些小的杂讯,但我只读了所有字节的"0"。 寄存器02h..05h不报告任何错误。 这里发生了什么,我错过了什么? 是否可能以数字输出为常量“0”的方式破坏模拟输入?

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

    您能给我发送您执行所有这些操作的确切顺序以及寄存器设置吗?

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

    Hallo Brian,


    我使用python脚本进行读/写:

    #!/usr/bin/python
    import spidev
    import time
    import rpi. gpio as gpio
    
    SPI = spidev.spiDev()
    spi. open(0,0)
    spi. mode = 0b01
    spi. max_speed_hz = 1600万
    
    GPIO.setmode(GPIO.BCM
    GPIO.setup(24,gPI.in,pull_up_down = gPI.pud_up)
    
    i = 0
    n = 0
    
    def
    
    寄存器(通道) 0h -读数02h 
    resp1 = SPI.xfer2 ([0x22,0x03,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00]) 响应2 = SPI.xfer2 ([0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00]) 响应3 = SPI.xfer2 ([0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00]) resp4 = SPI.xfer2 ([0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00]) n = n + 1 ,如果n = 100: 打印''.join(["0x%02x "% x for x in resp1]).strip() 打印''.join(["0x%02x "% x for x in resp2]).strip() 打印''.join(["0x%02x "% x for x in resp3]).strip() 打印''.join(["0x%02x "% x for x in resp4]).strip() 打印"" n =1 try: #避免位同步错误 或= SPI.xfer2([0x06,0x55,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00]) Time.SLEEP (0.1) resp = SPI.xfer2 ([0x05,0x55,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00]) #---------------------------------- # gpio.add_event_detect (24,gpio.falling,callback = Interrupt) #--中断生成在没有唤醒的情况下启动!!???? #-->>> TI-Blog:“预期行为”;等待Word 0xFF 0x04准备就绪,在 I == 0时启动解锁: i = i + 1 #--解锁 RESP = SPI.xfer2 ([0x06,0x55,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00]) 打印''.join(["0x%02x "% x for x in resp.).strip() #--读取所有寄存器 RESP = SPI.xfer2 ([0x20,0x14,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00]) 打印''.join (["0x%02x "% x for x in resp).strip() RESP = SPI.xfer2 ([0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00]) 打印''.join (["0x%02x "% x for x in resp).strip() RESP = SPI.xfer2 ([0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00]) 打印''.join (["0x%02x "% x for x in resp).strip() RESP = SPI.xfer2 ([0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00]) 打印''.join (["0x%02x "% x for x in resp).strip() RESP = SPI.xfer2 ([0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00]) 打印''.join (["0x%02x "% x for x in resp).strip() RESP = SPI.xfer2 ([0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00]) 打印''.join (["0x%02x "% x for x in resp).strip() RESP = SPI.xfer2 ([0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00]) 打印''.join (["0x%02x "% x for x in resp).strip() RESP = SPI.xfer2 ([0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00]) 打印''.join (["0x%02x "% x for x in resp).strip() RESP = SPI.xfer2 ([0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00]) 打印''.join (["0x%02x "% x for x in resp).strip() RESP = SPI.xfer2 ([0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00]) 打印''.join (["0x%02x "% x for x in resp).strip() RESP = SPI.xfer2 ([0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00]) 打印''.join (["0x%02x "% x for x in resp).strip() RESP = SPI.xfer2 ([0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00]) 打印''.join(["0x%02x "% x for x in resp).strip() #--锁 RESP = SPI.xfer2 ([0x05,0x55,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00]) 打印''.join(["0x%02x "% x for x in resp.).strip() #--等待锁定响应 RESP = SPI.xfer2 ([0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00]) 打印''.join (["0x%02x "% x for x in resp).strip() 打印"" Time.sleep(5) # end while i == 1: i = i + 1 #--解锁 RESP = SPI.xfer2 ([0x06,0x55,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00]) Print ''.join (["0x%02x "% x for x in resp.).strip() #-- CLK2 (0x0E):8 - fICLK/8,0 -闪存/4096 RESP = SPI.xfer2 ([0x4E,0x80,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00]) 打印''.JOIN (["0x%02x "% x for x in resp.).strip() #-- ADC_ENA (0x0F):F -启用所有ADC RESP = SPI.xfer2 ([0x4F,0x0F,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00]) 打印''.join(["0x%02x "% x for x in resp.).strip() #--唤醒 RESP = SPI.xfer2 ([0x33,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00]) 打印''.join(["0x%02x "% x for x in resp).strip() #--锁 RESP = SPI.xfer2 ([0x05,0x55,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00]) 打印''.join(["0x%02x "% x for x in resp.).strip() #--等待锁定响应 RESP = SPI.xfer2 ([0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00]) 打印''.join (["0x%02x "% x for x in resp).strip() RESP = SPI.xfer2 ([0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00]) 打印''.join (["0x%02x "% x for x in resp).strip() 打印"" gpio.add_event_detect (24,gpio.falling,回调=中断) Time.sleep(2) # end while i == 2: I = I + 1 #当 为True时结束: Time.sleep(1) # End while except KeyboardInterrupt: SPI.close() gPIO.cleanup() print "\nTschaui" print "" # end try.

    输出如下(除转换值的零外)所示:

    0xFF 0x04 0x00 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
    0x06 0x55 0x00 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x60
    0x14 0x00 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
    0x04 0x03 0x00 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
    0x00 0x00 0x00 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
    0x00 0x00 0x00 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
    0x00 0x01 0x00 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
    0x00 0x00 0x00 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
    0x00 0x60 0x00 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x3C
    0x08 0x00 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
    0x86 0x00 0x00 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
    0x00 0x00 0x00 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
    0x00 0x00 0x00 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
    0x00 0x00 0x00 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
    0x05 0x55 0x00 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
    
    0x22 0x00 0x00 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
    0x06 0x55 0x00 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
    0x2E 0x80 0x00 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
    0x2F 0x0F 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    0x33 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    0x05 0x55 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    0x22 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    
    0x22 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    0x62 0x03 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    
    0x22 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    0x62 0x03 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    
    0x22 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    0x62 0x03 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    
    
    Tschaui 

    如果我回答正确,我每秒大约有62个中断。 为了避免屏幕上出现大量数据,我每100组只写一次。 时间似乎还可以,即我大约每隔1秒就会看到一个新块。

    顺便说一句:我唯一无法解释的是每个块的第一个位置的值0x22,第一个块正确地以0xFF 0x04开头。

    您是否有建议使其发挥作用?

    此致

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

    我并不是要挑剔,但您是否可以在列表表单中总结您在序列中所做的工作,或许只是在列表中总结注册设置? 这样我就可以很容易地判断您的序列缺失了哪一部分。

    每个输出帧开头的0x22是"NULL"命令的"ACK"。 它只是表示设备正在下一个字节中报告寄存器0x02的内容。

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

    Hallo Brian,


    没问题,不多。 首先,我读取所有寄存器以获得完整的图片,即解锁,读取(0x20,0x14),锁定。 那么,我就这么做了

    - 0x06,0x55:解锁

    - 0x4E,0x80:CLK2寄存器,fICLK / 8,闪存模块/ 4096 (导致每秒62次中断)

    - 0x4F,0x0F:ADC_ENA,用于所有ADC

    - 0x33:唤醒

    - 0x05,0x55:锁定

    - 0x00:等待锁定响应

    在这个序列之后,我在Python中启用interrput例程。 模式PIN状态寄存器正确为0x01,所有写入命令均已正确确认。 生成中断,但通道数据为“0”。


    就是这样。 你有什么建议吗?

    此致

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

    我想我已经确定了错误。 尝试发送唤醒命令时,发送0x3300。 事实上,wakeup命令应该是0x0033。 您未收到F_OPC故障的原因是0x3300是一个有效的命令:RREG寄存器0x13 -其结果为0x00。 最后,您从不实际发送唤醒命令,因此所有转换结果都显示为0x00。 我相信如果你改变脚本中的一行,它应该是有效的。

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

    Hallo Brian,


    你说得完全对,这是我的错。 很难知道在这种特定情况下,响应是否与(错误)唤醒命令的响应完全相同。 非常感谢!!!


    此致

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

    我希望设置一些与您拥有的非常相似的设备。 我只是好奇,您的设置是否能够同时获得128ksps的全速率采样?

    -Daniel