我用的是:/CS> LOW—> 写通道—>/CS>HIGTH —> CONVST >LOW > HI —> 等EOC > LOW >HI —> /CS> LOW —>读转换结果—>/CS>HIGTH —>下一个通道….. 。可以确定启动信号(convst)也是符合技术手册要求!
忘高手指教啊!
Decapton Wang:
你看一下图45,不知道你的模式是read while converting还是read while sampling,不过两种模式里~CS都要给够时间,会不会是你的~CS给的时间太短了?
qingfeng guo:
回复 Decapton Wang:
我用的是read while sampling,每次转换结束后读取当次转换的结果!我之前也以为是延时的问题,可是调大了之后(都是微秒级别的)还是不行啊!是不是通道没有选择成功的话就不能启动转换呢?虽然前面的配置寄存器有正确的写入,但是我不确定通道选择有没有成功,不过写通道用的函数与写配置寄存器是一样的。
qingfeng guo:
回复 Decapton Wang:
我用的是read while sampling,每次转换结束后读取当次转换的结果!我之前也以为是延时的问题,可是调大了之后(都是微秒级别的)还是不行啊!是不是通道没有选择成功的话就不能启动转换呢?虽然前面的配置寄存器有正确的写入,但是我不确定通道选择有没有成功,不过写通道用的函数与写配置寄存器是一样的。
qingfeng guo:
回复 Decapton Wang:
我用的是read while sampling,每次转换结束后读取当次转换的结果!我之前也以为是延时的问题,可是调大了之后(都是微秒级别的)还是不行啊!是不是通道没有选择成功的话就不能启动转换呢?虽然前面的配置寄存器有正确的写入,但是我不确定通道选择有没有成功,不过写通道用的函数与写配置寄存器是一样的。
Johnsin Tao:
回复 qingfeng guo:
供电/Ref电压是正常的,确认一下RESET是否是接的高电平?
qingfeng guo:
回复 Johnsin Tao:
VBD=3.3V, VA=4.9V, RESET一直保持为高电平的!而且写配置寄存器和读配置寄存器操作都是正常的,还是不能启动转换啊!
Dale Li:
回复 qingfeng guo:
RESET在上电时,给个复位信号给ADC;CONVST要给个High-Low-Hign的低脉冲(最小40ns),不要给Low-High信号出来。请试下。
qingfeng guo:
回复 Dale Li:
谢谢各位,我的问题解决了!原来是电路的问题,我的CONVST引脚与ARM控制脚是连在一起的,这点之前在断电情况下都确认了好多遍了。可是不知道为什么启动信号就是过不去?我直接飞了根线就好了。
谁可以帮我解释一下信号过不去的理由啊?我的这条连线在同一层,不过有两个比较小拐角!
Decapton Wang:
回复 qingfeng guo:
会不会是走线太长,以至于线上电阻过大了?做一个很粗略的估计,从ARM到ADC的通信可以看成是一个线电阻R和输入端电容C组成的低通滤波器。如果线电阻太大,RC时间常数就比较大,你发过去一个1-0-1,如果0的时间比较短,实际在接收端看到的是1-x-1,就是说,接收端并没有接收到一个有效的启动信号。你可以试试看把CONVST为0的时间加长一点,看看能不能看到EOC跳变。
qingfeng guo:
回复 Decapton Wang:
嗯,谢谢!我之前也是把那个启动信号时间做了延长处理的,不过还是反应,可能是我延长得还是不够,等后面再试试看,
估计也只能这么解释了。其实想想线也不算长,加起来应该不过30mm长,用的10mil!