基本信息:一款多路控制器,每一路都有模拟量需要采集,常用型号芯片GPIO工40个,包含14路的ADC管脚。项目需求24路I/O实现控制,13路ADC采集,3路特定IO,刚好40个,但串口和时钟与IO复用,故常用型号芯片无法满足要求。
整个AD采集过程可以划分成三层:物理回归层/采样控制层/通用底层
理由:
通用底层保留最基本的最通用的功能,可保证其他简单采样的要求
采样控制层主要应对硬件电路的不同,AD通道足够时可以使用所有的AD通道,AD通道不足时需要扩展数据选择器,可在该层注册函数控制数据选择器。
物理回归层主要用于校正解释AD值,即将AD值赋予明确的物理意义。
通用底层可以划分到驱动层,形成通用驱动文件;采样控制层可以和平台无关,可以作为软件模块;物理回归层和产品有一定相关性,但同系列产品复用的可能性很高,可以按具体物理量分类作为软件模块(例如电流采集模块)。预留出比例参数调整函数给应用层。物理量回归层特定模块会使用采样控制层。
举例:
例1:3路电流采样和6路电流采样,都属于采集电流,电流值从0开始,会需要进行零漂过滤,此时3路和6路都会使用“电流采样软件”模块。对该模块会用需要注意,在应用层中提供系数校准函数,同时“电流采样模块”需要调用采集控制模块进而调用底层驱动模块。此例中一般MCU满足3路和6路通道数量,故采集控制层中只需要直接调用AD通道。
例2:3路电流采样和20路电流采样,基本同上,但MCU一般没有20路AD通道数,故会在采样控制模块中选择数据选择器的方式,在调用底层驱动模块。
例3:4路照度采集,可创建“照度采集模块",然后调用采样控制模块,再调用驱动模块
例4:应用直接温度采集,应用程序直接调用驱动模块。
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
3D 分割线
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
经过思想斗争,发现对于某系列产品而言采样控制层没有太大的必要存在,可以合并进物理量采集模块中。
这样就一共两层:物理量采集软件模块,AD驱动模块。下面讨论下两个软件模块的接口
物理量采集软件模块:
出入参数 取值
通道号 0~255
是否是中断方式 是
否
中断回调函数 具体函数
null为默认函数
数据选择器操作函数 具体函数
null为不适用数据采集器
采样回路数 0~255
采样通道顺序结构体指针 具体指针(必须写)
采样数据缓存指针 具体指针(必须写)
采样次数 1/4/8/16
是否采用稳定判断 是
否
稳定判断函数 具体函数
null为默认函数
默认判断稳定函数数据数量 0~255
默认判断稳定函数波动最大值 0~65535
零漂过滤值 0~65535
采样值是否更新 是
否
阅读(1986) | 评论(0) | 转发(0) |