1 - 简介
用 C 编程语言编写的用于MC11系列驱动程序。此驱动包含直接链接芯片的驱动程序文件(MC11.h/.c 以及 i2c_master.h/.c)。
http://mysentech.com/drtlxp
您可以在此处找到驱动程序使用的一些示例。
2 - 集成详细信息
该驱动程序基于单片机平台,提供了底层函数,用于从芯片硬件总线(即I²C)。
2.a 源代码集成
在项目中包括芯片的驱动程序文件以及底层函数文件(MC11.h/.c 以及 i2c_master.h/.c)
在代码中定义使用 I²C 平台驱动程序的读写函数,如下所示:
/** 主机向芯片发送一个字节*****/
uint8_t I2C_master_write(uint8_t b)
/** 主机从芯片读取一个字节*****/
uint8_t I2C_master_read(uint8_t ack)
声明并初始化i2c设备接口:
void GPIOI2C_Bus_Init(void)
2.b 主函数示例
#include "MC11.h"
#include "i2c_master.h"
int wait_time=0;
float F0,F1,C;//通道0/1频率值,电容值
bool result = 0;
int main()
{
GPIOI2C_Bus_Init(); //I2C引脚初始化,i2c_master.h中可自定义修改I2C GPIO引脚/时钟等,需参照所使用的MCU自行更改;
result = MC11_Init(&wait_time); //MC11初始化配置,获取测量转换时间;
if(!result)PR("MC11_Init failed\r\n");
while(1)
{
result = MC11_Measure(&F0,&F1,&C,wait_time); //循环测量MC11频率/电容;
if(result!=0)PR("F0:%.3f Mhz F1:%.3f Mhz C:%.3f Pf\r\n",F0,F1,C);
}
}
2.c 必需属性
版权所有 (C) 2024@MySentch
/*********************************************** MC11_驱动函数介绍********************************************/
/**-----------------------------------------------------------------------
- @brief 开启测量双通道频率&电容
- @param *F0:通道0频率值;*F1:通道1频率值;*C:电容值
- @retval 是否传输成功
-------------------------------------------------------------------------*/
int MC11_Measure(float *F0, float *F1 ,float *C,int wait_time)
/**-----------------------------------------------------------------------
- @brief MC11配置抗尖峰滤波
- @param en:开关滤波器
- @retval 是否传输成功
-------------------------------------------------------------------------*/
int MC11_Filter_EN(uint8_t en)
/**-----------------------------------------------------------------------
- @brief MC11初始化函数
- @param *wait_time:测量等待时间
- @retval 是否传输成功
-------------------------------------------------------------------------*/
int MC11_Init(int *wait_time)
/**-----------------------------------------------------------------------
- @brief 计算修正值
- @param DATA:DATA1和DATA0的比值
- @param Coef:修正值
- @retval None
-------------------------------------------------------------------------*/
void DA1_DA0(float DATA,float *Coef)
/**-----------------------------------------------------------------------
- @brief MC11启动软复位
- @param None
- @retval 是否传输成功
-------------------------------------------------------------------------*/
int MC11_Reset(void)
/**-----------------------------------------------------------------------
- @brief 配置双通道比值报警/报警解除阈值
- @param TH:报警阈值;TL:解除报警阈值,MC11_SetAlert(0.7,0.5),
DATA0/DATA1超过0.7触发STATU报警位,低于0.5解除STATU报警位
- @retval 是否传输成功
-------------------------------------------------------------------------*/
int MC11_SetAlert(float TH , float TL)
/**-----------------------------------------------------------------------
- @brief 配置测量通道数
- @param argstr:需要开启通道的通道数,3表示开启双通道,0表示关闭双通道;
MC11_SetChannel(1),开启第1通道;
- @retval 是否传输成功
-------------------------------------------------------------------------*/
int MC11_SetChannel(uint8_t ch)
/**-----------------------------------------------------------------------
- @brief 读任意寄存器
- @param temp:高8位为读首位寄存器地址,低8位为读取数量;*data:读到的寄存器值
MC11_ReadReg(0404,data),读取0x04-0x07寄存器的值;
- @retval 是否传输成功
-------------------------------------------------------------------------*/
int MC11_ReadReg(uint16_t temp,uint8_t *data)
/**-----------------------------------------------------------------------
- @brief 写任意寄存器
- @param temp:高8位为寄存器地址,低8位为写入值;
MC11_WriteReg(100f),0x10寄存器写入值0x0F;
- @retval 是否传输成功
-------------------------------------------------------------------------*/
int MC11_WriteReg(uint16_t temp)
/**-----------------------------------------------------------------------
- @brief 配置通道驱动电流
- @param drive_i:需要配置的驱动电流;
MC11_SetDrive_I(DRIVE_I_04mA),配置驱动电流为0.4ma;
- @retval 是否传输成功
-------------------------------------------------------------------------*/
int MC11_SetDrive_I(Drive_I_Type drive_i)
/**-----------------------------------------------------------------------
- @brief 配置通道分频系数
- @param fin_div:外部输入频率分频;fref_div:内部参考时钟分频;
例:MC11_SetFreDiv(1,1)配置外部输入频率部分频,内部参考频率不分频;
- @retval 是否传输成功
-------------------------------------------------------------------------*/
int MC11_SetFreDiv(uint16_t fin_div,uint8_t fref_div)
*////////////////////////////////////////////////////////////////