Chinaunix首页 | 论坛 | 博客
  • 博客访问: 106135
  • 博文数量: 32
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 318
  • 用 户 组: 普通用户
  • 注册时间: 2013-08-30 09:58
个人简介

经过长期对C语言的研究,目前只有两个方面不懂:这也不懂,那也不懂。 本人擅长 Ai、Fw、Fl、Br、Ps 等软件的安装卸载,精通 CSS、Java、PHP、C、C++、C#、Java、Ruby、Python、Objective-C等单词的拼写,熟悉 Windows、Linux、Mac、Android、iOS等系统的开关机 https://github.com/ianhom

文章分类

全部博文(32)

我的朋友

分类: 嵌入式

2015-01-08 14:48:07

基本信息:一款多路控制器,每一路都有模拟量需要采集,常用型号芯片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) |
给主人留下些什么吧!~~