13 Star 5 Fork 2

敏源传感科技/driver

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

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)

*////////////////////////////////////////////////////////////////

马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C
1
https://gitee.com/mysentech/driver.git
git@gitee.com:mysentech/driver.git
mysentech
driver
driver
i2c_driver

搜索帮助