糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > ADS129X芯片中文资料(四)——编程部分介绍

ADS129X芯片中文资料(四)——编程部分介绍

时间:2019-12-07 12:58:25

相关推荐

ADS129X芯片中文资料(四)——编程部分介绍

写在前面:最近做项目用到TI公司的用于生理信号测量的低功耗、8通道、24位模拟前端的ADS1298芯片,于是研究了下芯片手册。一百多页的芯片手册,经常看过后又记不清了,每次都得重新去翻阅,所以整理成中文的,翻遍查阅。在此分享给同样有需求的人,如有错误,恳请指出,谢谢!

这是关于该芯片资料的最后一部分内容,此部分功能的介绍以及前面的第三部分(数字功能部分的介绍)很重要,涉及到该怎么编程该芯片,以及怎么设置参数,如何根据应用选择不同模式等。可以配合芯片手册最后的寄存器表进行阅读,这样能更快理解并知道如何编程。

(前面标号对应英文手册章节标号)

9.5 编程

9.5.1 SPI接口

SPI兼容串行接口由四个信号组成:CS,SCLK.DIN.DOUT。该接口可以读转换数据,读写寄存器,和控制ADS129X的操作。DRDY输出是用作提示当数据准备好的状态信号。当新的数据可用时,DRDY变为低。

9.5.1.1片选引脚(CS)

片选引脚选择ADS129x设备进行SPI通信。当CS为低时,串行接口为激活状态。整个串行通信中,CS必须保持低电平。当串行通信完成时,通常等待4或者更多个tCLK周期再拉高CS.当CS被拉高时,串行接口被复位。SCLK,DIN被忽略,DOUT输出高阻抗状态。无论CS的状态为高还是低,DRDY断言数据何时转换完成(assert)。

当ADS129X被选择时,设备尝试每八个串行时钟进行解码和执行指令。如果设备停止执行串行指令,则可能是外部时钟脉冲出现使得串行接口进入一个未知状态。如果要复位串行接口到一个已知状态,把CS拉高再重新拉低。

9.5.1.2串行时钟(SCLK)

SCLK是SPI的串行时钟。它用于从设备中转移命令和数据。串行时钟SCLK具有一个Schmitt触发的输入,使数据按照时钟周期从DIN和DOUT引脚输入和输出ADS129X。即使输入有迟滞现象,也要尽可能保持SCLK的清洁,以防止发生故障导致时钟事件。SCLK的绝对最大限制时序在时序表Timing Requirements: Serial Interface table中给出。

当ADS129x被选择(CS为低),设备尝试每八个串行时钟进行解码和执行指令。所以,要保持接口在正常的模式下工作,每个串行传输都必须存在八个SCLK的倍数的时钟。如果接口因为外部串行时钟而终止,可以铜鼓偶拉高CS再拉低来复位。

对于单个设备,SCLK要求的最低速率由通道个数,通道位数,和输出数据率决定。对于多个级联的设备,查看级联配置部分获得具体信息。公式七所示为最小SCLK速度的计算。

例如,如果ADS1298是工作在500SPS(八通道,24位分辨率,)则最小SCLK速率为110kHz。

通过设置设备处于RDATAC模式或者发送RDATA指令来读取数据。公式七表现的SCLK速率限制也同样适用于RDATAC。对于RDATA指令,如果数据必须在两个相连的DRDY信号之间读取的话,则该限制也适用。公式7是在假定数据获取之间没有其它指令的情况下满足的公式。

9.5.1.2.1串行时钟方法(SCLK Clocking Methoods)

如图68所示,有两种不同的SCLK计时方法来满足图1所示的多字节命令的解码时序要求。

对于SCLK的速度要满足图1所示的tSDECODE的要求。当CS为低时,连续传输SCLK。这种方法不能与自由运行的SCLK混淆,后者在CS为高时进行。本设备不支持自由运行的SCLK。对于不满足图一所示tSDECODE时序要求的更快速的SCLK,SCLK是在八位突发(burst)中进行传输,传输之间有延迟。在时序要求:接口表中规定了绝对最大的SCLK限制。图68所示为本设备的两种不同SCLK方法的不同

9.5.1.3数据输入引脚(DIN)

数据输入引脚(DIN)与SCLK一起用于ADS129X(操作码和寄存器数据)通信。该设备将DIN的数据锁定在SCLK的下降沿上。

9.5.1.3数据输出引脚(DOUT)

数据输出引脚DOUT与SCLK一起用于从ADS129X在读取转换和寄存器上的数据。DOUT上的数据在SCLK的上升沿shift out。当CS为高时,DOUT进入高阻抗状态。在连续读数据模式下,DOUT的输出行还指示何时有新数据可用。使用此功能可以最小化设备与系统控制器之间的连接数量。

图69所示为ADS1298的数据输出协议。

9.5.2 SPI命令定义

ADS129X提供了灵活的配置控制。表15总结的指令命令控制和配置ADS129x的操作。除了需要第二个命令字节和数据的寄存器读写操作,其它。其它指令命令都是单独的。在指令之间时,CS可以被拉高或者保持低,但对于整个指令操作(特别是对于多字节命令时),CS必须保持低。系统指令和RDATA指令在第七个SCLK的下降沿被ADS129X解码。寄存器的读写操作在第八个SCLK的下降沿被解码。在发出指令后拉高CS时,确保依据SPI的时序要求。

9.5.2.1唤醒:退出待机模式(WAKEUP:Exit Standby Mode)

WAKEUP指令退出低功耗待机模式。具体查看STANDBY:ENTER Standby Mode 部分。退出待机模式需要时间。详情见电子特性部分。在这个命令下,SCLK的速率没有限制。可以在任何时间发出该指令,但是任何节接下去的指令都必须在4个tCLK之后送出。

9.5.2.2待机:进入待机模式

STANDBY指令进入低功耗待机模式。除了参考部分的其它电路的所有部分全部关闭。待机模式功率消耗在电子特性(Electrical Characteristic)部分说明。在这个命令下,SCLK的速率没有限制。串行接口是激活状态的,所以,在此模式下寄存器的读写是允许的。

9.5.2.3复位:复位寄存器到默认值

RESET指令复位数字滤波器周期(cycle),并将所有寄存器返回至各自的默认值。详情见(RESET引脚和RESET命令部分)。在这个命令下,SCLK的速率没有限制。可以在任何时间发出该指令。执行复位命令需要18个tCLK周期的时间。在此段时间内,不要发送任何命令。

9.5.2.4 START:开始转换

此操作启动数据转换。将START引脚拉低来通过指令控制转换。如果处于转换状态中,此指令没有效果。STOP指令是用于停止转换的。如果START指令之后紧接着的是STOP指令,则两个指令之间必须间隔4个tCLK周期。当START指令被送到设备时,保持START引脚为低直到STOP指令被发出。(详情见SPI接口部分的START mode)。在该命令下对SCLK的速率没有限制。可以在任何时间发出该指令。

9.5.2.5 STOP:停止转换

STOP指令停止转换。把START引脚拉低,以通过指令控制转换。当STOP指令被发送,正在进行的转换完成后,进一步的转换被停止。如果转换已经停止,则此命令没有效果。该命令下对SCLK的速率没有限制。可以在任何时间发出该指令。

9.5.2.6 RDATAC:连续读取数据

RDATAC指令支持在每个DRDY上输出转换数据,而不需要发送后续的读数据指令。该指令将转换数据放在可以讲其直接移出(shift out)的输出寄存器中。连续读取数据模式是设备的默认模式。设备在开机和复位时默认为改模式。

