any_014 发表于 2016-2-22 11:25:42

读AD7193数据遇到的问题。

本帖最后由 any_014 于 2016-2-22 11:49 编辑

AD7193相关的设置、读写函数,都是找的AD官网上的函数,然后把SPI通讯部分用IO口模拟SPI实现。
现在读取AD7193内部温度没问题,控制AD7193的GPIO也没问题。
读AD7193内部差分通道的数据,出错了。

主程序初始化部分,设置了AD7193配置,然后while循环里,每1s读取一次。
因为ad7193内部有8个通道或者是4个差分通道(此时用的是差分通道),应该先设置打开通道1,然后读取,分两个命令操作。

现在是如果打开通道1,再读取内部数据寄存器,读取的值是实际值的一半;
如果屏蔽掉打开通道1这个操作,直接读取内部数据寄存器,读取的值是正确的;
后来发现,不光是打开通道1,只要是涉及ad7193的操作,然后再读取寄存器值,读出来的都是实际值的一半。
、int main(void)
{
      u32 value_temp;
      u8 send_value1, send_value2, send_value3, send_value4;

      GPIO_Config();                                                            
      SPI3_Init();                                                            
      USART1_Config();                                                   
      TIM3_Config(9999, 7199);                                    
      WriteToADT7310ViaSPI(0x01,0x00);                     
      AD7193_GPIO23_ENABLE(1);                                    
      
      ADG702_Set(1);                                                               
      AD5160_Set(100);                                                      
      ADG738_Set(0x02);                                                      
      AD7193_RangeSetup(1, AD7193_CONF_GAIN_8);      
      AD7193_ConfigSetup(1, 0);                                       
      AD7193_ChannelSelect(AD7193_CH_0);                     

      while(1)
      {
                if(flag_1ms == 1)
                {
                        flag_1ms = 0;
                        
                        AD7193_ChannelSelect(AD7193_CH_0);      
                        value_temp = AD7193_SingleConversion();                     
                        send_value1 = (value_temp * 502)/(0x1000000);                     
                                          
                        usart1_send(0xDD);
                        usart1_send(send_value1);
                }
      }
}

any_014 发表于 2016-2-22 11:53:55

在while循环外有AD7193_ChannelSelect(AD7193_CH_0);这句没事;
加在while循环里就不行。
不过是这句,只要是ad7193相关的函数,加在while循环里,最后读的数就出错。
页: [1]
查看完整版本: 读AD7193数据遇到的问题。