首页 » 科学 » 基于Android的MT8880芯片的设计与实现_暗记_旗子

基于Android的MT8880芯片的设计与实现_暗记_旗子

admin 2024-09-30 19:07:29 0

扫一扫用手机浏览

文章目录 [+]

(四川大学 电子信息学院,四川 成都 610065)

Android是一种基于Linux的开源操作系统,它具有十分丰富的运用。
文章提出了将搭载有Android系统的主板TQ210和双音多频拨号芯片MT8880通过主板上的摄像头B接口连接起来,设计一个可以在Android系统上接听和拨打有线电话的运用,然后在 Linux 内核中编写驱动程序,并在HAL层和JNI层中天生动态库文件,实现在Android平台上通过有线接听和拨打电话的功能。
经由测试,该设计方案能成功接听和拨打电话。

基于Android的MT8880芯片的设计与实现_暗记_旗子 基于Android的MT8880芯片的设计与实现_暗记_旗子 科学

Android; 有线电话; MT8880; HAL; JNI

基于Android的MT8880芯片的设计与实现_暗记_旗子 基于Android的MT8880芯片的设计与实现_暗记_旗子 科学
(图片来自网络侵删)

随着移动通信技能的发展,移动通信经历了从第一代到第四代的飞速发展,目前,5G通信已经进入测试阶段。
然而移动通信的每一次改变,通信频率险些是成倍增加,使得每一个基站的旗子暗记覆盖率会越来越小,这样就会哀求建立更多的基站,但是在城市里,居民不可能赞许在自己的小区及小区附近建立基站,以是可以大胆预测,当5G通信到来时,室内的旗子暗记将会比较弱,手机通话质量会大大降落,这样使得辐射也会大大增加,通话稳定性将会显著降落。
以是本文提出了一种在搭载有Android4.0系统的主板TQ210上拨打有线电话的方法,既可以战胜手机在室内旗子暗记差的不敷,又可以在主板上完成手机所具有的所有功能,这样在室内就可以完备不用手机。

1硬件系统设计

硬件系统由主板TQ210与MT8880模块及其外围电路构成,如图1所示。
主板TQ210采取了三星公司推出的S5pv210微处理器[1],从图1中可以看出主板TQ210的外围电路十分完好。
只须要将TQ210开拓板的GPIO接口与MT8880模块连接起来,就可以实现在搭载有Android系统的主板上接听和拨打电话的功能。

1.2MT8880模块简介

MT8880收发芯片是具有微处理器接口的、功能较丰富的双音多频(DTMF)芯片。
它的发送部分采取行列计数器及频率稳定性较高的D/A转换器,可以发出16种双音多频DTMF旗子暗记;吸收部分能吸收16个DTMF旗子暗记,并把DTMF旗子暗记分离及解码,以4位并行二进制办法输出[2]。
MT8880芯片的功耗非常低,集成度相称高且定时准确,可以调度双音频模式的占空比,能自动抑制拨号音和调度旗子暗记增益,还带有标准的数据总线,可以与TTL电平兼容,并可方便地进行编程掌握[3]。

1.2.1引脚排列与功能

MT8880芯片引脚排列如图2所示。
该芯片有20个引脚,个中1脚为运放的同向输入引脚;2脚为运放的反向输入引脚;3脚为运放增益选择端;4脚为基准电压输出端;5脚为电源地;6脚为DTMF时钟/振荡器输入,采取3.579 545 MHz的时钟旗子暗记;7脚为时钟输出引脚;8脚为输出DTMF旗子暗记引脚;9脚为读写掌握端;10脚为片选引脚;11脚为寄存器选择引脚,当为低电平时,掌握数据寄存器的读写,当为高电平时,掌握状态寄存器和掌握寄存器的读写;12脚为系统时钟输入;13脚为中断处理要求端;14~17脚为数据线,掌握DTMF旗子暗记的发送和吸收;18脚为滞后前输出,当检测到有效音频时,就变为高电平,旗子暗记条件不敷时又急速返回低电平;19脚为滞后输出/保护后输出;20脚为电源正极,为该芯片供应所需电压[4]。

