现在在用CS5460,我读直流电流有效值寄存器的时候,不加电流负载都能从寄存器里读到值,而且值是没有规律的在变的,大神们有没有知道原因的。
另外就是直流电流有效值寄存器里读出来的值要怎么转成实际的电流值呢,请大神们指教。感激不尽。
void CS5460A_Init()
{
u32 temp;
// __nop(); __nop(); __nop(); __nop();
CAN_SPI_Init();
CS5460_CS=1;
CS5460_RST=0;
delay_ms(30);
CS5460_RST=1;//¸′λ5460
CS5460_CS=0;//5460Ƭѡ
// __nop(); __nop(); __nop(); __nop();
WriteSPI(0xff);//SYNC1
WriteSPI(0xff);
WriteSPI(0xff);
WriteSPI(0xfe);//SYNC0
CS5460_CS=1;
// __nop(); __nop(); __nop(); __nop();
/************¼Ä′æÆ÷ÅäÖÃ************///òéÎê?
CS5460A_Write(0x00,0x000001);//写配置寄存器
CS5460A_Write(0x0f,0xffffff);//清除状态寄存器
CS5460A_Write(0x1A,0x000000);//写屏蔽寄存器
CS5460A_Write(0x1C,0x000000);//写控制寄存器
CS5460A_Write(0x05,0x000fa0);//写周期计数寄存器 N=400,1s计数一次
temp=CS5460A_Read(0x0f);
CS5460A_Write(0x0f,temp); //清除状态寄存器
/**********************************/
CS5460A_Write_CMD(0xe8); //启动转换命令
}
void CS5460A_Write(u8 addr,u32 data)
{
u8 x=0x01;
u8 addr_temp=0;
CS5460_CS=0; //5460Ƭѡ
// __nop(); __nop(); __nop(); __nop();
addr_temp=(addr<<1)|0x40;
x=WriteSPI(addr_temp); //·¢ËíD′μØÖ·
x=WriteSPI((u8)(data>>16));
x=WriteSPI((u8)(data>>8));
x=WriteSPI((u8)(data));//D′êy¾Y
// __nop(); __nop(); __nop(); __nop();__nop(); __nop(); __nop(); __nop();
CS5460_CS=1;
//__nop(); __nop(); __nop(); __nop();__nop(); __nop(); __nop(); __nop();
}
u32 CS5460A_Read(u8 addr)
{
u8 addr_temp=0;
u8 temp=0;
u8 temp2=0;
u8 temp3=0;
u32 buf=0;
CS5460_CS=0;
// __nop();__nop();__nop();__nop();
addr_temp=(addr<<1);
// printf("%u",addr_temp);
WriteSPI(addr_temp);//·¢Ëí¶áμØÖ·
temp=WriteSPI(0xfe);
printf("%d ",temp);/////
temp2=WriteSPI(0xfe);
printf("%d ",temp2);//////
temp3=WriteSPI(0xfe);
printf("%d
",temp3);//////
// __nop();__nop();__nop();__nop();
CS5460_CS=1;
// __nop();__nop();__nop();__nop();
return buf;
}
void CS5460A_Write_CMD(u8 cmd)
{
CS5460_CS=0;
// __nop(); __nop(); __nop(); __nop();
WriteSPI(cmd);
// __nop(); __nop(); __nop(); __nop(); __nop(); __nop(); __nop(); __nop();
CS5460_CS=1;
// __nop(); __nop(); __nop(); __nop(); __nop(); __nop(); __nop(); __nop();
}
寄存器配置啥的应该没有问题吧?目前没做校准。我写配置寄存器然后在去读,读的值和我写的是一样的,证明读写寄存器应该没什么问题
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
系数不就是 用电流表测量的实际值 除以 你测量到值吗?
你测量到了1234,实际值2.3A,你说系数多少,1234*? = 2.3
一周热门 更多>