用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;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>