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.

[参考译文] ADS1278EVM-PDK:使用 Raspberry Pi 通过 SPI 通信进行数据采集

Guru**** 2465890 points


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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1371315/ads1278evm-pdk-data-acquisition-via-spi-communication-using-raspberry-pi

器件型号:ADS1278EVM-PDK

工具与软件:

您好、我最近使用 ADS1278v2EVM 通过 SPI 通信向我的 Raspberry Pi 4b 采集数据。
我看到其他人这样做,有一个案例提供了部分线路和代码参考,我试图遵循他的思路,但我有一个问题,我不能解决:我不知道什么原因,我不能读取数据,我将详细解释我的理解下述问题;
非常希望你能给我一些帮助。

接通电源后,三个电源指示灯呈绿色,处于正常状态。

现在的问题是:我无法收集数据;在 SPI 协议中、DRDY 会在 SYNC 变为低电平时变为高电平;DRDY 会在 SYNC 恢复高电平后保持高电平、在其完成检索有效数据后变为低电平;故障排除和测试后、代码卡在"DRDY 不输出下降沿"。

我的 ADS1278V2EVM 和 Raspberry Pi 之间的接线如下所示:

J6 (中间两列对应于 ADS1278V2EVM 的 J6引脚、左列和右列对应于 Raspberry Pi 的引脚)    

:μ A GPIO6 FSDY SCLK SCLK
32:GPIO26 CLK DO1 MISO
0 DO2 业务3 0
0 DO4 DO5 0
0 DO6 DO7 0
0 DO8 DIN 穆西 接地
:μ A GPIO1 同步 EEWP 不接(原因未知)
接地 接地 接地 接地

J4 (在此处选择高速、SPI、TDM、固定模式、时钟输入分频为高速)

M0 M1 F0 F1 F2 CLKDIV
0:开路 0:开路 :Ω 短接 0:开路 0:开路 :Ω 短接

JP1、JP2:(所有3-2连接跳线)

JP1——3 JP2——3
JP1——2 JP2——2
开路——1 开路——1

我的代码是:

import RPi.GPIO as GPIO
import spidev

# SPI setting
spi = spidev.SpiDev()
spi.open(0,0)  # spi.open(bus,device),连接到指定设备
spi.max_speed_hz = 7800000  # SCLK frequency 根据树莓派SPI速度列表
spi.mode = 0b00  # C_POL=0, C_PHA=0;SCLK空闲时为低电平,第一个时间沿采样;
spi.no_cs = True  # 设置SPI_NO_CS标志是否使用CS,此处使用CS

# get bytes
def adc_1ch():  # 1channel
    data = spi.xfer([0x00,0x00,0x00])  # 24bits = 3bytes,读取
    adc = (data[0] << 16) + (data[1] << 8) + data[2]  # shift register,将data24字节的数据转化为数值
    if adc > (2**23-1):  # 2's complement
        adc = adc - 2**24
    voltage = (adc*2.5)/(2**23 - 1)  # 此处参考电压是V(REF) = 2.5V,
    return voltage

def adc_8ch():  # 8channel
    ch = []
    for i in range(8):
        ch.append(adc_1ch())
    return ch


# GPIO setting,将SYNC和CLK都设为1,高电平
# 该函数将GPIO引脚22设置为输入模式,并将其状态设置为高电平。
GPIO.setmode(GPIO.BOARD)
pins = [16, 32]   # 物理接口
# SYNC, CLK Select pin
volt = [1,1]  # 1=high, 0=low
for p in range(2):
    GPIO.setup(pins[p],GPIO.OUT)
    if volt[p] == 1:
        GPIO.output(pins[p],GPIO.HIGH)
    else:
        GPIO.output(pins[p],GPIO.LOW)
# (新款PCB板可以通过跳线设置高低电平,所以此处只有SYNC和CLK需要编程实现高低电平)
GPIO.setup(22,GPIO.IN)  # DRDY pin 该函数将GPIO引脚22设置为输入模式,并将其状态设置为高电平。


# main
i = 0  # timer
while True:  # loop 100 times
    GPIO.wait_for_edge(22, GPIO.FALLING)  # start to capture data when DRDY falling down
    print(adc_8ch())  # capture data
    i = i + 1
    if i == 100:  # timer stop
        break
GPIO.cleanup()

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

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

    您好!

    J4上的连接反相。  在 EVM 上、1 (高电平)开路、0 (低电平)短路。

    以下是正确的设置:

    J4 (在此处选择高速、SPI、TDM、固定模式、时钟输入分频为高速)

    M0        M1        F0        F1         F2          CLKDIV
    0:短接   0:短接   1:开路   0:闭合   0:闭合   1:开路

    此致、
    N·基思
    精密 ADC 应用

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

    非常感谢! 我已经解决了问题并成功地收集了数据,我已经编制了一份我遇到的最困难的问题列表,希望这将帮助任何人谁需要它在未来;e2e.ti.com/.../_C87E816748725F006C78F64EA563BF7E2B006F8FF64E167F0B7A4B6DD58BCF7EC78F_.pdf

    遇到的问题:

    1.运行代码后*不输出结果*或*加载时间长*的现象(解析)

    过程1:调试后、发现问题是由于 DRDY 没有下降沿且未被正确下拉所致;

    根据参考文献一和二,据推测,这是由** SCLK 没有输出 DRDY**所需的波形引起的;

    参考 I:正确的时序波形内容(同步同步)

    可通过将 SYNC 引脚拉至低电平、然后将引脚恢复为高电平来实现同步;当该引脚为低电平时、转换停止;当 SYNC 引脚恢复为高电平时、转换过程重新启动;

    在 SPI 协议中、一旦 SYNC 变为低电平、DRDY 变为高电平;SYNC 返回高电平后、** DRDY 保持高电平、一旦完成有效数据的检索、DRDY 变为低电平**;

    参考文献2:正确的时序波形内容(SPI 串行接口)

    SPI 兼容模式是一个只读接口。 DRDY 的下降沿输出指示数据准备好读取、并在 SCLK 的下降沿移出、MSB 在前面;

    **如果未检索到任何数据(即 SCLK 保持低电平)**,DRDY 在下一个转换数据准备就绪前脉冲为高电平;

    过程2:使用示波器观察 SCLK 波形、发现该波形为正弦波形;CLK 类似正弦波;正常时钟信号应为矩形波;

    使用示波器探头观察接地线。 未接地是方波?

    参考1:降低通信速率;

    **将 f_SCLK 设置为7629或15200,发现您可以开始输出结果,并可再次增加 SCLK 频率**;!!!!!

    参考文献2:检查接地;

    请务必多次检查线路;

    参考文献3:缩短信号线;

    额外的信号线确实会对信号产生噪声影响;由于使用示波器来观察信号、因此向试验电路板的传输经过了大量的传输线;移除并重新检查后:CLK 波形更接近矩形波形、SCLK 也得到了改善;

    怀疑一:SCLK 波形

    SCLK 波形是否在0V 时上下波动、与正弦波和矩形波形相似?

    2、每个通道的实际数量是奇怪的(解出来的)

    现象:信号采集后1-4个通道显示约1.65V;5-8个通道信号显示约0V;

    怀疑数据转移问题、但在测试后发现为正常现象:

    1-4通道 AIP1、GND 电压为1.65V;

    5-8通道 AIP1和 GND 电压为0V;

    在5通道1 7电池中为1.65V、其输出为1.65V;

    将通道1-4短路时、它们的输出均为0V;