ADI 技术
直播中

李雨晨

7年用户 189经验值
私信 关注
[问答]

请问AD7705切换通道是否需要重新设置寄存器

AD7705采集通道一和通道二的电压,读取完通道一后再去读取通道二的数据,是否需要重新设置寄存器?
下面的程序一和程序二中哪段是对的?
程序一:
void Init7705()//功能:AD7705初始化
{
PORTD|=(1<
  WriteByte7705(0x20);     //设置时钟寄存器
  WriteByte7705(0x01);//WriteByte7705(0x01);     //ZERO,ZERO,ZERO,CLKDIS,CLKDIV,CLK,FS1,FS0  //0x08            
  WriteByte7705(0x10);     //设置寄存器
  WriteByte7705(0x44);//WriteByte7705(0x44);     //MD1(0) MD0(0) G2(0) G1(0) G0(0) nB/U(1) BUF(0) FSYNC (0)
  
  WriteByte7705(0x21);     //设置时钟寄存器
  WriteByte7705(0x01);//WriteByte7705(0x01);     //ZERO,ZERO,ZERO,CLKDIS,CLKDIV,CLK,FS1,FS0  //0x08   
  WriteByte7705(0x11);
  WriteByte7705(0x44);
}
void adc_read(void)
{
  WriteByte7705(0x10);
  WriteByte7705(0x44);
  adc_clk();
  WriteByte7705(0x38);
  temp=ReadWord7705();

  WriteByte7705(0x11);
  WriteByte7705(0x44);
  adc_clk();
  WriteByte7705(0x39);
  temp=ReadWord7705();
}
程序二:
{
PORTD|=(1<
  WriteByte7705(0x20);     //设置时钟寄存器
  WriteByte7705(0x01);//WriteByte7705(0x01);     //ZERO,ZERO,ZERO,CLKDIS,CLKDIV,CLK,FS1,FS0  //0x08            
  WriteByte7705(0x10);     //设置寄存器
  WriteByte7705(0x44);//WriteByte7705(0x44);     //MD1(0) MD0(0) G2(0) G1(0) G0(0) nB/U(1) BUF(0) FSYNC (0)
  
  WriteByte7705(0x21);     //设置时钟寄存器
  WriteByte7705(0x01);//WriteByte7705(0x01);     //ZERO,ZERO,ZERO,CLKDIS,CLKDIV,CLK,FS1,FS0  //0x08   
  WriteByte7705(0x11);
  WriteByte7705(0x44);
}
void adc_read(void)
{
  WriteByte7705(0x38);
  temp=ReadWord7705();

  WriteByte7705(0x39);
  temp=ReadWord7705();
}

回帖(2)

李雨晨

2018-8-19 08:11:28
我使用过程中,如果读取完第一通道的数据后不重新设置寄存器就去读第二通道的数据,读取到的数据是混乱的
举报

郝思雨

2018-8-19 08:24:11
引用: wangrubing 发表于 2018-8-19 08:11
我使用过程中,如果读取完第一通道的数据后不重新设置寄存器就去读第二通道的数据,读取到的数据是混乱的

Sinc滤波器的输出需要一定的建立时间,在切换通道之后需要留足够长的建立时间才能保证得到的数据是实际输入信号的幅度
举报

更多回帖

发帖
×
20
完善资料,
赚取积分