ADC124S021时序问题
从datasheet后面的使用知道DIN在SCLK上升沿输入,DOUT在SCLK下降沿输出,而时序图好像显示的是DIN在时钟下降沿输入,DOUT则看不出来,现在只转换IN2,但转换结果都是0,程序如下,请大侠指教,谢谢~
void adc_AI1_AI2_FS5V2(void)
{
unsigned int i, Channel;
unsigned int data_ad;
Channel= 8; //第2通道
data_ad = 0;
GpioDataRegs.GPADAT.bit.GPIO13 = 1; //时钟上升沿准备输入 1
for (i = 0; i < 16; i++)
{
if (i < 8) //0-7八个时钟上升沿输入b7-b0 控制寄存器的8位
{
if((Channel&0x0080)==0)
{
GpioDataRegs.GPADAT.bit.GPIO14=0;
}
else
{
GpioDataRegs.GPADAT.bit.GPIO14=1;
}
Channel <<= 1; //SDI输入数据移位,从b7开始传,最后传b0
}
GpioDataRegs.GPADAT.bit.GPIO13 = 0; //时钟下降沿输出数据 0
TimeDelayProgram(4);
if (i >=4) //第5个时钟周期下降沿输出DB11-DB0为12为AD输出的数字量
{
if(GpioDataRegs.GPADAT.bit.GPIO15==1) //输出数据为1
{
data_ad = (data_ad<<1)+1;
}
else //输出数据为0
{
data_ad = (data_ad<<1);
}
RESULT_FS5V2 = data_ad;
}
GpioDataRegs.GPADAT.bit.GPIO13 = 1; //数据输出完又变为时钟上升沿输入控制寄存器的位
TimeDelayProgram(4);
}
}
手册第4页图4,DIN和DOUT都是在SCLK上升沿锁存。
图4里DIN和SCLK的对齐画的不好,给人一种错觉,貌似DIN在SCLK下降沿锁存。但是通过图4对Tsu(setup time)和Th(hold time)的显示,可以发现实际上DIN也是在SCLK上升沿锁存的。
你好,在引脚描述和等效电路里描述的9脚DOUT怎么是写下降沿锁存输出啊,那个是对的啊,求解,谢谢~
能不能把你单独读通道2的波形发上来看看。
你好,我是按datasheet里Pin Description and Equivalent Circuits 里的9脚DOUT的Description在下降沿锁存输出来写的,由于程序输出的结果不正确,我就没测DOUT输出的波形,另外SCLK的Clock Frequency 的Operating Ratings是0.8MHz to 3.2MHz还是50KHz to 16MHz,有的datasheet是前者有的是后者,那一个是现在的Clock Frequency 范围,谢谢~~
我的手册是“March 2013”版本的,手册第5页,SCLK的速度是0.8M~3.2M。从对SCLK的注释(3)可以看出,这颗ADC可以跑在Operating range标明的更宽的时钟范围(50K~16M),但是手册保证性能的范围是0.8M~3.2M。
(3) This is the frequency range over which the electrical performance is ensured. The device is functional over a wider range which is
specified under Operating Ratings.
对于锁存数据的问题,现在可以确定的是DIN在SCLK上升沿采,至于DOUT,你可以修改程序,在SCLK上升沿和下降沿都采一下,看看哪种情况下采到的数据是正确的。
好的,谢谢~
