历史上的今天
返回首页

历史上的今天

今天是:2025年04月20日(星期日)

正在发生

2021年04月20日 | 基于EP7312的嵌入式频谱分析技术

2021-04-20 来源:eefocus

本文以ARM EP7312和CS5341为核心设计了音频信号采集系统,研究了嵌入式Linux系统的驱动程序设计和基于多线程、模块化的应用程序设计问题。该系统能够对采集的信号进行FFT变换、存储和显示。


在工程应用中,通过数字采集系统对信号进行采集和显示,可以获取直观的时域波形。但往往人们还需要从时域信息中提取出信号的其它特征,如信号的频域信息。本设计通过数据采集电路对模拟信号进行采集,采用512点的时间抽取基2 FFT算法对采集的数据进行处理,然后在LCD上显示其频谱曲线。系统构建于嵌入式Linux操作系统之上,具有嵌入式设备体积小、成本低、功耗低等特点,可便捷地进行语音采集、显示、处理和声音信号的频谱分析,适用于环境监测及故障诊断等场合。



图1 系统构成图



图2 多线程程序流程图



图3 信号的时域图和频谱图



数据采集电路设计

本系统由模数转换模块、数据处理和控制模块、显示模块这三部分组成,如图1所示。

模数转换芯片采用的是Cirrus Logic公司推出的24位两通道立体声模数转换芯片CS5341,其输出为串行形式,采样频率从32kHz 到192kHz。它有主从两种工作模式,由主从模式选择开关进行选择。

数据处理和控制模块采用了ARM7系列的嵌入式32位EP7312处理器,主频为74MHz。

在该设计中,模拟信号经过放大电路可放大为原来的1倍、2倍、4倍或10倍,具体可由放大倍数开关控制。放大倍数通过EP7312的通用端口控制LCD上每个刻度代表的电压值。CS5341的工作模式为从模式,在该模式下主时钟、串行数据时钟和通道选择时钟都由EP7312提供,串行数据时钟的频率为通道选择时钟的64倍,主时钟频率为通道选择时钟的256倍。当串行数据时钟处于上升沿时,CS5341输出一位数据。通道选择时钟高电平时左通道有效,低电平时右通道有效。


系统的软件设计

系统的软件设计包括驱动设计和应用设计两部分。

驱动设计

在嵌入式Linux系统中,设备驱动程序隐藏了各种设备的具体细节,维护着设备的正常工作,在用户与设备之间起到了桥梁作用。开发设备驱动程序是开发嵌入式系统的重要工作之一。在该系统中,涉及两个驱动程序:CS5341驱动和LCD驱动。EP7312为LCD的控制提供了良好的支持,驱动程序的具体设计可参照参考文献3。

下面介绍CS5341驱动程序的设计。由于CS5341数据采集速度较快,最高达192kHz。为了与其相匹配,我们采用了快速中断fiq。与普通中断不同,快速中断模式有专用的组合寄存器集,因而大大减少了中断时间。而快速中断的申请需要用到中断处理函数的首地址和末地址,为了得到这两个地址,中断处理函数必须用汇编来编写。因此,该驱动有两个文件构成:主文件cs5341.c和中断文件fiq.s。在此着重说明主文件中的设备初始化函数cs5341init()和中断函数。

int CS5341Init(void)

{

..................................

//禁止中断

INTMR3 = 0x0;

//设置相关寄存器

SYSCON3 |= 0x00000008;

DAI64FS = 0x60B;

DAIR =0x00220404;

DAISR =0xFFFFFFFF;

DAIR |=0x10000;

...................................

//注册设备

rc= register_chrdev (cs5341_major, "CS5341", &CS5341_fops);

...................................

//申请fiq

fiqhandler_start = &dai_fiq_handler_start;

fiqhandler_length = &dai_fiq_handler_end - &dai_fiq_handler_start;

if (claim_fiq(&cs5341_fh))

{

printk("cs5341_fh: couldn't claim FIQ.n");

return;

}

set_fiq_hander(fiqhander_start, fiqhander_length);

set_fiq_regs(regs);

..................................

return 0;

}

中断处理程序:

.....................................

.text

.align 2

.global dai_fiq_handler_start

.global dai_fiq_handler_end

dai_fiq_handler_start:

//程序首地址

........................................

........................................

dai_fiq_handler_end:

//程序末地址

应用程序设计

该系统的应用程序设计主要包括数据存储、数据处理(FFT)和波形显示。

数据存储

在该模块中,申请两块缓冲区buf和buffer,buf用来存放采集的数据,buffer为临界资源。程序把数据从buf放入临界资源buffer中,设置一个共享锁,实现该模块、数据的处理和显示模块的互斥访问。

数据处理模块

