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.

[参考译文] AFE4404:无需使用 TI 软件即可直接从光学传感器读取数据

Guru**** 2611705 points
Other Parts Discussed in Thread: AFE4404, AFE4404EVM

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/587332/afe4404-reading-data-directly-from-optical-sensor-without-using-ti-software

器件型号:AFE4404

我有一个 AFE4404光学传感器、我尝试在不使用 TI 软件包的情况下将数据直接读取到存储器中。 使用名为 PySerial 的 Python 软件包、我能够看到端口正在被读取、但当我从串行端口读取时、我没有返回任何数据。  

您对能够读取此数据的库(不需要特定于 Python)是否有任何建议?  

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

    我假设您有用于 AFE4404的 EVM、并且您希望在没有 TI 软件的情况下使用它。 在这种情况下、可使用 PySerial 来控制 EVM 以及从 EVM 读取数据。
    此外、在与 AFE4404EVM 通信时还需要遵循一个协议。 请参阅以下有关该协议的文章。
    e2e.ti.com/.../494542

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

    Prabin、您好!  

    感谢您的回复、我实际上是在讨论该模块的 EVM。  

    根据协议、我应该写入提供的位字符串;  
    例如  

    “0x01 0x2A 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x0D”  

    指定我要接收的数据类型(以上内容将用于连续数据)。  

    使用 Pyserial、我执行以下操作:  

    SER =串行.Serial (' ')#连接到器件
    
    ser.write ("0x01 0x2A 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x0D”)
    
    ser.read() 

    但我似乎仍然无法从器件接收任何数据。  

    我的方法是否过度简化了流程?  

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

    请按以下方式尝试一下。 传递命令的方式不正确,必须指定"ser.read()"命令的要读取的字节数。

    导入序列
    SER = serial.Serial ('COM13'、波特率= 9600、超时= 50)#开放串行端口
    Print (ser.name)#检查实际使用的端口
    SER.WRITE ("\x01\X2A\X30\X30\X30\X30\X30\X30\X30\X30\X0D")
    my_string = ser.read (22)
    在 my_string 中打印 n 的".join (hex (ord (n))"
    SER.CLOSE ()

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

    Prabin、您好!  

    再次感谢您的回复。 这似乎已经达到了目的!  

    我只是对我返回的数据的值有点困惑。

    运行 GUI 时、我始终会得到以十进制数表示的电压(例如:0.455、0.006、0.7975)、但在执行典型的脚本运行时、表中没有一列具有类似值:  

    my_string = ser.read (22)
    
    [x 表示 my_string 中的 x ]根据 Python 3.x
    
    #[1、2、160、89、0、 184、69、0、36、137、 2、48、166、0、0、 0、0、244、226、1、 0、13] 

    我尝试获取的值(即使在 LED2和 LED1列中)与在 GUI 中观察到的 LED1和 LED2列的值有何不同、是否有原因?这是我处理数据的方式的问题。  

    再次感谢。

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

    从原始数据中、您必须使用通信协议提取 AFE4404的输出。 也就是说、您必须从22个字节的数据中提取18个字节(6个通道、每个通道有3个字节)。
    提取后、您必须将每个通道的3个字节数据组合成24位数据(其中使用低22位)。
    生成的22位 ADC 代码必须转换为22_bit_data*1.2/(2^21)电压。

    所有上述数据操作都在 GUI 内部完成、以获取电压输出、而在您的情况下、您必须自行处理。

    此致、
    Prabin