1.2.2旗子暗记音判断事理

旗子暗记音紧张由拨号音、忙音及回铃音组成,个中拨号音是连续脉冲旗子暗记,忙音和回铃音的频率相同,都在425 Hz~475 Hz,但它们通断韶光并不一样,回铃音在1 s韶光为通,4 s韶光为断开,而忙音则因此0.7 s为一个周期,在一半的韶光接通,一半的韶光断开。
若要判断旗子暗记音,该当在拨号后将MT8880芯片设置为呼叫处理模式,MT8880的呼叫处理滤波器是一个带通滤波器,当旗子暗记输入端有旗子暗记音输入时,在IRQ/CP就输出一高电平,此时电话呼叫过程中的各种旗子暗记音经MT8880滤波,限幅后得到方波,并由MT8880芯片的IRQ引脚输出,判断该引脚上的旗子暗记就知道为何种旗子暗记音。

在本次编程中,拨完电话号码后,就让MT8880芯片事情在CP模式,并开启中断及定时器,采取低落沿触发,计数韶光为5 s,判断步骤如下:

(1)若计数值小于256则为拨号音,进入其他状态并连续检测。
若计数值还是小于256,则解释还是在通话中,一贯检测,直到计数值大于256后就挂断电话,由于此时对方已经挂断了电话。

(2)如果计数值在1 024~1 791之间,则为忙音,直接挂断电话。

(3)若计数值在256~1 023,则为回铃音,等待对方接听,并连续进入CP模式检测。

1.2.3MT8880模块与主板连接事理

由于TQ210主板上并没有直接可用的GPIO口,经由查阅电路图创造摄像头接口CAMERA_B的引脚与GPIO口复用,它利用了GPJ0口的全部引脚和GPJ1口的部分引脚。
若要将此接口作为GPIO口,只须要将原来配置的摄像头驱动中对GPJ1、GPJ0引脚的初始化代码去掉,然后在自己写的驱动中对这些引脚初始化成所需的功能即可。
图3为MT8880模块输入输出接口与开拓板的GPIO接口对接图,个中D0~D3为数据线,当打电话时,把这4个脚配置为输出,当接电话时,把这4个脚配置为输入,为往后做来电显示做准备。
详细每个脚的功能见表1。

2软件设计

Android系统的底层是Linux[5],以是所有的软件设计都是在Ubuntu14.04系统上完成的,要使该芯片能够正常事情,则必须要在Linux内核中编写相应的驱动文件,在HAL层和JNI层天生动态库文件以及在运用层编写运用程序[6]。

2.1MT8880驱动开拓

在/opt/EmbedSky/TQ210/Kernel_3.0.8_TQ210_for_Linux_v1.4/drivers/char目录下新建一个tq210_mt8880.c,然后在tq210_mt8880.c文件里编写好程序后并保存,修正该目录下的Kconfig文件,在终端实行命令make menuconfig时可以看到刚刚新增的配置选项,末了修正该目录下的Makefile文件,然后在make menuconfig中选择刚才加上的菜单,重新编译内核,如果成功,则内核就已经包含了最新加进去的MT8880驱动了。

2.2HAL层开拓

硬件抽象层(Hardware Abstraction Layer,HAL)是建立在Linux驱动之上的一套动态库。
这套动态库是属于Linux内核层之上的系统运行库层[7]。

Android系统的HAL层是为了避开Linux的GPL束缚,保护一些硬件供应商的知识产权而提出的,HAL层用于掌握硬件的动作,而Linux 驱动程序仅仅完成一些大略的数据交互浸染,乃至把硬件寄存器空间直接映射到user space[8]。
目前HAL存在两种架构,位于libhardware_legacy目录下的“旧HAL架构”和位于hardware的libhardware目录下的“新HAL架构”。
主板TQ210采取了“新HAL架构”。
新HAL架构如图4所示。

