大家好,我正在调试ADS1259的电路,出现了一些问题。
首先,我的硬件电路如下:
ADC的SPI接口是经过隔离芯片ISO7241和STM32连接的,CS、SCLK、DIN接ISO7241输出,DOUT接ISO7241输入。 DGND接AGND。
我的读取寄存器值的时候发现读到的值都为0(也可以说根本就没读到)。
于是我测量了SPI的4条线,发现ISO7241的DOUT输出端为0V,而ISO7241的DOUT输入端为奇怪的1.2V,其他3条线ISO7241两端均为3.3V。
我有检查了几个引脚, 电源±2.5V ±REF2.5V DVDD 3.3V 均正常。REFOUT引脚为0V,不知道正不正常。
我现在没有办法确定这个问题在哪里,也不知道接下来怎么查电路。
请大家帮助我,谢谢。
读取程序如下:
u8 ADC_RD_REG(u8 Reg)
{
u8 Reg_Data;
SPI_ADC_CS = 0;
SPIx_ReadWriteByte(SPI2, RREG|Reg);
SPIx_ReadWriteByte(SPI2, 0x00);
Reg_Data = SPIx_ReadWriteByte(SPI2, 0xFF);
SPI_ADC_CS = 1;
return Reg_Data;
}
Zhang Xavier:
经过调试,我发现如果加ISO7241的话DOUT上的1M的电阻不能加的。
我把电阻去掉之后DOUT电平正常了。SPI通信是没有问题了。
可是读到的寄存器的值还是0x00,然后我尝试读了一下数据DRDY确实有低电平,进入外部中断后读到的数据全是0x00FFFFFF;
这个AD到底转换了数据没有?
还有TI的工程师怎么不理我
Zhang Xavier:
回复 Zhang Xavier:
还有 晶振两端用示波器看了 有正弦波
Joel Li:
DOUT上1MOhm的电阻是干啥的?去了吧
Junqiang Shi:
回复 Joel Li:
几个问题要确认:
1) ISO7241供电3.3V,ADS的供电多少?
2)ISO7241内部有上拉电阻,外置若有10M下拉电阻,则会被分压,导致ISO7241输入电平变低。故这个10M电阻会影响ISO7241工作
能否提供波形看看问题出在哪里?
Zhang Xavier:
回复 Junqiang Shi:
你好,
1)ISO7241 VDD:3.3V;
ADC1259 DVDD3.3V; AVDD:2.5V; AVSS:-2.5V
2)1M电阻以去掉,DOUT电平以恢复正常。
我只有个示波器,而且只有一条线,没有办法看到整个SPI的波形。
目前在调试中已确定,可以写寄存器(我在CONFIG2中的Bit5写1之后,SYNCOUT引脚出现脉冲,写入前为低电平)。
但是读寄存器的数据依旧为0;
不知道代码有没有问题,读一个寄存器
u8 ADC_RD_REG(u8 Reg){ u8 Reg_Data; SPI_ADC_CS = 0; __nop(); __nop(); __nop(); __nop(); SPIx_ReadWriteByte(SPI2, RREG|Reg); SPIx_ReadWriteByte(SPI2, 0x00); Reg_Data = SPIx_ReadWriteByte(SPI2, 0xFF); __nop(); SPI_ADC_CS = 1; return Reg_Data;}
Janet Sun:
回复 Zhang Xavier:
请问一下,现在读取转换结果有问题吗?还是只是读寄存器为0?
Zhang Xavier:
回复 Janet Sun:
现在可以读到了 ,寄存器值也可以读到了 ,论坛上有一个帖子写了 ,读寄存器之前要写SDATAC命令。但是数据手册上根本没提到。
Zhang Xavier:
回复 Joel Li:
这。。。是我没好好看资料