TI ADS1299使用BUG记录

2023-10-25 20:30
文章标签 使用 记录 bug ti ads1299

本文主要是介绍TI ADS1299使用BUG记录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

如题,摊上一款应用难度超大的ADS1299

博主正在使用Xilinx Kintex-7作为主控芯片对ADS1299进行数据采集,在开发过程中需要自己设计ADS1299的驱动,发现可供参考的资料和blog比较有限,所以写下这篇博文,用于记录ADS1299开发过程中的各种BUG。后续项目完成会将ads1299_driver.v上传供大家食用,欢迎收藏和关注,帮你找到回家的路。

Q1 买的是ADS1299,为啥只能收到4个通道数据???淘宝骗我钱卖给我水货ADS1299-4?

在这里插入图片描述

A1: 初始化上电后nPWDN没有足够延时,给个250ms之后就可以解决问题

在这里插入图片描述
上图摘自ads1299 datasheet的图67,箭头处可以看见,上电后必须等待tpor时间后才能开始reset。(博主给了个250ms就解决问题了)

wkup_state:beginif(counter < t_por) //(t_por>>16 for simulation only)begincounter <= counter + 1;wkup_done <= 1'b0;endelsebeginSPI_nRST <= 1'b0;counter <= 32'd0;wkup_done <= 1'b1;endend

Q2: 单端驱动咋整?

A2:正在使用INxN作为模拟信号输入口进行验证

Q3: 我使用多个ADS1299进行通讯,其中一个ADS1299可以正常通信,也受到了8通道脑电数据(使用RDATA指令),但其他的ADS1299只能收到8’h4B(8’b01001011)???

A3: SPI时钟过快,开到了20MHz,在所搭配的driver上没有与发送的数据位对齐,换而言之,所发出去的MOSI数据不对,导致ADS1299不知道你吧啦吧啦半天到底想说个啥,因而降频为15MHz

Q4:我开了所有通道的test signal,可我只有第一个信号是对的???

在这里插入图片描述

将原始数据拉出来一看
在这里插入图片描述
大概率是数据丢失造成的。8’h1001xxxx --> 8’h0001xxxx

因而分别进行了不同SPI速率测试,结果发现,SPI_CLK_FRE == 5MHz 后,数据传输稳定性大大提高,继续降低SPI_CLK其数据传输正确率不会继续提高。虽仍有一定程度的数据抖动,但总体来说情况好得多了。
在这里插入图片描述

A4: SPI速率过高,导致数据容易丢失,发现将SPI CLK降到5MHz左右可提高数据传输速率

Q5: 更换新批次ADS1299后,发现按照数据设置CONFIG1(0x01)寄存器位0x96时,许多功能不正常,例如采样率等成为不可控制的8KHz,陷入无穷循环的黑人问号???难道我买的是盗版???

A5: Read 0x01默认寄存器后发现,初始值为0x06,并非0x96,但实际改变的数据属于数据手册上的Reserve。。。因而在配置寄存器CONFIG1(0x01)=0x06时功能恢复正常。

Q6: ADS1299有几个通道不连接的时候采集电压为1.7V???

电源,电源,一定是你的电源,直接检测AVDD和DVDD,别问我怎么知道的 V

Q7: 寄存器配置之后行为与所配置的不对应?

问题描述:举例来说,CHnSET配置的明明是0x01作为噪声测试,但实际行为却表现为0x00(正常电极输入),读该寄存器也发现是0x00。

A7:寄存器配置请按照顺序,例如我们不可配置完0x05后又配置0x01或者0x03,配置0x01-0x04的寄存器会影响0x05-0x0C寄存器配置

后续更新

这篇关于TI ADS1299使用BUG记录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/284997

相关文章

Java使用Thumbnailator库实现图片处理与压缩功能

《Java使用Thumbnailator库实现图片处理与压缩功能》Thumbnailator是高性能Java图像处理库,支持缩放、旋转、水印添加、裁剪及格式转换,提供易用API和性能优化,适合Web应... 目录1. 图片处理库Thumbnailator介绍2. 基本和指定大小图片缩放功能2.1 图片缩放的

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

MySQL中EXISTS与IN用法使用与对比分析

《MySQL中EXISTS与IN用法使用与对比分析》在MySQL中,EXISTS和IN都用于子查询中根据另一个查询的结果来过滤主查询的记录,本文将基于工作原理、效率和应用场景进行全面对比... 目录一、基本用法详解1. IN 运算符2. EXISTS 运算符二、EXISTS 与 IN 的选择策略三、性能对比

使用Python构建智能BAT文件生成器的完美解决方案

《使用Python构建智能BAT文件生成器的完美解决方案》这篇文章主要为大家详细介绍了如何使用wxPython构建一个智能的BAT文件生成器,它不仅能够为Python脚本生成启动脚本,还提供了完整的文... 目录引言运行效果图项目背景与需求分析核心需求技术选型核心功能实现1. 数据库设计2. 界面布局设计3

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)

《java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)》:本文主要介绍java中pdf模版填充表单踩坑的相关资料,OpenPDF、iText、PDFBox是三... 目录准备Pdf模版方法1:itextpdf7填充表单(1)加入依赖(2)代码(3)遇到的问题方法2:pd

python使用try函数详解

《python使用try函数详解》Pythontry语句用于异常处理,支持捕获特定/多种异常、else/final子句确保资源释放,结合with语句自动清理,可自定义异常及嵌套结构,灵活应对错误场景... 目录try 函数的基本语法捕获特定异常捕获多个异常使用 else 子句使用 finally 子句捕获所

C++11右值引用与Lambda表达式的使用

《C++11右值引用与Lambda表达式的使用》C++11引入右值引用,实现移动语义提升性能,支持资源转移与完美转发;同时引入Lambda表达式,简化匿名函数定义,通过捕获列表和参数列表灵活处理变量... 目录C++11新特性右值引用和移动语义左值 / 右值常见的左值和右值移动语义移动构造函数移动复制运算符

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali