ADS1282的寄存器写操作需要起始位吗?
您好,我现在能正常的在默认配置下用FPGA读取ADS1282发出的数据,我想把采样速率改为500sps或者2000sps,根据手册的介绍,写命令之前需要先停止ADS1282的连续输出模式,也就是先发送一个字节H11,问题在于要发送多少位呢,要不要像232串口那样,一位起始位0,8位数据位和一位停止位1?数据位是高位在前吗?如果没有起始位的话ADS1282怎么接受发来的数据呢?
这些疑问手册上没有介绍,期待您的帮助。
感谢。
手册34页对写寄存器有描述,25页有示意图。
如果仅仅是改采样率,那么第一个command byte是0x0100 0001,表示要写的寄存器,地址从01H开始。第二个command byte写0x0000 0000,表示只写一个寄存器,就是只写01H这一个寄存器,01H之后的寄存器值都不变。第三个就是写寄存器值,500SPS改成2000SPS,就是写成0xXX01 0XXX。你可以按照这个顺序写一次试试看。
至于11H的处理,手册上33页有写发送一个command byte,你可以在写寄存器时直接写0x0001 0001,这样就可以停掉连续输出了。应该不用起始位吧,从手册35页的图来看,应该是用SCLK的上升沿锁数据的。
Mr Wang,您好,
非常感谢您的回复,我就是按照您说的方法做的,上升沿写数据,高位在前,可是发送完H11以后,ADS1282还是没有反应,DRDY管脚仍然继续按1ms的间隔输出下降沿脉冲,DOUT也在输出数据,我用示波器观察了DIN的信号,H11确实写进去了。
我还是不明白如果没有起始位的话,ADS1282从何时开始接收数据呢?就像DOUT输出数据没有起始位,但是每次开始输出数据时,DRDY输出一个下降沿脉冲,这样我就知道开始接收数据了,如果没有DRDY的话,我也是没有办法接收数据的啊。
因此,会不会每次写寄存器之前要给某个管脚一个脉冲信号呢?
再次感谢您的帮助,期待您的回复。
Michael Ding。
首先写寄存器要发两条命令吧,先是WREG,然后是SDATAC。然后根据手册33页图66,这两条指令之间应该间隔24个SCLK周期,你可以检查一下两条指令的间隔是不是给够了,如果是连续写进去的,那么即使观察到DIN上有H11,但也不能保证ADC能够接收到这样一个H11。
你好:我在用STM32F407的SPI操作ADS1282,我首先进行读寄存器测试,流程是:RESET PIn, 发送SDATAC命令,再发送0x24和0x00(读地址为0x04的寄存器值,它的RESET值为0x03),但是我读出的值却是零,麻烦您有空时帮我看一下,十分感谢!