您好!
我正在尝试从 ADS124S08获取读数。 使用 ANCOM (引脚1)作为负输入选择(ANCOM 接地)、在单端模式下对器件进行初始化。 我正在使用 Raspberry PI 4和 SPIDEV 库向芯片发送命令。
我随附了我的 python 代码以及在 Eagle 中设计的电路板布局。 我仅通过命令和读取寄存器与芯片进行通信。 我计划使用 AIN0-AIN11、但为了进行测试、我现在尝试使 AIN0正常工作。
---- 声明的寄存器--
输入多路复用器寄存器(0x0C)
增益设置寄存器(0xE0)
数据速率寄存器(0x74)
REF (0x19)
IDACMAG (0x00)
IDACMUX (0xFF)
VBIAS (0x00)
SYS (0X11)
OFCAL0 (0x00)
OFCAL1 (0x00)
OFCAL2 (0x00)
FSCAL0 (0x00)
FSCAL1 (0x00)
FSCAL2 (0x40)
GPIODAT (0x00)
GPIOCON (0x00)
从
时间导入 sleep
导入操作系统
导入 sys#clear
terminal
os.system ("clear")
sys.tracebacklimit = 0 #suppress traceback errors
#--- 初始化变量/命令--- #
SPI_BUS = 0 # spidev0
SPI_device = 0 # spidev0.0
SPI_clock = 125000 # 125kHz limit
# setup SPI
= spidev.SpiDev()
SPI.open (SPI_bus、SPI_device)
SPI.max_speed_Hz = SPI_clock
SPI.mode = 1
NOP = 0x00 #NO OPERATION 命令
WAKEUP = 0x02 #WAKEUP 命令
PWRDWN = 0x05 #POWERown 命令
复位= 0x06 #RESET 命令
START = 0x08 #START 命令
STOP = 0x0A #STOP 命令
RDATA = 0x13 #read data 命令
#function、用于处理 SPI 通信并将命令打印到终端
def 输出(varName、cmd):
打印(varName)
Print ("已发送到 ADC)------ >"、cmd)
DATA_IN =[]
DATA_IN = SPI.xfer (cmd、100000)
打印(f'从 ADC 接收-->{DATA_IN}')
打印("---------------------------------------------------------- ")
睡眠(0.3)
尝试:
编号-------------------------------------------------------- 初始化 ADC 发送--- 编号
输出("WAKEUP - 0x02"、[NOP、WAKEUP]) 唤醒 ADC
输出("reset- 0x06"、[NOP、reset]) 复位 ADC
输出("声明 PGA、数据速率、基准、计算寄存器"、[0x43、0x02、 0xE0、0x74、0x19])#从第3个寄存器开始并声明寄存器3、4、5
Output ("声明系统控制寄存器"、[0x49、0x00、0x11])#声明寄存器9
输出("到0x1C 的输入多路复用器"、[0x42、0x00、0x0C])
输出("START - 0x08"、[START]) #START ADC
N = 0
当为真时:
输出(f"[{n}]状态"、[0x21、0x00、0x00])
输出(f"[{n}] RDATA 命令"、[0x12、0x00、0x00、0x00、0x00])
N = n + 1
睡眠(3)
最后:
打印("正在停止...\n")
输出("stop"、[stop])
输出("PWRDWN"、[PWRDWN、NOP、NOP])
SPI.Close()
发送到 ADC 的读取状态位0x21 (十进制33)。 返回0x80 (十进制128或二进制0b10000000)。 这是因为未清除状态寄存器中用于测试的 FL_POR 标志。 寄存器中的 SENDSTAT 位已经被打开。 发送 RDATA 命令后、我应该会收到128个字节的信息、后跟3个字节的信息。 每次发出 RDATA 命令时、我都只收到0。
请提供任何帮助。 如果需要更多信息、请告诉我。


