本人正在使用的ADS1292R 数据转换器,配置时序后发现,读取寄存器值乱码,不知什么原因。
原理图
CLK_SEL脚未接
总体波形
SCLK 速率在280K上下,上电未做其他设置。
细节1
细节2
细节3
同一寄存器每次读取的值不一样,不知什么原因
读寄存器部分代码
//Chip enable
ADS1292_Enable();
SPI_I2S_SendData(SPI1,0x20 | 0x00); //Send Address
while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE) == RESET);
SPI_I2S_SendData(SPI1,0x00); //Send num = 1
while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE) == RESET);
SPI_I2S_SendData(SPI1,0x00);
while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE) == RESET);
//while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_RXNE) == RESET);
retVal = SPI_I2S_ReceiveData(SPI1); //Read SPI
OSTimeDlyHMSM(0,0,0,1);
ADS1292_Disable();
恳请出没于TI论坛诸位大侠帮小弟一把,小弟先行谢过。
Decapton Wang:
你的意思是,原理图上clksel通过10k上拉电阻到DVDD,但是实际PCB上是悬空?这个可能不行,参考手册27页,那个引脚是选择内部时钟源的。
tuo qian:
回复 Decapton Wang:
哦,我是把17脚悬空的,也就是CLK_SEL1悬空,14脚CLK_SEL是好的。
时钟是好的,就是读寄存器不行
tuo qian:
回复 Decapton Wang:
大侠说对了,那个设置确实不对,我后来按照手册P10说明,把CPOL 设置成了 0,CPHA 设置为1,跟手册P10的时序和约束比较了下,没有发现问题。
但是情况还是一样,能循环读出0x00,0xXX,0xff三个值,XX不定,我纳闷的是Dout在输出完数据后应该是置高才对,为什么会变低呢。
附图:
另外,时序不对这个问题还可能什么地方引起,有没有可能是芯片坏了?
Decapton Wang:
回复 tuo qian:
前两幅图没看到~CS有跳低再跳高的波形,第三幅有。
你可以先按照手册38页图45,给32个SCLK,把读寄存器这个功能调通。
tuo qian:
回复 Decapton Wang:
Wang大侠,貌似还不行
我大概统计了一下,是29h,31h,c0h,20h,00h,1bh,42h,8ch,3bh
共6个字节重复出现,是不是要配置什么东西?要不要换片子再试?
tuo qian:
回复 Decapton Wang:
问题找着了,是ADS1292r 进入了默认的连续转换状态,读出的那六个字节值刚好是一帧数据(应该是0xc0打头)。
发了停止连续转换就能读对了。
还是要特别感谢Wang大侠的帮忙。
yao shiang:
回复 tuo qian:
tuo qian大大你好
小弟目前也在使用ADS1292,現在卡住了,前面設定的部分對了,但在讀值的時候怎麼讀回來都會是80開頭,正常不是應該要C0開頭嗎
還請您幫幫忙
tuo qian:
回复 yao shiang:
我写的一个笔记,你先看看
http://www.deyisupport.com/question_answer/analog/data_converters/f/58/p/25566/94621.aspx#94621