FPGA控制ADS1256的ADC采集(三)

前两篇分别详解了ADS1256的数据手册以及代码分析,这篇文章来介绍一下实际操作以及精准分析。附上上一篇文章的链接:FPGA控制ADS1256的ADC采集(二)

测试

(1)4.69V电压测试
实际上本来想测的是FPGA管教上的5V,但是用万用表一测发现只有4.69V,分析了一下发现板子上的一个二极管压降导致的(不是自己画的板子),不过关系不大,4.69V也可以测。测试结果如下所示:
在这里插入图片描述
上图可见数据为77 6813h,转换为十进制就是7,825,427,每一个单位是2的23次方-1,所以最终的电压就是 2 × 2.5 × 7,825,427 /(2^23-1)= 4.664V。可以看到这边有一个25mv左右的误差。我陆陆续续测了十组数据,由于篇幅问题不一一贴上来了,我将它们打成excel图表,如下所示:
在这里插入图片描述
可以看到,误差主要集中在20——30mv之间(这让我很怀疑参考电压是否真的是5V,实验的时候,忘记了测一下了。。。),不过最大上下的波动依旧有4mv,这个我想和单端测量有很大的缘故,如果换成差分输入,波动幅度会小很多。

(2)3.353v电压测量
同理,我们来测一下3.353V的电压,同样附上一张ILA的截图以及excel表格:
在这里插入图片描述
在这里插入图片描述
可以看到,测量3.353V的误差集中在13——14mv之间,最大浮动误差有0.6mv。

工程链接

CSDN下载链接:FPGA控制ADS1256进行ADC采样
百度网盘下载链接:FPGA控制ADS1256进行ADC采样,提取码vde4。

结语与思考

分析完数据后发现单端测量的浮动其实是比较大的,我想第一和我的连接方式有关,杜邦线的稳定性未知,第二参考电压是否为准确的5.0V还有待考究,我想测得准确的参考电压后再测应该会准上不少,再加以差分输入,有希望将误差与浮动降到最低,这些我就给个参考方式,具体的实现就交给读者自己解决了,就是改个硬件条件,软件改个寄存器配置即可。如果有什么问题欢迎评论区指出。

### FPGAADS1251之间的接口设计 #### 接口概述 FPGAADS1251之间的通信主要依赖SPI协议。该协议允许主机(即FPGA)通过串行方式读取来自ADC的数据并对其进行配置。具体而言,SPI总线由四条线路组成:MOSI(Master Out Slave In)、MISO(Master In Slave Out)、SCLK(Serial Clock),以及CS(Chip Select)。这些信号用于发送命令、接收数据和同步操作。 #### 寄存器配置 为了使能ADS1251的功能,需先初始化一系列内部寄存器设置。这通常涉及向特定地址写入预定义值以调整增益、偏移校准和其他参数。例如,在启动阶段可能需要设定通道模式、滤波选项等[^2]。 ```python def configure_ads1251(fpga, register_address, value): """ 配置ADS1251的指定寄存器 参数: fpga (object): FPGA对象实例 register_address (int): 要访问的寄存器地址 value (bytearray or int): 待写入的新值 返回: None """ # 设置片选低电平激活器件 fpga.set_cs_low() # 发送指令字节至设备 fpga.spi_write([register_address | 0x80]) # 写命令加上最高表示写操作 # 如果value是一个整数,则将其转换成单个字节数组;如果是数组则保持不变 data_to_send = bytes([value]) if isinstance(value, int) else bytearray(value) # 将实际数值传送给目标寄存器 fpga.spi_write(data_to_send) # 结束传输前恢复片选状态 fpga.set_cs_high() ``` #### 数据采集流程 一旦完成了必要的初始配置之后,就可以开始周期性的从ADS1251获取测量结果。每次请求新样本时,都会经历如下过程: - **触发采样**:通过改变某些控制引脚的状态来指示ADC执行一次新的转换。 - **等待就绪**:监测DRDY(Data Ready)标志直到它表明有可用的有效数据。 - **读回结果**:利用SPI接口按顺序取出高到低的结果字节,并组合形成最终的二进制编码形式。 #### 应用场景举例 在一个典型的工业自动化环境中,可以见到这样的应用场景——温度监控系统。这里,多个热敏电阻连接到了不同输入端子上作为传感器元件。每当环境条件发生变化时,它们会产生相应的电压变化被传递给ADS1251处理。随后经过量化后的离散化信息会被转发给关联的PLC或其他控制系统作进一步分析决策之用。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值