电路设计论坛
直播中

远风

10年用户 1143经验值
擅长:MEMS/传感技术 模拟技术 存储技术
私信 关注
[问答]

关于AD7779数据采集失败的问题求解答

您好,  遇到一个AD7779数据采集的问题,请教下
  1、使用平台:MSP430F5483a + AD7779
  2、控制接口MSP430 IO口模拟SPI接口,控制AD7779,单片机时钟频率为1MHz
  3、目前已经成功读写AD7779寄存器
  4、AD7779寄存器配置参数,
   
     void AD7779_Setup(void)   {
   i=0;
   ad7779_spi_init ();
   ad7779_ reset () ;
   延遲_ms( 200) ;
   //将SPI接口配置成读写AD7779内部寄存器,默认就是读写寄存器
   AD7779_Register_Write( 0x13, 0x80);
   //仅使能ch0通道,禁止其他通道,先测试一个通道是否能够正常工作
   AD7779_登记册_Write( 0x08, 0xFE);
   //设置电源模式,默认是低速模式
   AD7779_Register_Write( 0x11, 0x24);
   //设置参考电压类型,Internal Reference
   AD7779_Register_Write( 0x15, 0x40);
   //默认数据格式DOUT_HEADER_FORMAT,CRC header使能
   AD7779_Register_Write( 0x14, 0x20);
   //设置采样率MCLK=4096KHz  MOD_MCLK=MCLK/8=512KHz 采样率=1KHz,那么SRC_N=MOD_MCLK/采样率=512/1=512,没有小数所以SRC_IF=0
   
    AD7779_Register_Write( 0x60, 0x02); //SRC_N_MSB
    AD7779_ Register_ write( 0x61, 0x00; // SRC_ N_ LSB)
    AD7779_ register_ write( 0x62, 0x00; // SRC_ IF_ MSB)
    AD7779_ Register_ write( 0x63, 0x00; // SRC_ IF_ LSB)
   
   //SRC_UPDATE,更新参数
   AD7779_Register_Write( 0x64, 0x01);
   //读取寄存器的数值,看是否设置成功
   for(i=0; i<0x65; i++)
   {
   数据 = AD7779_Register_Read(i) ;
   }
   //将SPI接口配置成读取ADC的数据,GENERAL_USER_CONFIG_3.bit4 = SPI_SLAVE_MODE_EN,在配置AD7779之后将SPI接口设置成读取ADC数据的工作模式
   AD7779_Register_Write( 0x13, 0x90);
   }
   5、失败---读取AD7779 转换结果失败
       void AD7779_Read_Data(void)    {
    uchar i = 0;
    //总共八个通道,每个通道32bit数据=8bit CRC头 + 24bit转换数据
        for(i=0; i<8; i++)
    { { {
    //将片选信号拉低
    ad7779_cs_lo;
    延迟_us( ad7779_ delay);
    //读取32bit数据
   
     adcvalue = AD7779_SPI_RdByte(32);
     //从CRC头中获取AD通道编号
         ch = (adcvalue >> 28)   0x07;
   
         //将片选信号拉高   
    ad7779_cs_hi;
    延迟_us( ad7779_ delay);
    时 时
    }
    6、使用CCS测试结果,通道编号每次都在变化
     
    7、读取AD7779数据的时间,在/RDY管脚出现下降沿中断时读取数据
         #pragma vector=PORT2_VECTOR     - 中断的空旷港2 (省)
     {
     P2IFG =~BIT0;//P2.0 IFG 清除
     //在/RDY管脚的下降沿中断程序中读取数据   
     ad7779_read_data();
     }
     8、下图是技术手册中关于ADC转换数据格式的说明
   
     
   
  
  9、问题:
  1>虽然可以成功读写AD7779寄存器,但是不确定是否配置正确,目前就像测试下ch0能否工作
  2>在配置好寄存器之后,SPI是否成功进入读取ADC数据模式
  3>在通过SPI读取数据,在整个读取的过程中已经将MOSI管脚拉低,避免超过64个MCLK高电平,造成SPI接口复位
  4>不知为什么分析CRC头时,通道编号总是没有规律的变化
  5>难道时读取数据的时间不对,不能再/RDY的下降沿读取
  6>难道不是每次都读取32bit数据吗
  7>难道不是依次读取8通道的数据,只有没有禁止的通道才有非零数据吗
  8>总而言之,对何时读取数据,怎么读取数据,读取多少数据还不太清楚,也没有找到相应的参考文档和程序
  9>/START管脚怎么处理呢
  10、会不会还有硬件问题
  

更多回帖

×
20
完善资料,
赚取积分