这几天又要捡起之前帮师兄做的双模式传感器了,之前电容传感器部分用的是FDC2214方案,一年过去了,觉得有必要还是写一下这个芯片的配置过程.(之前换硬盘工程丢了....)
——ai时代多review,多自己看懂驱动,业务层的bug无非(我认为)就是你自己的逻辑/需求没理清,急头白脸了真丢给ai多描述几次他也能帮你做,但是驱动层的bug还真的自己看懂了手册,丢给ai可能是在开奖。
目录
前言:(主观含量高)
“引脚功能”+“功能框图”
经典应用部分
“Register Maps”
前言:(主观含量高)
写驱动嘛通用的:
1、先看芯片“引脚功能”+“功能框图”页,芯片内部功能区分布+里面会有原理的说明,知道大致的引脚有哪些以及功能。
2、直接看手册里面的经典应用部分(即使这个应用不是自己要的应用),看他配了什么寄存器,把这些寄存器(大概率这部分也会说这些寄存器是干什么的)记录下来——得到一个最小配置表,然后看完整个应用的过程,知道里面的配置过程以及计算过程,对于芯片的使用有一个大致了解。
3、再去到“Register Maps”的章节(大概率是在“详细说明”的章节里),里面有寄存器配置细节,把之前得到的最小配置表在这里理解透彻,再改成自己想要的。
ps:上面的部分一定要留痕,避免后续自己review代码时不能快速找到对应项(即使用ai也还是得review)
最后再用网上现成的demo代码(大概率都有),看着自己总结的笔记移植,或者这部分纯体力活就交给ai再review,自己之后出问题调试的时候能快速看自己的笔记改。
“引脚功能”+“功能框图”
采用L-C谐振器,也称为L-C谐振腔作为传感器。与其他电容传感解决方案相比,窄带结构具有很强的的电磁干扰抗扰度并大大降低本底噪音。观察到L-C谐振腔的电容变化,也就是谐振频率的偏移。利用这一原理,FDC是一种测量LC谐振器振荡频率的电容-数字转换器。FDC芯片输出一个与频率成比例的数字值。这个频率测量值可转换为等效电容。
使用参考频率fREF来测量传感器频率。fREF是内部或外部参考时钟(振荡器)。每个通道的数字化输出是fSENSOR/fREF的比值。I2C接口用于芯片配置和传输结果数据。SD用于设置关机模式,以节省电流。可配置的中断引脚INTB用来通知主机芯片状态的变化。
——由框图可知,fREF是可以自己设置已知的,而DATAx是软硬件搭建好后输出的原始值,
根据下图可知,我们可以反推fSENSOR
——得到fSENSOR,反推目标电容:
好了,原理知道了,其他细节就是慢慢在“详细说明”里配置什么......
“单/多通道”、“通道转换时候的稳定时间配置”、“电流驱动控制寄存器”、【这些我就不细讲了,手册已经讲的很清楚了,这部分图片放文末。
原理已经懂了,快速开发,直接进入经典应用,应用里想改啥再回到上面说的的几个配置细节里自己改。】
经典应用部分
按照为前言说的步骤,到这里看经典应用的一些配置应该会感到迷茫,正常的,主要才快嘛,带着问题看、找,总比看什么教学视频、ai投喂来的实在,锻炼脑子。
拿上图横线部分,乍一看不知道为什么这么配(中文手册常见的翻译问题,建议这种手册中英文都准备一份,中文的哪部分看起来怪,就定位英文的那部分看)
,这里我们直接搜0x14,就是下图了,一切一目了然,其他的一样的道理。
由上最小配置表(初版):
| 寄存器名称 | 地址 | 配置作用 |
|---|---|---|
MUX_CONFIG | 0x1B | 单通道/多通道扫描、扫描通道范围、输入去毛刺滤波带宽 |
CONFIG | 0x1A | 活动通道、休眠/启动转换、内部/外部参考时钟、传感器激活方式等 |
多通道的话也先配一个通道0试试:
RCOUNT_CH0 0x08
SETTLECOUNT_CH0 0x10
CLOCK_DIVIDERS_CH0 0x14
DRIVE_CURRENT_CH0 0x1E
MUX_CONFIG 0x1B
CONFIG 0x1A
“Register Maps”
图上后面的各个寄存器细节就看手册根据自己的业务设计了。
“单/多通道”
“通道转换时候的稳定时间配置”
“电流驱动控制寄存器”