摘要:随着网络技术发展和市场需求的变化,工业设备实现网络化管理控制已经成为一种必然趋势。本文讨论基于Web的MCF5249数据采集系统的设计方法,并从硬件设计和软件设计两方面进行讨论。
关键词:MCF5249 uClinux Web 数据采集
引言
现在嵌入式系统的应用越来越广泛。随着网络技术发展和市场需求的变化,工业设备实现网络化管理控制已经成为一种必然趋势。M2M(Machine to Machine)的网络通信已成为国内外研究热点,而Web技术为工业设备实现网络化管理提供了一种解决方案。本文从硬件和软件设计两个方面讨论了摩托罗拉MCF5249处理器在数据采集方面的应用,并实现了采集数据的远程Web表征。
由于这一系统面向广义的过程,所以只要可获得过程参数,就能实现过程行业的远程在线表征。特别是基于Web完成实时数据库生成,真正实现远程集群系统的数据资源无人工干预自动获取。其应用将会不断地延伸。
本文描述的摩托罗拉MCF5249是以ColdFire 32位微处理器为基础的高性能处理器,该处理器内部集成了一个片内12位ADC,可用于工业数据采集。且数据采集系统基于嵌入式操作系统uClinux。由于uClinux是为没有MMU的微处理器设计的。且源泉代码公开,为降低成本和获取软件的自有产权提供了方便。当然,uClinux不是一个强实时系统,为支持一般过程系统,可以通过一些补丁程序来提高其实时性,所以本文讨论的数据采集系统主要应用于一些实时性要求不高的场合。
1 数据采集系统的硬件设计
摩托罗拉MCF5249处理器内部集成了一个片内12位∑—ΔADC,它有四路输入(ADIN0~ADIN3),任一时刻只允许一路输入,由多路选择器决定。ADC的数字部分在MCF5249的内部,而模拟电压比较器由外围电路提供。A/D转换的输出引脚以脉宽调制的格式提供参考电压,因此,该输出需要一个外围的阻容电路,将其转换成直流电压,以备外部的电压比较器电路使用。数据采集系统的硬件原理图如图1所示。
由于微处理器不可承受负电压,所以必须将输入电压限制在0~+3V之间。Motorola公司不建议使用外部箝位二极管直接在模拟输入端进行过压保护,而在输入端引入1~10kΩ的限流电阻和低通滤波器,在低通滤波器的输入端连接二极管对输入电压进行箝位。
2 数据采集系统的软件设计
数据采集系统的软件设计主要分为两大模块,即数据采集模块与数据显示模块。
2.1数据采集模块的设计
数据采集模块是系统的核心模块,为了提高数据采集的实时性,应采用中断方式完成数据采集。其流程图如图2所示。
MCF5249微处理器为其内部ADC提供了一个控制寄存器ADCONFIG,其地址是MBAR2_ADDR+0x402,在初始化程序中需要指定MBAR2_ADDR地址。
通过ADCONFIG寄存器可以设置A/D转换器工作方式、采样频率、是否采用中断方式等。下面给出设置ADCONFIG寄存器实例。
#define MBAR2_ADDR 0x8000000
#define AD_CONFIG 0x402
#define AD_VALUE 0x406
…………
//设置ADC
*(volatile unsigned short int *)(MBAR2_ADDR+AD_CONFIG)=0x442;
该设置确定ADIN0作为模拟信号输入通道,采样频率设置为1/4系统总线时钟频率。当时钟产生4095次翻转时,系统产生一个软件中断(中断号为63)。一次采样结束,并将采样结果存于ADVALUE寄存器(其地址为MBAR2_ADDR+0x406)。A/D转换值可以用如下公式计算:
Vi=(X/(2 n-1)) %26;#215;Vfullscate
其中,Vi为ADC的输入电压;Vfullscate为满量程输入电压;
X为ADC输出的数字量;
n为ADC的位数。
A/D转换的结果在中断处理程序中读取。读取一次转换的程序代码如下:
Volatile unsigned shortint m;
m=*(volatile unsigned short int *)(MBAR2_ADDR+AD_VALUE);
通常,A/D转换需要连续采样。采样结果应存放在一个多访问循环队列MACQ(Multiple Access Circular Queue)中。
MACQ是一个定长有序的数据结构。源进程(生产者,ADC采样程序)将数据存入MACQ,一旦初始化,MACQ总是满的。当有新的数据被存入(PUT)MACQ,旧数据即被丢弃(如图3)。应用进程(消费者)可以从MACQ中读取任何数据。读功能是非破坏性的,即读操作不会改变MACQ。
在uClinux中,A/D转换中断程序的编写方法是将A/D转换器作为一个字符设备来处理。中断程序是在linux/drivers/char目录下编写,其结构如下:*File:m5249_adirq.c
#include
#include
#define ADC_IRQ(128+63)//定义中断号
#define MBAR2_ADDR 0x8000000
#define AD_CONFIG 0x402
#define AD_VALUE 0x406
/*定义中断处理函数*/
void adirq_interrupt(int irq,void *d,struct pt_regs *regs){
在此读取A/D转换的值并存入队列中。
}
/*设备初始化函数*/
int adirq_init(){
int result;
unsigned short adc_irq;
adc_irq=ADC_IRQ;
result=request_irq(adc_irq,%26;amp;adirq_interrupt,SA_INTERRUPT,5249_adirq NULL);//注册中断
if(result= = -1)
{printk(“Can"t get assigned %d”adc_irq);
return result;}
return 0;
}
中断服务程序的添加方法如下:
①编辑uClinux/drivers/char目录下的mem.c,添加“adirq_init();”;
②编辑此目录下的Makefile加入“obj-y+=m5249_adirq.o”;
③编译(make)。
2.2 数据显示模块的设计
为了实现采集到的数据以Web方式显示,需要选择一个Web服务器。本文采用的Web服务器是BOA。在CGI程序中编写一个函数读取MACQ队列中的数据并显示。
主要有以下显示模块。
(1)编写一个CGI程序
*编写一个读取MACQ队列中数值的函
readFromMacq()。
*编写一个生成动态HTML页面的函数show()。
Void show_t(){
……
printf("Content-type:text/html");
prinft{"
");
在此将MACQ中的数据读出,假设值赋给变量n
prinft("
",n);
}
*编写一个CGI的主程序main_cgi。
在主程序中需要读取HTML页面中的字符,并判断应执行那一个CGI程序。
(2)用HTML语言编写一个主页
在主面中应包含:
键接字符.
其中,flag的值是main_cgi用于判断应执行哪一个CGI程序的标志。
结语
本文描述了使用MCF5249微处理内部∑—ΔADC进行数据采集的硬件和软件设计方法。给出的MCF5249应用方案和具体的应用细节都已现场调试成功。MCF5249是一个性价比较好的微处理器,可以用于家庭网关、MP3和工业数据采集系统。
编辑: 引用地址:基于Web的MCF5249数据采集系统的设计
上一篇:群体机器人研究的现状和发展
下一篇:电力驱动系统逆变器实时仿真
- 热门资源推荐
- 热门放大器推荐
小广播
热门活动
换一批
更多
最新传感技术文章
更多精选电路图
更多热门文章
更多每日新闻
- Allegro MicroSystems 在 2024 年德国慕尼黑电子展上推出先进的磁性和电感式位置感测解决方案
- 左手车钥匙,右手活体检测雷达,UWB上车势在必行!
- 狂飙十年,国产CIS挤上牌桌
- 神盾短刀电池+雷神EM-i超级电混,吉利新能源甩出了两张“王炸”
- 浅谈功能安全之故障(fault),错误(error),失效(failure)
- 智能汽车2.0周期,这几大核心产业链迎来重大机会!
- 美日研发新型电池,宁德时代面临挑战?中国新能源电池产业如何应对?
- Rambus推出业界首款HBM 4控制器IP:背后有哪些技术细节?
- 村田推出高精度汽车用6轴惯性传感器
- 福特获得预充电报警专利 有助于节约成本和应对紧急情况
更多往期活动
- 有奖直播:赋能移动电源,贝能推出1800W全数字双向电源方案
- 下载文档看视频有礼:获得更高效的PCIe一致性测试文档
- 以科技先行,传感新未来 下载艾迈斯半导体 《高精度短距离测量方案 》答题赢好礼!
- 今日竞拍:TI SimpleLink Wifi CC3220S
- ADI有奖下载活动之19:ADI可编程逻辑控制器(PLC)解决方案(更新版)
- 下载泰克高速接口标准电子书,参与翻盖有礼,惊喜多多!
- Microchip 有奖直播|满足汽车电池管理系统 (BMS) 不断发展的安全标准
- MPS有奖活动|梦想设计闪亮登场,便携式多功能电工台诞生啦!
- MM32F103开发板测评等你来
- EEWorld十五周年,感恩同行!盘点那些难忘的小确幸~
11月16日历史上的今天
厂商技术中心