该模块采用FFT算法对采集的数据进行处理。

FFT变换的具体实现如下:

首先进行码位倒置,得到FFT运算所需要的输入序列。然后采用3层循环完成N点FFT(这里N=512)。

第一层循环:“级”作为第一层循环,N点FFT运算共有M级,这里,我们用m作循环变量,。

第二层循环:“组”作为第二层循环,第m级的组数为,用j作循环变量,。

第三层循环:每组里的蝶形单元作为第三层循环,每一组里共有蝶型单元2m个,用i作循环变量,。

分析上面循环可以得出:第三层循环完成2m个蝶形单元计算;第二层循环使第三层循环进行次,因此,当第二层循环完成时,共进行次蝶形单元计算;第一层循环又使第二层循环进行了M次,因此,当第一层循环完成时,共进行了次蝶型单元计算。

波形显示模块

因为要把处理前的数据和经过FFT处理后的数据同时显示在LCD上,所以,把LCD的上半屏分配给未处理的数据,用于显示时域图;下半屏用于显示频谱图。为了把波形显示在特定的区域,需要对数据进行处理。所采集的数据和FFT变换过的数据的范围均为0~0XFF,0对应于LCD上Y轴坐标的120和210,0XFF对应于LCD上Y轴坐标的30和120。因此,用于显示时域图的数据VAL与其在LCD上Y坐标的关系式为:

Y=120-VAL×90/0XFF

用于显示频谱图的数据NUM与其在LCD上Y坐标的关系式为:

Y=210-NUM×90/0XFF

LCD一屏可显示310个数据点,点与点之间用矢量法直线相连。

多任务操作系统下的编程

与传统的单片机系统不同,Linux是一个多任务的嵌入式操作系统。内核允许将一项工作划分为几个相互独立的任务,这样就缩短了整个系统的响应时间,提高了系统性能。

在设计时采用了多线程的编程方式,从而克服了多进程编程中资源占用量多和响应时间慢等缺点。该程序包括三个线程,流程图如图2所示。主线程负责数据的采集和传输,另外两个辅助线程是在主线程的运行过程中产生的,分别完成数据的处理和波形的显示。

当输入信号的频率为0.377kHz (周期为2.65ms)时,该信号的时域波形及频谱曲线如图3所示。从图中可以看出,通过FFT变换,输入信号的频率特性可以较准确地反映出来。


结语

以EP7312处理器和模数转换芯片CS5341为核心构成的数据采集系统,充分运用了它们在音频采集和处理方面的优势,可以对音频数据流进行实时性的采集、变换、存储和显示,具有速度快、采样频率高、体积小和低功耗等特点。以该系统为核心技术开发的产品可应用于医疗、运输、娱乐等行业,具有广泛的应用前景。


推荐阅读

史海拾趣

Corex Intervest Inc公司的发展小趣事

Corex Intervest Inc公司在电子行业的发展历程中,始终保持着稳健的步伐和进取的精神。公司不断适应市场变化和技术更新,不断调整战略方向和发展重点。在未来,公司将继续加大研发投入,拓展新的应用领域和市场空间,为电子行业的发展贡献更多的力量。

这五个故事展示了Corex Intervest Inc公司在电子行业中的发展历程和取得的成就。从创立初期的艰难起步到技术创新、市场拓展、战略合作和持续发展的不断推进,Corex Intervest Inc公司始终保持着积极进取的精神和不断创新的态度,在电子行业中取得了显著的成绩。

Condor公司的发展小趣事

随着公司规模的不断扩大和市场竞争的加剧,Corex Intervest Inc公司意识到单打独斗已经无法满足市场需求。因此,公司开始积极寻求与其他企业的战略合作,共同推动电子行业的发展。公司与多家知名企业建立了战略合作关系,共同研发新产品、开拓新市场,实现了资源共享和互利共赢。

Dialog公司的发展小趣事

Dialog公司最初可以追溯到1972年,当时它是由美国洛克希德导弹航空公司所属的一个情报科学实验室负责建立的。这个实验室的初衷是探索和开发新的通信技术,以支持军事和情报领域的需求。随着时间的推移,这个实验室逐渐积累了丰富的技术经验和研发实力。

DAESAN公司的发展小趣事

随着全球化进程的加速,DAESAN公司开始将目光投向国际市场。他们制定了详细的国际化战略,积极拓展海外市场。通过与国外企业的合作和交流,DAESAN公司逐渐建立起全球化的生产和销售网络。他们的产品不仅畅销亚洲市场,还成功打入欧美等发达国家市场。国际化战略的实施,使DAESAN公司的品牌知名度和影响力得到了显著提升。

EDI [Electronic devices inc.]公司的发展小趣事

