您现在的位置:首页 > 案例分析案例分析

基于ARM9处理器S3C2410的数字多路语音记录器

发布时间:2017-06-03 06:56:43  来源:大电流电感厂家   查看:


static file_operations mpi_ctl_fops = {

ioctl:mpi_ctl_ioctl, //设备控制

open:mpi_open, //打开设备

close:mpi

_ close, //关闭设备

}

linux提供ioremap函数将I/O内存资源的物理地址映射到核心虚地址空间,然后可像操作寄存器那样进行数据读写。编写驱动程序的时候,必须提供两个函数,一个是module_init(),insmod在加载此模块的时候自动调用,负责进行设备驱动程序的初始化工作,一个函数是module_exit,在模块被卸载时调用,负责进行设备驱动程序的清除工作。

4.2 AC48304的数据读写实现

每个AC48304可电感生产厂家同时进行4个通道的语音编/解码,片内有数据缓存区,编码后的语音数据先存储在各通道的缓存区,然后依次拷贝到输出缓冲区。表1为本系统支持的几种主要语音编码格式的相关参数。其中G.711的A/u律数据量最大为64kbps,每个通道每秒有8000字节的数据,而AC48304的数据读取区的有效量为80字节,即每秒钟要进行100次的读取操作,对每个AC48304而大电流电感言每秒钟要进行400次读取操作才能保证数据及时读取。由于语音编码包是以恒定的速率产生的,因此每2.5毫秒必须对DSP进行一次读取操作。本平台的Linux内核中,进
程调度算法的时间单位为10毫秒,在进程中执行数据的读取操作很难保证数据及时读取,如果某个服务进程或者是本进程中的某个控制操作执行时间过长,就会造成语音数据的丢失。

表1:语音数据特性


Linux中程序运行的环境分为内核空间和用户空间,内核空间的程序优先级高于用户空间。为保证编码数据被及时读取,需在内核级别的进程中定时读取AC48304产生的数据。有两种方式可将用户程序加入到内核空间中运行:修改Linux内核源代码,直接将用户程序代码编译到内核中;利用Linux的模块机制,动态的将用户程序代码添加到内核空间中运行。第一种方法实现难度比较大,而且容易出错。第二种方法实现难度小,效果与第一种相同,本系统中采用的是第二种方法。

将AC48电感厂家304的读取操作作为驱动程序进行设计,使用insmod命令动态加载到内核中去,在定时中断的服务函数中读取AC48304的数据。S3C2410中有5个用户可编程的时钟中断,中断优先级别高,中断的频率可编程控制,其中时钟中断Timer3已用于DMA控制,Tmer4用于进程调度。本系统的程序设计中使用Timer2,通过配置相关控制寄存器将Timer2的中断频率设为500HZ,适当的增加读取查询操作频率,保证数据及时读取。中断服务函数是由内核来执行的,优先级高于用户程序,可保证读取操作的实时性。为AC48304的每个通道分配一个数据缓冲区,定时中断函数中读取的功率电感器数据先保存在缓冲区中,用户程序通过读取该缓冲区获得语音数据,这样对外部用户而言,语音数据没有丢失,语音延迟在毫秒级别,完全可以满足需求。电感封装

4.3 应用软件设计

将应用程序及驱动程序文件加入文件系统中,修改有关启动的配置文件,使得系统启动完毕时自动加载目标程序,这样每次设备启动时将自动进入应用程序。主程序流程如图3所示,主程序的功能主要是:

u 系统配置:系统的配置表存储在一片S-EEPROM中,配置表可以通过串口终端或者网络在线配置。

u 初始化系统:包括向DSP下载内核程序和应用程序,启动DSP及LE58QL021等。

u 语音数据读写:通过DSP的HPI总线读取DSP数据实现语音采集,通过HPI把数据写入DSP实现语音回放。

u 数据存储:根据录音计划将需要录音的语音数据保存到硬盘中。

u 命令处理:包括选择语音通道命令、回放命令、校时命令、增益调节命令、配置表传输命令、录音数据上传命令等。



图3.主程序流程图

5. 结束语

本记录器最多支持32路语音实时处理,在硬盘上实现长时间录音,并可通过10/100Mbps以太网实现数据上传和管理。经测试本记录器可以很好的完成语音数据的采集、压缩、存储、解压缩和回放,内核级别的用户进程运行正常,保证了整个系统的实时性。该语音记录器具有低成本、低功耗、结构精简、使用简单的特点,具有很好的实用价值。平面变压器厂家 | 平面电感厂家

手机数码相机的低压闪光灯设计作者Email: alec@keikong.com摘要:本文介绍了手机数码相机用低压闪光灯电路设计、主要器件选用要求。关键词:低压闪光灯 Flash LED 电荷泵 手机的周边设计是增加手机附加功能、

[开关电源]UC3825设计例子的问题:输入地怎么和输 本帖最后由 ElectronF0 于 2015-4-20 08:20 编辑 见下图(UC3825 datasheet 见附件)在UC3825 datasheet  第8页的Design Example中,输入地 怎么 和输出 + 直接连起来了?请大侠指点!非常感谢!满意回复+5不亦心 查看完整内容应该是错了,把输入GND符号到4.3K电阻那段导线断开就好了,4.3K那里应该是从输出正取反馈信号的+5gaoyang99920

自适应单纯太阳能路灯控制器的设计大阳能路灯以其无需铺设电缆,不消耗常规能源等优点得到了广泛认可。然而太阳能路灯还存在一些问题造成其成本偏高,可靠性不稳定,、比如电池往往不到一年就需要更换,不仅提高了后期维护的费用,而且增加了客户的消

CopyRight2014
大电流电感 | 大功率电感 | 扁平线圈电感 注塑加工厂