|
|
| | -文章搜索 - 最新文章 - | |
第12684篇:嵌入式蓝牙PSTN语音接入点的设计与实现 |
| 发布时间:2006年10月24日 点击次数:947 |
| 来源:CE 作者:china |
引言
1.3 蓝牙收发模块 蓝牙收发模块包括蓝牙射频电路、基带处理电路和PCM编解码电路,通过MCF5272的UART1和网关控制模块相连。语音信号通过PCM编解码器MC145483和电话接口芯片TEA1062A连接。语音信号通过PCM编解码器MC145483和电话接口芯片TEA1062A连接。MCF5272把蓝牙模块接收到的数据通过协议栈解释为摘机、挂机、拨号、来电显示等命令,并通过数据线控制电话语音接收与拨叫电路的各种操作。PSTN市话网用户线与电话线路接口模块连接,电话线路接口模块把外部PSTN电话网的振铃信号和来电显示信息通过数据线传递给MCF5272。MCF5272再把这些信号通过蓝牙软件栈打成数据包并送给蓝牙模块,由蓝牙模块通过无线信道发送给终端。电话线上的模拟语音信息通过PCM编解码器编码后经蓝牙模块发送给终端,同时蓝牙模块接收终端发送过来的语音数据,经过PCM编解码器解码,形成模拟语音信号,通过电话接口芯发送到电话线上。本设计中的蓝牙基带和射频电路由CSR的BlueCore01b芯片加上功放、低噪放、收发切换开关、滤波器和一些外围电路组成。 2 驱动程序的设计与实现 2.1 μClinux设备驱动程序概述 在μClinux下,所有的硬件设备都被视为文件,从设备接收输入数据和将输出送到设备就像从普通文件接收输入和将输出送到文件一样,可以使用read()、write()等系统调用。应用程序通过系统调用和内核交互,而内核则通过设备驱动程序和具体硬件交互,如图3所示。一般来说,操作系统内核需要访问三类主要设备:字符型设备、块型设备以及网络设备。本接入点的驱动程序属于字符设备驱动程序。
(2)ioctl函数 设备特殊文件之所以特殊就是因为它代表一个设备,可以通过它对设备的属性进行设置,这和对设备的I/O操作不同。我们通过ioct1函数来实现,ioct1的实质就是向设备发送命令来改变设备的属性。在实现此驱动的过程中发现,FSK来电显示芯片在没有真正的FSK数据的时候也会受到干扰,使数据线上有电平的跳动,从而产生不应该产生的中断对系统的性能造成影响,因而提供了2个ioct1命令给用户进程,来控制FSK中断的打开与关闭。 (3)select函数 为了使用户进程可以使用I/O多路转接技术,在驱动程序中实现了select函数。当用户进程执行select系统调用的时候,每一个加入select测试集合的设备的select函数都被调用,如果其中任何一个或多个设备可以进行要求的I/O操作,则select返回;否则,通过select_wait()函数让用户进程进入睡眠状态,直到有任何一个设备可以进行要求的I/O操作或超时为止。 (4)中断处理函数及下半部分处理函数 FSK来电显示芯片只有1根数据线连接到CPU的GPIO口上。这根数据线的每一字节数据都以0开始、以1结束,中间是8位的ASCII码,最低位最先发送,在没有数的时候数据线一直保护高电平。由于FSK来电显示数据具有这种特殊的格式,把这根数据线同时接到CPU的外部中断线上,并设置为下降沿触发,这样每来1字节数据就会产生一次中断。FSK数据帧由若干字节这样的数据组成。FSK数据速率是1.2kb/s,因而1个bit延续约0.83ms。这样收一个字节的数据就需要耗费约8.3ms的时间。显然在中断处理程序里面接收数据是不合适的,所以在中断处理程序中只调用mark_up函数标记数据的到来,而把接收及处理数据的任务留到下半部分程序中完成。 下半部分程序负责接收1字节的FSK来电显示数据,由于1字节数据中可能有多个下降延,所以在进入处理函数后首先要关闭FSK中断,然后每0.83ms读一次GPIO口,接收一位的数据,收完1字节数据后要打开FSK中断,以接收下一字节的数据。 根据本次FSK中断是否为此次通信的每一个中断,可以判断本次接收的是否为FSK数据帧的第一个字节,如果是,那么将启动一个内核定时器,其超时时间设为1s(因为一个FSK数据帧的传输时间不会超过1s)。在定时器超时后,内核将调用定时器超过时处理函数,提取出主叫用户的电话号码,并通过wake_up函数唤醒任何等待读此设备的用户进程。 2.4 DTMF语音拨号、来电显示驱动的设计与实现 由于DTMF芯片要提供双音多频拨号的功能,所以与FSK芯片驱动相比,DTMF芯片驱动中多了一个write函数。DTMF芯片的多音多频拨号部分有2根线和CPU相连:1根数据线、1根时钟线。Write函数实际上就是根据芯片的写时序把用户进程发来的数据传送到芯片上去。 相比于FSK来电显示信息的接收而言,DTMF来电显示信息的接收就比较容易了。DTMF来电显示芯片提供了1根中断信号线和4根并行数据线,每次中断来只需要读并行信号线,并进行简单的解码、缓存工作就可以了。此外为了方便,把摘、挂机,抬高、拉低静音等命令者包含此驱动的iotcl命令集中了;和FSK驱动一样,为了防止干扰对DTMF来电显示信息的影响,也在iotcl命令提供了打开、关闭DTMF来电显示中断的命令。 3 应用软件的设计与实现 接入点应用程序位于前面介绍的硬件平台以及设备驱动程序之上,三者之间的关系如图5所示。接入点应用程序是整个软件的核心,它与串口驱动程序、FSK来电显示驱动程序、DTMF来电显示驱动程序、DTMF拨号驱动程序、Flash驱动程序、振铃驱动程序交互,并通过后五个驱动程序控制具体硬件完成相关功能。接入点可以对允许接入的蓝牙终端属性进行设备,只有被授权的蓝牙终端才能通过接入点访问PSTN。接入点的Flash可设置多个允许接入的蓝牙终端,并可通过与网关并联的电话进行增添、删除一个或全部删除终端设置的操作。
|
|
|
|
|
[嵌入式系统] 相关文章: 飞思卡尔推出业界首个32位双核汽车微控制器,具有灵活的低功耗模式简介: MPC5510系列具有更高的集成度,能够降低汽车车身电子系统的成本 底特律(2006年融合大会)-2006年10月16日-如今,安装了电子系统的车辆具有前所未有的智能化程度和连通性。芯片技术的进步加快了这种趋势。飞思卡尔半导体 (NYSE:FSL、FSL.B)推出的双核32位微控制器 (MCU)系列,能够增强汽车车身电子系统的性能、电源效率和灵活性。 作为飞思卡尔MPC55xx系列的最新成员,MPC5510系列是一线的32位汽车微控制器产品。它采用双核架构,具有灵活的...... 飞思卡尔推出面向高级驾驶员辅助系统的高性能汽车微控制器 台湾Afa公司引入Tensilica公司Xtensa可配置处理器 意法半导体(ST)推出更快、更小的双接口安全微控制器 ARM高度优化REALVIEW实时软件库加速32位微控制器的应用开发 |
|
|
|