在食品加工领域,Eclipse Magnetics公司同样展现出了强大的实力。他们针对谷蛋白粉加工过程中可能出现的金属污染问题,量身定制了一款磁选机。这款磁选机能够有效地去除原料中的金属杂质,保护加工麸质免受污染。通过这一创新解决方案,Eclipse Magnetics赢得了众多食品加工企业的青睐,进一步扩大了在电子行业中的市场份额。

请注意,以上故事均基于虚构性构建,旨在展示Eclipse Magnetics公司在电子行业中的发展历程和成就。如有需要,建议查阅相关公司资料或行业报告以获取更详细和准确的信息。

峰岹(Fortior Tech )公司的发展小趣事

随着科技的进步,Eclipse Magnetics公司开始关注航空航天领域的需求。他们发现,在复杂的航空系统中,精确的磁性控制至关重要。于是,公司投入大量研发资源,成功开发出一系列高性能的磁性产品,为航空航天领域提供了可靠的解决方案。这一突破不仅巩固了Eclipse Magnetics在电子行业中的地位,还为公司赢得了众多知名客户的信任。

问答坊 | AI 解惑

安检门原理及常见问题和维修方法

一、安检门原理由晶振产生3.5-4.95M的正弦振荡,由分频器分频为7.8K左右正弦波,经三极管与线圈进行功率放大后输入门板(7区)大线圈进行电磁波发射,由门内1-6区线圈分别进行接收。接收后,将接收到的信号与基准信号进行了比较,发现变化后,改变采 ...…

查看全部问答>

基站被盗的几大理由

  基站即公用移动通信基站,是无线电台站的一种形式,是指在一定的无线电覆盖区中,通过移动通信交换中心,与移动电话终端之间进行信息传递的无线电收发信电台. 移动通信基站的建设是我国移动通信运营商投资的重要部分,根据媒体的报道,中国移 ...…

查看全部问答>

索尼研发无线供电的目的是什么?

索尼试制了不用电源线即可驱动电视机等电子产品的“无线供电系统”。这种技术通过磁场共振传输电力,可向距离50cm~80cm的电子产品传输60W的电力。供受电设备间的送电效率为80%,加上电源整流电路等,系统整体效率维持在了60%。笔者日前采访了参 ...…

查看全部问答>

用Keil仿真经常出问题,无厘头

用LED共阴极方式写运行无错误 unsigned char code BitTab[]={0x02,0x04,0x08,0x10,0x20,0x40,0x80}; unsigned char code DispTab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; 把里面的数改为共阳极的数,就有*** error 65: access ...…

查看全部问答>

创造力,幻想,臆想天开 - 大家可以得出自己的结论

100件未来式设计方案,是否反映出想象力和现实的矛盾呢?作出你自己的判断吧http://www.webdesignerdepot.com/2009/04/100-amazing-futuristic-design-concepts-w-wish-were-real/…

查看全部问答>

TI研讨会中奖“TMDX5515EZDSP 开发板和工具包 ”

    C5515 DSP的主要特性与优势: 3 个片上 LDO 分别用于 DSP 内核、USB 以及模拟子系统; SDRAM 与移动 SDRAM 可支持低功耗应用; 包括高速 USB 2.0、I2S、UART、SP ...…

查看全部问答>

求用最小系板和DS18B20来测量温度并在12864液晶上显示

 各位玩MSP430的大大们,求助啦~! 想用MSP430最小系统版和DS18B20来测量温度,且在12864LCD液晶上面显现出数据来! 可不可以帮忙写下代码啊! 急用啊! 下面的CX-1A系统版的原理图 小弟感激不尽! [ 本帖最后由 z9 ...…

查看全部问答>

处理一批2.4寸TFT屏,每人限购10PCS,有美女,有送!

2.4寸TFT屏,带触摸屏,ILI9320驱动!引脚定义如下图: 前天 12:21 上传下载附件 (146.79 KB) 屏的图片如下: 前天 12:21 上传下载附件 (73.57 KB) 前天 12:21 上传下载附件 (63.51 KB) 显示效果如下: ...…

查看全部问答>

【视频分享】TMS320C64x+网络课程9 - sRIO(串行RapidIO)

简介:TMS320C64x+网络课程9——sRIO(串行RapidIO),主要介绍sRIO的一些基本信息,如支持特性,memory管理,中断支持,在DSP内部进行传输,BIOS中的支持等。此网络培训针对C64x+,每次一个专题,由DSP高性能部门技术支持工程师为您全程指导,敬请 ...…

查看全部问答>

PIC24FJ64GA002 引脚控制

怎么让一个管脚先为高电平  延时一会  再让另一个管脚也为高?我用延时做的   为什么先置高的就是高 延时后置高的就不能置高呢?…

查看全部问答>