基于STM32的FDC2214参考设计,详细中文资料、程序源码及PCB原理图文件
2022-05-04 20:41:20 7.09MB pcb 电路设计方案 原理图 电路方案
1
手势识别,基于FDC2214的实物产品。手势数据的录入和手势识别部分。
2022-04-27 16:52:04 5.79MB 电子设计
1
FDC电容式传感器的数据手册,里面部分中文,并且有学习笔记。
2022-04-25 16:18:07 2.11MB 电容传感器
1
2018年电赛FDC2214程序 已经开发好的程序 调试没有问题的
2022-03-09 10:59:20 4.7MB FDC2214
1
#define _FDC2X14_C #include "sys.h" #include "FDC2X14.h" #include "myiic.h" #include "delay.h" #include "usart.h" #define FDC2X14_Address 0x2A #define FDC2X14_W FDC2X14_Address<<1 #define FDC2X14_R (FDC2X14_Address<<1)+1 #define DATA_CH0 0x00 #define DATA_LSB_CH0 0x01 #define DATA_CH1 0x02 #define DATA_LSB_CH1 0x03 #define DATA_CH2 0x04 #define DATA_LSB_CH2 0x05 #define DATA_CH3 0x06 #define DATA_LSB_CH3 0x07 #define RCOUNT_CH0 0x08 #define RCOUNT_CH1 0x09 #define RCOUNT_CH2 0x0A #define RCOUNT_CH3 0x0B #define OFFSET_CH0 0x0C #define OFFSET_CH1 0x0D #define OFFSET_CH2 0x0E #define OFFSET_CH3 0x0F #define SETTLECOUNT_CH0 0x10 #define SETTLECOUNT_CH1 0x11 #define SETTLECOUNT_CH2 0x12 #define SETTLECOUNT_CH3 0x13 #define CLOCK_DIVIDERS_C_CH0 0x14 #define CLOCK_DIVIDERS_C_CH1 0x15 #define CLOCK_DIVIDERS_C_CH2 0x16 #define CLOCK_DIVIDERS_C_CH3 0x17 #define STATUS 0x18 #define ERROR_CONFIG 0x19 #define CONFIG 0x1A #define MUX_CONFIG 0x1B #define RESET_DEV 0x1C #define DRIVE_CURRENT_CH0 0x1E #define DRIVE_CURRENT_CH1 0x1F #define DRIVE_CURRENT_CH2 0x20 #define DRIVE_CURRENT_CH3 0x21 #define MANUFACTURER_ID 0x7E #define DEVICE_ID 0x7F u32 Init_FDC[4]; u32 Data_FDC[4]; ///FDC2X14 IO��ʼ�� void FDC2X14_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE ); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO;_InitStructure); GPIO_ResetBits(GPIOB,GPIO_Pin_9); // ������ IIC_Init();//��ʼ��iic //����SetFDC2X14�Ĵ��� SetFDC2X14(RCOUNT_CH0,0x30,0xCB); SetFDC2X14(RCOUNT_CH1,0x30,0xCB); SetFDC2X14(RCOUNT_CH2,0x30,0xCB); SetFDC2X14(RCOUNT_CH3,0x30,0xCB); SetFDC2X14(CLOCK_DIVIDERS_C_CH0,0xff,0x01); SetFDC2X14(CLOCK_DIVIDERS_C_CH1,0x20,0x01); SetFDC2X14(CLOCK_DIVIDERS_C_CH0,0x20,0x01); SetFDC2X14(CLOCK_DIVIDERS_C_CH1,0x20,0x01); SetFDC2X14(SETTLECOUNT_CH0,0xff,0xff); SetFDC2X14(SETTLECOUNT_CH1,0x00,0x19); SetFDC2X14(SETTLECOUNT_CH2,0x00,0x19); SetFDC2X14(SETTLECOUNT_CH3,0x00,0x19); SetFDC2X14(ERROR_CONFIG,0x00,0x00); SetFDC2X14(MUX_CONFIG,0x82,0x0c); SetFDC2X14(DRIVE_CURRENT_CH0,0x50,0x00); SetFDC2X14(DRIVE_CURRENT_CH1,0x50,0x00); SetFDC2X14(DRIVE_CURRENT_CH2,0x50,0x00); SetFDC2X14(DRIVE_CURRENT_CH3,0x50,0x00); SetFDC2X14(CONFIG,0x14,0x01);//ʹ���ⲿʱ�� 0x17 0x01 //��ȡ��ʼֵ���ֵ� Init_FDC[0]=FDC2X14ReadCH(0); Init_FDC[1]=FDC2X14ReadCH(1); Init_FDC[2]=FDC2X14ReadCH(2); Init_FDC[3]=FDC2X14ReadCH(3); } //���ݶ�ȡ //indexͨ������ int FDC2X14ReadCH(u8 index) { int result; switch(index) { case 0x00: result = ReadFDC2X14(DATA_CH0,DATA_LSB_CH0); break; case 0x01: result = ReadFDC2X14(DATA_CH1,DATA_LSB_CH1); break; case 0x02: result = ReadFDC2X14(DATA_CH2,DATA_LSB_CH2); break; case 0x03: result = ReadFDC2X14(DATA_CH3,DATA_LSB_CH3); break; } // printf("result=%d \r\n",result); return result; } void SetFDC2X14(u8 Address,u8 MSB,u8 LSB) { IIC_Start(); IIC_Send_Byte(FDC2X14_W); IIC_Wait_Ack(); ADS_delay(); IIC_Send_Byte(Address); IIC_Wait_Ack(); ADS_delay(); IIC_Send_Byte(MSB); IIC_Wait_Ack(); ADS_delay(); IIC_Send_Byte(LSB); IIC_Wait_Ack(); ADS_delay(); IIC_Stop(); ADS_delay(); } unsigned int ReadFDC2X14(u8 firstAddress,u8 secondAddress) { unsigned int temp; u8 result[4]; IIC_Start(); IIC_Send_Byte(FDC2X14_W); IIC_Wait_Ack(); ADS_delay(); IIC_Send_Byte(firstAddress); IIC_Wait_Ack(); ADS_delay(); IIC_Stop(); ADS_delay(); IIC_Start(); IIC_Send_Byte(FDC2X14_R); IIC_Wait_Ack(); ADS_delay(); result[0]=IIC_Read_Byte(1);//���ֽ� ����λ���� result[0] = result[0]<>4; IIC_Ack(); ADS_delay(); result[1]=(IIC_Read_Byte(1)); //temp=���ֽ�+���ֽ� IIC_Ack(); IIC_Stop(); ADS_delay(); IIC_Start(); IIC_Send_Byte(FDC2X14_W); IIC_Wait_Ack(); ADS_delay(); IIC_Send_Byte(secondAddress); IIC_Wait_Ack(); ADS_delay(); IIC_Stop(); ADS_delay(); IIC_Start(); IIC_Send_Byte(FDC2X14_R); IIC_Wait_Ack(); ADS_delay(); result[2]=IIC_Read_Byte(1);//���ֽ� ����λ���� IIC_Ack(); ADS_delay(); result[3]=(IIC_Read_Byte(1)); //temp=���ֽ�+���ֽ� IIC_Ack(); IIC_Stop(); ADS_delay(); temp = (unsigned int)(((result[0]<< 24) | (result[1] << 16) | (result[2] << 8) | (result[3] & 0xff))); return(temp); } unsigned int ReadFDC2X14_1(u8 firstAddress) { unsigned int temp; u8 result[4]; IIC_Start(); IIC_Send_Byte(FDC2X14_W); IIC_Wait_Ack(); ADS_delay(); IIC_Send_Byte(firstAddress); IIC_Wait_Ack(); ADS_delay(); IIC_Stop(); ADS_delay(); IIC_Start(); IIC_Send_Byte(FDC2X14_R); IIC_Wait_Ack(); ADS_delay(); result[0]=IIC_Read_Byte(1);//���ֽ� ����λ���� IIC_Ack(); ADS_delay(); result[1]=(IIC_Read_Byte(1)); //temp=���ֽ�+���ֽ� IIC_Ack(); IIC_Stop(); ADS_delay(); temp=(result[1]<<8)+result[1]; return(temp); } /*������·���� *index:0����·0 * 1����·1 * 2����·2 * 3����·3 *����ֵ����·�ܵ���C */ float Cap_Calculate(u8 index) { float Cap,cap_init; Data_FDC[index]= FDC2X14ReadCH(index); Cap = 114262451.63/(Data_FDC[index]); cap_init=114262451.63/(Init_FDC[index]); return (Cap*Cap)-(cap_init*cap_init); } float Cap_Calculate_Xtimce(u8 timce,u8 index) { float Cap; u8 i; Cap=0; for(i=0;i
2022-02-25 14:08:21 8.88MB FDC2214
1
本项目是基于STM32F103的纸张计数显示装置设计,采用的方案是FDC2214电容数字传感器。该项目可实现一键自动检测,无需手动按压等操作。开源资料包括展示视频、设计报告、3D模型(使用Rhino打开)、PCB文件、完整程序。
2022-01-18 18:03:10 331.76MB 嵌入式 电赛 纸张计数显示装置
1
包含了fdc2214的全部使用方式,以及芯片的详细资料。FDC2x1x抗电磁干扰的28位,12位电容数字转换器,用于接近性和抗干扰性液位传感应用 1特点 •抗电磁干扰建筑 •最大输出速率(一个活动通道): - 13.3ksps(FDC2112,FDC2114) - 4.08ksps(FDC2212,FDC2214) •最大输入电容:250 nF(10 kHz,1 mH电感) •传感器激励频率:10 kHz至10 MHz •频道数量:2,4 •分辨率:最多28位 •系统本底噪声:100 sps 0.3 fF •电源电压:2.7 V至3.6 V •功耗:有效:2.1毫安 •低功耗睡眠模式:35 uA •关机:200 nA •接口:I 2 C •温度范围:-40°C至+ 125°C
2021-11-28 13:11:01 3MB 电赛
1
全中文翻译,10.2.3.2有一些寄存器的推荐配置,有需要的可以看看.
2021-11-23 16:43:41 5.44MB FDC2214 translate
1
FDC2214程序STM32OLED串口ZET6,用于stm32zet6的学习,联系,用于fdc2214的串口联系,学习
2021-11-22 19:47:29 4.46MB stm32 oled 串口
1
FDC2214与430F5529及STM32的程序和连线,为电赛提供参考
2021-11-14 18:28:43 3.35MB 程序和连线
1