cs5460A

2019-08-17 01:48发布

用CS5460A测量直流电压时,输入电压为0时,读到的电压有效值寄存器的有个值,输入电压越大时,读到的值越小。怎么回事?
int main(void)
{               
        Stm32_Clock_Init(9);//Ïμí3ê±ÖóéèÖÃ
        delay_init(72);                  //Ñóê±3õê¼»ˉ
        //        LED_Init();                          //3õê¼»ˉóëLEDᬽóμÄó2¼t½ó¿ú
        //Mcp3201_Init();       
  Cs5460a_Init();
  while(1)
        {
  //Vin=Mcp3201_Read()*250*373/4096;//à©′óáË100
        //Cs5460a_Read(0x08,buff);
  // Cs5460a_Read(0x18,buff);
  temp1=Read_Cs5460a(0x0f);
        Write_Cs5460a(0x0f,temp1);
        Q=Read_Cs5460a(0x0C);
        }
}void Cs5460a_Init(void)
{
  u32 temp,p;
  Spi2_Init();
        Cs5460a_Rst=0;
        delay_ms(10);
        Cs5460a_Rst=1;
        Cs5460a_cs=0;                         //Ñ¡í¨
        __nop(); __nop(); __nop(); __nop();  //×îéù50ns        
        SPI2_RWByte(0x0ff);             //′®¿ú3õê¼»ˉ
  SPI2_RWByte(0x0ff);            
        SPI2_RWByte(0x0ff);            
        SPI2_RWByte(0x0fe);
        Cs5460a_cs=1;  
__nop(); __nop(); __nop(); __nop();
        Write_Cs5460a(0x00,0x000001);       //ÅäÖüÄ′æÆ÷
        Write_Cs5460a(0x0f,0xffffff);      //Çå×′쬼Ä′æÆ÷
        Write_Cs5460a(0x1A,0x000000);      //ÖD¶ÏÆá±Î¼Ä′æÆ÷
        Write_Cs5460a(0x1C,0x000000);      //D′¿ØÖƼÄ′æÆ÷
        Write_Cs5460a(0x05,0x000190);  // ÖüÆú¼Ä′æÆ÷
       
//        Write_Cs5460a(0x04,0x400000);   //Ôöòæ¼Ä′æÆ÷
        temp=Read_Cs5460a(0x0f);
        Write_Cs5460a(0x0f,temp);         //Çå3yòÑóD×′쬼Ä′æÆ÷μÄ×′쬣¬D′1Çå0£¬D′02»±ä
        Write_Cs5460a_CMD(0xe8);          //Æô¶ˉ×a»»
}
u8 SPI2_RWByte(u8 TxData)
{
        while((SPI2->SR&1<<1)==0)
        {
        }
        SPI2->DR=TxData;
        while((SPI2->SR&1<<0)==0)
        {
        }
        return SPI2->DR;
}
void Write_Cs5460a_CMD(u8 cmd)
{
Cs5460a_cs=0;
__nop(); __nop(); __nop(); __nop();
SPI2_RWByte(cmd);
__nop(); __nop(); __nop(); __nop(); __nop(); __nop(); __nop(); __nop();
Cs5460a_cs=1;
__nop(); __nop(); __nop(); __nop(); __nop(); __nop(); __nop(); __nop();
}
void Write_Cs5460a(u8 addr,u32 data)
{
u8 addr_temp ;
Cs5460a_cs=0;
__nop(); __nop(); __nop(); __nop();
addr_temp=(addr<<1)|0x40;
SPI2_RWByte(addr_temp);
SPI2_RWByte((u8)(data>>16));
SPI2_RWByte((u8)(data>>8));
SPI2_RWByte((u8)(data));
__nop(); __nop(); __nop(); __nop();__nop(); __nop(); __nop(); __nop();  
Cs5460a_cs=1;
__nop(); __nop(); __nop(); __nop();__nop(); __nop(); __nop(); __nop();  
}
u32 Read_Cs5460a( u8 addr)
{
  u32 temp=0;
  u8  temp1;  
  Cs5460a_cs=0;   
__nop();__nop();__nop();__nop();
  temp1=addr<<1;                           
  SPI2_RWByte(temp1);
  temp=SPI2_RWByte(0Xfe);         
  temp<<=8;
  temp1=SPI2_RWByte(0Xfe);
  temp=temp|temp1;
  temp<<=8;
  temp1=SPI2_RWByte(0Xfe);
  temp=temp|temp1;
__nop(); __nop(); __nop(); __nop();
  Cs5460a_cs=1;  
__nop(); __nop(); __nop(); __nop();
  return temp;
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。