FDC2214电容传感器驱动程序

本文档包含FDC2214电容传感器的驱动程序源代码,包括FDC2214.C和FDC2214.H头文件,以及示例应用main.c。详细讲解了如何使用这些文件来与FDC2214传感器进行交互,为电容式传感应用提供支持。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

FDC2214.C

  1 #include "fdc2214.h"
  2 #include "delay.h"
  3 #include "led.h"
  4 
  5 u32 Data_FDC;
  6 void FDC_IIC_Delay(void)
  7 {
  8     delay_us(2);
  9 }
 10 
 11 void FDC_GPIO_Init(void)
 12 {
 13     
 14 }
 15 
 16 void FDC_IIC_Init(void)
 17 {                         
 18   GPIO_InitTypeDef  GPIO_InitStructure;
 19     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//先使能外设IO PORTC时钟 
 20         
 21   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_5;//端口配置
 22   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;         //推挽输出
 23     //GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
 24   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        //IO口速度为50MHz
 25   GPIO_Init(GPIOC, &GPIO_InitStructure);                        //根据设定参数初始化GPIO 
 26     
 27   GPIO_SetBits(GPIOC,GPIO_Pin_4|GPIO_Pin_5);                  //PC.4,PC.5 输出高    
 28 }
 29 
 30 //产生IIC起始信号
 31 void FDC_IIC_Start(void)
 32 {
 33     FDC_SDA_OUT();     //sda线输出
 34     FDC_IIC_SDA=1;            
 35     FDC_IIC_SCL=1;
 36     FDC_IIC_Delay();
 37      FDC_IIC_SDA=0;//START:when CLK is high,DATA change form high to low 
 38     FDC_IIC_Delay();
 39     FDC_IIC_SCL=0;//钳住I2C总线,准备发送或接收数据 
 40 }      
 41 //产生IIC停止信号
 42 void FDC_IIC_Stop(void)
 43 {
 44     FDC_SDA_OUT();//sda线输出
 45     FDC_IIC_SCL=0;
 46     FDC_IIC_SDA=0;//STOP:when CLK is high DATA change form low to high
 47      FDC_IIC_Delay();
 48     FDC_IIC_SCL=1; 
 49     FDC_IIC_SDA=1;//发送I2C总线结束信号
 50     FDC_IIC_Delay();                                   
 51 }
 52 //等待应答信号到来
 53 //返回值:1,接收应答失败
 54 //        0,接收应答成功
 55 u8 FDC_IIC_Wait_Ack(void)
 56 {
 57     u8 ucErrTime=0;
 58     FDC_SDA_IN();      //SDA设置为输入  
 59     FDC_IIC_SDA=1;FDC_IIC_Delay();       
 60     FDC_IIC_SCL=1;FDC_IIC_Delay();     
 61     while(FDC_READ_SDA)
 62     {
 63         ucErrTime++;
 64         if(ucErrTime>250)
 65         {
 66             FDC_IIC_Stop();
 67             return 1;
 68         }
 69     }
 70     FDC_IIC_SCL=0;//时钟输出0        
 71     return 0;  
 72 }
 73 
 74 
 75 //产生ACK应答
 76 //void FDC_IIC_Ack(void)
 77 //{
 78 //    FDC_IIC_SCL=0;
 79 //    FDC_SDA_OUT();
 80 //    FDC_IIC_SDA=0;
 81 //    FDC_IIC_Delay();
 82 //    FDC_IIC_SCL=1;
 83 //    FDC_IIC_Delay();
 84 //    FDC_IIC_SCL=0;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值