*FDC2214初始化函数
*返回值:0:初始化正常
* 1:不正常
*/
uint8_t FDC2214_Init(void)
{
uint16_t res,ID_FDC2214;
FDC_IIC_Init();
res=FDC_Read(MANUFACTURER_ID);//测试设备读取是否正常
ID_FDC2214 = FDC_Read(DEVICE_ID);
printf("ID:%d \r\n", ID_FDC2214);
if(res==0x5449)
{
//设置Set_FDC2214寄存器
Set_FDC2214(RCOUNT_CH0,0x34,0xFB);//参考计数转换间隔时间(T=(RCOUNT_CH0*16)/Frefx)
Set_FDC2214(RCOUNT_CH1,0x34,0xFB);
Set_FDC2214(RCOUNT_CH2,0x34,0xFB);
Set_FDC2214(RCOUNT_CH3,0x34,0xFB);
Set_FDC2214(SETTLECOUNT_CH0,0x00,0x1B);//转换之前的稳定时间(T=(SETTLECOUNT_CHx*16)/Frefx)
Set_FDC2214(SETTLECOUNT_CH1,0x00,0x1B);
Set_FDC2214(SETTLECOUNT_CH2,0x00,0x1B);
Set_FDC2214(SETTLECOUNT_CH3,0x00,0x1B);
Set_FDC2214(CLOCK_DIVIDERS_C_CH0,0x20,0x02);//选择在0.01MHz ~ 10MHz的传感器频率
Set_FDC2214(CLOCK_DIVIDERS_C_CH1,0x20,0x02);//Frefx = Fclk = 43.4MHz/2(2分频)
Set_FDC2214(CLOCK_DIVIDERS_C_CH2,0x20,0x02);//CHx_REF_DIVIDER=2;CHx_FIN_SEL=2
Set_FDC2214(CLOCK_DIVIDERS_C_CH3,0x20,0x02);//CHx_REF_DIVIDER=2;CHx_FIN_SEL=2
Set_FDC2214(DRIVE_CURRENT_CH0,0x78,0x00);//0.146ma(传感器时钟建立+转换时间的驱动电流)
Set_FDC2214(DRIVE_CURRENT_CH1,0x78,0x00);
Set_FDC2214(DRIVE_CURRENT_CH2,0x78,0x00);
Set_FDC2214(DRIVE_CURRENT_CH3,0x78,0x00);
Set_FDC2214(ERROR_CONFIG,0x00,0x00);//全部禁止错误汇报
Set_FDC2214(MUX_CONFIG,0xC2,0x0D);//通道0,1,2 ,3;选择10Mhz为超过振荡槽振荡频率的最低设置,多通道,四通道
Set_FDC2214(CONFIG,0x16,0x01);//激活模式,使用内部振荡器做参考频率,INTB引脚会随状态寄存器更新被置位
}
else return 1;
return 0;
}
float Cap_Calculate(uint8_t chx)
{
float Cap;
Data_FDC = FCD2214_ReadCH(chx);
Cap = 232021045.248/(Data_FDC);
return (Cap*Cap);
//return (Data_FDC);
}
|