编写HAL层代码步骤如下:

(1)首先在TQ210_Android_4.0.4_V1.4/hardware/Libhardward/include下创建MT8880.h头文件,编写头文件源码并保存。

(2)然后在/opt/EmbedSky/TQ210/TQ210_Android_4.0.4_V1.4/device/embedsky/tq210目录下创建libMT8880文件夹,在该文件夹中新建MT8880.c文件,在该文件里编写源码,然后保存该文件,末了在该文件夹下创建Android.mk文件并编写该文件的源码,然后保存该文件。

(3)末了在终端输入干系命令进行编译,将在目录下天生的MT8880.tq210.so文件复制到主板上的system/lib/hw目录下,当然也可以放在其他目录下。

2.3JNI层开拓

JNI的全称为Java Native Interface,它是Java平台的一部分,并许可Java代码与其他措辞写的代码进行交互,使得在JVM(Java虚拟机)内部运行的Java字节码能够与其他措辞(比如C、C++等)进行交互操作[9],图5为JNI层在Android中的位置关系图。

在/opt/EmbedSky/TQ210/TQ210_Android_4.0.4_V1.4/packages/apps中创建MT8880文件夹,用来存放jni源码,在该文件夹中新建文件MT8880Service.cpp,编写源码并保存,这里须要把稳的是函数的前置Java_com_embedsky_MT8880_MT8880Activity_决定了创建运用程序利用的包名。
其次创建Android.mk文件,编写源码并保存。
末了在终端输入干系命令进行编译,将天生的libMT8880.so文件复制到主板对应的目录中[10]。

3测试及结果

在本次测试中,将TQ210开拓板(搭载Android4.0系统)与MT8880模块及其外围电路通过开拓板上的CAMERA_B接口连接起来,并把电话线接到MT8880上的RJ11接口上,然后打开开拓板上的通讯录APP,点击按钮进行拨号。
经由测试,该装置能顺利拨通要打的电话,并且语音质量良好,测试结果如图6~图8所示。

4结论

本文实现了在Android系统上通过MT8880芯片拨打和接听有线电话的功能,并且该方案既有抗滋扰能力强、辐射小、保密性强的通信特点,又具有Android平台的所有特性。
如果将手机上的通讯信息同步到该系统上,然后直接在该系统上拨出要打的电话号码,即可完备实现无线与有线的领悟,把两者的优点结合起来,这样该设计方案将更加完美。

参考文献

[1] 广州天嵌打算机科技有限公司.TQ210用户硬件手册[Z].2012.

[2] 李传南,王剑刚,李宝华.单片机与DTMF旗子暗记收发芯片MT8880的直接接口设计[J].电子与自动化,1999(2):23-24.

[3] 张立臣.DTMF旗子暗记收、发芯片MT8888事理及运用[J].国外电子元器件,2001(9):30-31.

[4] 董守田,徐风文.DTMF收发芯片MT8888的运用[J].农机化研究,2003(2):216-217.

[5] 宋宝华.Linux设备驱动开拓详解(第二版)[M].北京:公民邮电出版社,2013.

[6] 李刚.猖獗Android讲义[M].北京:电子工业出版社,2015.

[7] 李宁. Android开拓威信指南[M]. 北京:公民邮电出版社,2011.

[8] 韦德琼.基于Android系统的驱动模块的设计和实现[D].哈尔滨:哈尔滨工业大学,2012.

[9] 施月玲,宣凯,张海平,等.JNI技能在Android平台领悟通信终真个运用[J].杭州电子科技大学学报(自然科学版),2015,28(2):41-44.

[10] 杜江,周渊平.基于Android的电话拨号功能[J].打算机系统运用,2014,23(12):245-248.

AET会员年终大福利!

标签:

相关文章