FDC2214評估版,電容式傳感器,多用于手勢識別,紙張數量識別等
接線圖:
FDC2214接線圖-STM32.jpg (284.21 KB, 下載次數: 41)
下載附件
2023-8-9 11:41 上傳
單片機源程序如下:- #include "bsp.h"
- /*******************************************************************************
- * 函數名 : WriteRegfdc2214
- * 描述 : 寫寄存器數據
- * 輸入參數 : add,value
- * 返回參數 : 無
- *******************************************************************************/
- void WriteRegfdc2214(u8 add,u16 value)
- {
- IIC_Start();
- IIC_Send_Byte(0X54); //ADDR=0時,地址0X2A<<1+0=0X54
- IIC_Wait_Ack(); //等應答
- IIC_Send_Byte(add); //寫地址
- IIC_Wait_Ack(); //等應答
- IIC_Send_Byte(value>>8); //寫高8位
- IIC_Wait_Ack();
- IIC_Send_Byte(value&0xff);//寫低8位
- IIC_Wait_Ack();
- IIC_Stop(); //產生一個停止條件
- delay_ms(10);
- }
- /*******************************************************************************
- * 函數名 : ReadRegfdc2214
- * 描述 : 讀寄存器數據
- * 輸入參數 : add地址
- * 返回參數 : 無
- *******************************************************************************/
- unsigned int ReadRegfdc2214(unsigned char add)
- {
- u16 status;
- u16 a,b;
- IIC_Start();
- IIC_Send_Byte(0X54); //寫命令ADDR=0
- IIC_Wait_Ack();
- IIC_Send_Byte(add); //地址
- IIC_Wait_Ack();
- IIC_Start(); //重新開始
- IIC_Send_Byte(0X55); //發送讀命令ADDR=0
- IIC_Wait_Ack();
- a=IIC_Read_Byte(1); //讀高位
- b=IIC_Read_Byte(0); //讀低位
- status=(a<<8)+b;
- IIC_Stop();
- return (status);
- }
- /*******************************************************************************
- * 函數名 : InitSingleLDC1314
- * 描述 : 初始化單通道
- * 輸入參數 : 無
- * 返回參數 : 無
- *******************************************************************************/
- void InitSingleFDC2214(void)
- {
- WriteRegfdc2214(0x08,0xFFFF);//設置轉換時間 設置達到最高精度
- WriteRegfdc2214(0x10,0x0064);//FDC2214_SETTLECOUNT_CH0 計數
- WriteRegfdc2214(0x14,0x2001); //分頻洗系數
- // LDC_Write_Reg(0x0C,0x0F00); //調零
- WriteRegfdc2214(0x19,0x0000); //ERROE_CONFIG
-
- WriteRegfdc2214(0x1B,0x020D); //通道配置
- WriteRegfdc2214(0x1E,0xF800); //配置驅動電流
- WriteRegfdc2214(0x1A,0x1C81); //參數配置
- }
- /*******************************************************************************
- * 函數名 : InitMultiLDC1314
- * 描述 : 初始化多通道
- * 輸入參數 : 無
- * 返回參數 : 無
- *******************************************************************************/
- void InitMultiFDC2214(void)//雙通道
- {
- WriteRegfdc2214(0x08,0x04D6);//轉換時間
- WriteRegfdc2214(0x09,0x04D6);
- WriteRegfdc2214(0x0A,0x04D6);//轉換時間
- WriteRegfdc2214(0x0B,0x04D6);
-
- WriteRegfdc2214(0x0C,0x0F00); //調0值 CH0
- WriteRegfdc2214(0x0D,0x0F00); //調0值 CH1
- WriteRegfdc2214(0x0E,0x0F00); //調0值 CH2
- WriteRegfdc2214(0x0F,0x0F00); //調0值 CH3
-
- WriteRegfdc2214(0x10,0x000A);//作用時間 CH1
- WriteRegfdc2214(0x11,0x000A);//CH2
- WriteRegfdc2214(0x12,0x000A);//CH3
- WriteRegfdc2214(0x13,0x000A);//CH4
-
- WriteRegfdc2214(0x14,0x2002);//分頻
- WriteRegfdc2214(0x15,0x2002);
- WriteRegfdc2214(0x16,0x2002);//分頻
- WriteRegfdc2214(0x17,0x2002);
-
- WriteRegfdc2214(0x19,0x0000);
- WriteRegfdc2214(0x1B,0xC20D);//配置多通道 2通道--0x820D
-
- WriteRegfdc2214(0x1E,0x9000); //驅動電流 CH0
- WriteRegfdc2214(0x1F,0x9000); //CH1
- WriteRegfdc2214(0x20,0x9000); //CH2
- WriteRegfdc2214(0x21,0x9000); //CH3
-
- // LDC_Write_Reg(0x1A,0x1401);
- WriteRegfdc2214(0x1A,0x1C81);//配置寄存器
-
- }
- //Configuration register
- // Active channel Select: b00 = ch0; b01 = ch1; b10 = ch2; b11 = ch3;
- // |Sleep Mode: 0 - device active; 1 - device in sleep;
- // ||Reserved, reserved, set to 1
- // |||Sensor Activation Mode: 0 - drive sensor with full current. 1 - drive sensor with current set by DRIVE_CURRENT_CHn
- // ||||Reserved, set to 1
- // |||||Reference clock: 0 - use internal; 1 - use external clock
- // ||||||Reserved, set to 0
- // |||||||Disable interrupt. 0 - interrupt output on INTB pin; 1 - no interrupt output
- // ||||||||High current sensor mode: 0 - 1.5mA max. 1 - > 1.5mA, not available if Autoscan is enabled
- // ||||||||| Reserved, set to 000001
- // ||||||||| |
- // CCS1A1R0IH000000 -> 0001 1100 1000 0001 -> 0x1E81 0001 1100 1000 0001 -> 0x1C81
復制代碼
原理圖:無
程序:
STM32Project.rar
(280.41 KB, 下載次數: 16)
2023-8-9 11:41 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|