RDATAC模式由停止连续读取数据(SDATAC)指令取消。如果设备处于RDATA模式,SDATA指令必须在任何其它指令之前发送到设备。该命令对SCLK的速率没有限制,但是随后的串行数据回读SCLKs或SDATAC指令必须等待只是4tCLK。如图70所示,RDATAC的时序展示了在DRDY脉冲周围的不能发出该指令的4个tCLK的保持区。如果没有从设备中回读到数据,DOUT,和DRDY在此模式下的行为类似。为了在发送RDATA指令之后从设备中回读数据,确保START引脚为高,或者START指令被发送。图70所示为使用RDATAC指令的推荐方法。RDATAC非常适用于数据记录器或录音机等应用程序,在这些应用程序中,寄存器只设置一次,不需要重新配置。

9.5.2.7 SDATAC:停止连续读取数据

SDATAC指令取消连续读取数据模式(RDATAC)。该指令对SCLK速率没有限制,但是下一个指令必须等至少4tCLK周期。

9.5.2.8 RDATA:读取数据

在DRDY变为低后,发送RDATA指令来读取转换结果(在SDATAC模式下)。该指令对SCLK没有限制。对下一个指令或者数据回读SCLKs也不需要等待时间。在RDATA指令发出之后,要从设备中回读数据,需要确保START引脚为高或者START命令被发送。当用RDATA指令读取数据,读操作可以与下一个DRDY的出现重叠,且不损害数据。图71所示为使用RDATA模式的推荐方法。RDATA非常适用于心电图和心电图类型的系统,这些应用中,转换的过程中,寄存器必须经常设置或者读取。

9.5.2.9发送多字节命令

ADS129x串行接口以字节来解码命令。需要4个tCLK周期来解码和执行。所以,当发送多字节指令时,需要4tCLK周期将一个字节的结束与下一个字节的结束分开。

比如,如果CLK是2.048MHz,则tSDECODE(4tCLK)是1.96微秒。当SCLK是16MHz,一个字节的最大传输速度是500纳秒。该字节传输时间不符合tSDECODE规范,所以必须插入时间延迟,来保证第二个字节的末端在1.46微妙之后到达。而如果SCLK是4MHz,一个字节的传输时间是2微妙,因为传输时间超过了tSDECODE规范,处理器可以不需要延迟,直接发送下一个字节。在第二种情况下,可以将串行端口编程为多字节传输,而不是满足第一种情况的时序的单个字节传输。

9.5.2.10 RREG:从寄存器中读数据

RREG指令读取寄存器数据。RREG命令是一个2字节的指令,跟在后面的为寄存器数据的输出。第一个字节包括命令指令和寄存器地址。操作码的第二个字节指定要读的寄存器数量减一。

指令的第一个字节:001r rrrr,其中r rrrr是起始寄存器的地址。

指令的第二个字节:000n nnnn,其中n nnnn是要读的寄存器数减一。

如图72所示,操作的第17个SCLK的上升沿输出第一个寄存器的MSB。当设备处于连续读取数据模式,在发送RREG指令之前需要发送一个SDATAC指令。PREG可以在任何时候发出。然而,因为该指令是一个多字节指令,根据发出SCLK的方式,对SCLK的速率有一些限制。详情见SCLK部分。在整个命令过程中,CS必须保持为低。

9.5.2.11 WREG:从寄存器中读数据

WREG指令向寄存器写数据。WREG指令是一个2字节指令,跟在其后的寄存器数据输入。第一个字节包含指令操作码和寄存器地址,第二个指令指定要写的寄存器数-1。

指令的第一个字节:010r rrrr,其中r rrrr是起始寄存器的地址。

指令的第二个字节:010n nnnn,其中n nnnn是要读的寄存器数减一。

在操作码字节之后,寄存器数据跟在其后(MSB格式)。如图73所示。WREG指令可以在任何时候发出,然而,因为该指令为多字节指令,对SCLK的速率有一些限制。详情见SCLK部分。在整个命令过程中,CS必须保持为低。

如果觉得《ADS129X芯片中文资料(四)——编程部分介绍》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。