• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Android的MT8880芯片的設(shè)計(jì)與實(shí)現(xiàn)

      2016-12-02 09:31:00周淵平
      關(guān)鍵詞:源碼主板芯片

      文 波,周淵平

      (四川大學(xué) 電子信息學(xué)院,四川 成都 610065)

      ?

      基于Android的MT8880芯片的設(shè)計(jì)與實(shí)現(xiàn)

      文 波,周淵平

      (四川大學(xué) 電子信息學(xué)院,四川 成都 610065)

      Android是一種基于Linux的開(kāi)源操作系統(tǒng),它具有十分豐富的應(yīng)用。文章提出了將搭載有Android系統(tǒng)的主板TQ210和雙音多頻撥號(hào)芯片MT8880通過(guò)主板上的攝像頭B接口連接起來(lái),設(shè)計(jì)一個(gè)可以在Android系統(tǒng)上接聽(tīng)和撥打有線電話的應(yīng)用,然后在 Linux 內(nèi)核中編寫(xiě)驅(qū)動(dòng)程序,并在 HAL層和JNI層中生成動(dòng)態(tài)庫(kù)文件,實(shí)現(xiàn)在Android平臺(tái)上通過(guò)有線接聽(tīng)和撥打電話的功能。經(jīng)過(guò)測(cè)試,該設(shè)計(jì)方案能成功接聽(tīng)和撥打電話。

      Android; 有線電話; MT8880; HAL; JNI

      0 引言

      隨著移動(dòng)通信技術(shù)的發(fā)展,移動(dòng)通信經(jīng)歷了從第一代到第四代的飛速發(fā)展,目前,5G通信已經(jīng)進(jìn)入測(cè)試階段。然而移動(dòng)通信的每一次改變,通信頻率幾乎是成倍增加,使得每一個(gè)基站的信號(hào)覆蓋率會(huì)越來(lái)越小,這樣就會(huì)要求建立更多的基站,但是在城市里,居民不可能同意在自己的小區(qū)及小區(qū)附近建立基站,所以可以大膽預(yù)測(cè),當(dāng)5G通信到來(lái)時(shí),室內(nèi)的信號(hào)將會(huì)比較弱,手機(jī)通話質(zhì)量會(huì)大大降低,這樣使得輻射也會(huì)大大增加,通話穩(wěn)定性將會(huì)顯著降低。所以本文提出了一種在搭載有Android4.0系統(tǒng)的主板TQ210上撥打有線電話的方法,既可以克服手機(jī)在室內(nèi)信號(hào)差的不足,又可以在主板上完成手機(jī)所具有的所有功能,這樣在室內(nèi)就可以完全不用手機(jī)。

      1 硬件系統(tǒng)設(shè)計(jì)

      1.1 硬件框架

      硬件系統(tǒng)由主板TQ210與MT8880模塊及其外圍電路構(gòu)成,如圖1所示。主板TQ210采用了三星公司推出的S5pv210微處理器[1],從圖1中可以看出主板TQ210的外圍電路十分齊全。只需要將TQ210開(kāi)發(fā)板的GPIO接口與MT8880模塊連接起來(lái),就可以實(shí)現(xiàn)在搭載有Android系統(tǒng)的主板上接聽(tīng)和撥打電話的功能。

      圖1 硬件系統(tǒng)框架圖

      1.2 MT8880模塊簡(jiǎn)介

      MT8880收發(fā)芯片是具有微處理器接口的、功能較豐富的雙音多頻(DTMF)芯片。它的發(fā)送部分采用行列計(jì)數(shù)器及頻率穩(wěn)定性較高的D/A轉(zhuǎn)換器,可以發(fā)出16種雙音多頻DTMF信號(hào);接收部分能接收16個(gè)DTMF信號(hào),并把DTMF信號(hào)分離及解碼,以4位并行二進(jìn)制方式輸出[2]。MT8880芯片的功耗非常低,集成度相當(dāng)高且定時(shí)準(zhǔn)確,可以調(diào)整雙音頻模式的占空比,能自動(dòng)抑制撥號(hào)音和調(diào)整信號(hào)增益,還帶有標(biāo)準(zhǔn)的數(shù)據(jù)總線,可以與TTL電平兼容,并可方便地進(jìn)行編程控制[3]。

      圖2 MT8880引腳圖

      1.2.1 引腳排列與功能

      MT8880芯片引腳排列如圖2所示。該芯片有20個(gè)引腳,其中1腳為運(yùn)放的同向輸入引腳;2腳為運(yùn)放的反向輸入引腳;3腳為運(yùn)放增益選擇端;4腳為基準(zhǔn)電壓輸出端;5腳為電源地;6腳為DTMF時(shí)鐘/振蕩器輸入,采用3.579 545 MHz的時(shí)鐘信號(hào);7腳為時(shí)鐘輸出引腳;8腳為輸出DTMF信號(hào)引腳;9腳為讀寫(xiě)控制端;10腳為片選引腳;11腳為寄存器選擇引腳,當(dāng)為低電平時(shí),控制數(shù)據(jù)寄存器的讀寫(xiě),當(dāng)為高電平時(shí),控制狀態(tài)寄存器和控制寄存器的讀寫(xiě);12腳為系統(tǒng)時(shí)鐘輸入;13腳為中斷處理請(qǐng)求端;14~17腳為數(shù)據(jù)線,控制DTMF信號(hào)的發(fā)送和接收;18腳為滯后前輸出,當(dāng)檢測(cè)到有效音頻時(shí),就變?yōu)楦唠娖剑盘?hào)條件不足時(shí)又立刻返回低電平;19腳為滯后輸出/保護(hù)后輸出;20腳為電源正極,為該芯片提供所需電壓[4]。

      表1 MT8880模塊輸入輸出接口定義

      1.2.2 信號(hào)音判斷原理

      信號(hào)音主要由撥號(hào)音、忙音及回鈴音組成,其中撥號(hào)音是連續(xù)脈沖信號(hào),忙音和回鈴音的頻率相同,都在425 Hz~475 Hz,但它們通斷時(shí)間并不一樣,回鈴音在1 s時(shí)間為通,4 s時(shí)間為斷開(kāi),而忙音則是以0.7 s為一個(gè)周期,在一半的時(shí)間接通,一半的時(shí)間斷開(kāi)。若要判斷信號(hào)音,應(yīng)該在撥號(hào)后將MT8880芯片設(shè)置為呼叫處理模式,MT8880的呼叫處理濾波器是一個(gè)帶通濾波器,當(dāng)信號(hào)輸入端有信號(hào)音輸入時(shí),在IRQ/CP就輸出一高電平,此時(shí)電話呼叫過(guò)程中的各種信號(hào)音經(jīng)MT8880濾波,限幅后得到方波,并由MT8880芯片的IRQ引腳輸出,判斷該引腳上的信號(hào)就知道為何種信號(hào)音。

      在本次編程中,撥完電話號(hào)碼后,就讓MT8880芯片工作在CP模式,并開(kāi)啟中斷及定時(shí)器,采用下降沿觸發(fā),計(jì)數(shù)時(shí)間為5 s,判斷步驟如下:

      (1)若計(jì)數(shù)值小于256則為撥號(hào)音,進(jìn)入其他狀態(tài)并繼續(xù)檢測(cè)。若計(jì)數(shù)值還是小于256,則說(shuō)明還是在通話中,一直檢測(cè),直到計(jì)數(shù)值大于256后就掛斷電話,因?yàn)榇藭r(shí)對(duì)方已經(jīng)掛斷了電話。

      (2)如果計(jì)數(shù)值在1 024~1 791之間,則為忙音,直接掛斷電話。

      (3)若計(jì)數(shù)值在256~1 023,則為回鈴音,等待對(duì)方接聽(tīng),并繼續(xù)進(jìn)入CP模式檢測(cè)。

      1.2.3 MT8880模塊與主板連接原理

      圖3 MT8880模塊輸入輸出接口圖

      由于TQ210主板上并沒(méi)有直接可用的GPIO口,經(jīng)過(guò)查閱電路圖發(fā)現(xiàn)攝像頭接口CAMERA_B的引腳與GPIO口復(fù)用,它使用了GPJ0口的全部引腳和GPJ1口的部分引腳。若要將此接口作為GPIO口,只需要將原來(lái)配置的攝像頭驅(qū)動(dòng)中對(duì)GPJ1、GPJ0引腳的初始化代碼去掉,然后在自己寫(xiě)的驅(qū)動(dòng)中對(duì)這些引腳初始化成所需的功能即可。圖3為MT8880模塊輸入輸出接口與開(kāi)發(fā)板的GPIO接口對(duì)接圖,其中D0~D3為數(shù)據(jù)線,當(dāng)打電話時(shí),把這4個(gè)腳配置為輸出,當(dāng)接電話時(shí),把這4個(gè)腳配置為輸入,為以后做來(lái)電顯示做準(zhǔn)備。具體每個(gè)腳的功能見(jiàn)表1。

      2 軟件設(shè)計(jì)

      Android系統(tǒng)的底層是Linux[5],所以所有的軟件設(shè)計(jì)都是在Ubuntu14.04系統(tǒng)上完成的,要使該芯片能夠正常工作,則必須要在Linux內(nèi)核中編寫(xiě)相應(yīng)的驅(qū)動(dòng)文件,在HAL層和JNI層生成動(dòng)態(tài)庫(kù)文件以及在應(yīng)用層編寫(xiě)應(yīng)用程序[6]。

      2.1 MT8880驅(qū)動(dòng)開(kāi)發(fā)

      在/opt/EmbedSky/TQ210/Kernel_3.0.8_TQ210_for_Linux_v1.4/drivers/char目錄下新建一個(gè)tq210_mt8880.c,然后在tq210_mt8880.c文件里編寫(xiě)好程序后并保存,修改該目錄下的Kconfig文件,在終端執(zhí)行命令make menuconfig時(shí)可以看到剛剛新增的配置選項(xiàng),最后修改該目錄下的Makefile文件,然后在make menuconfig中選擇剛才加上的菜單,重新編譯內(nèi)核,如果成功,則內(nèi)核就已經(jīng)包含了最新加進(jìn)去的MT8880驅(qū)動(dòng)了。

      2.2 HAL層開(kāi)發(fā)

      硬件抽象層(Hardware Abstraction Layer,HAL)是建立在Linux驅(qū)動(dòng)之上的一套動(dòng)態(tài)庫(kù)。這套動(dòng)態(tài)庫(kù)是屬于Linux內(nèi)核層之上的系統(tǒng)運(yùn)行庫(kù)層[7]。

      Android系統(tǒng)的HAL層是為了避開(kāi)Linux的GPL束縛,保護(hù)一些硬件供應(yīng)商的知識(shí)產(chǎn)權(quán)而提出的,HAL層用于控制硬件的動(dòng)作,而Linux 驅(qū)動(dòng)程序僅僅完成一些簡(jiǎn)單的數(shù)據(jù)交互作用,甚至把硬件寄存器空間直接映射到user space[8]。目前HAL存在兩種架構(gòu),位于libhardware_legacy目錄下的“舊HAL架構(gòu)”和位于hardware的libhardware目錄下的“新HAL架構(gòu)”。主板TQ210采用了“新HAL架構(gòu)”。新HAL架構(gòu)如圖4所示。

      圖4 新HAL架構(gòu)

      編寫(xiě)HAL層代碼步驟如下:

      (1)首先在TQ210_Android_4.0.4_V1.4/hardware/Libhardward/include下創(chuàng)建MT8880.h頭文件,編寫(xiě)頭文件源碼并保存。

      (2)然后在/opt/EmbedSky/TQ210/TQ210_Android_4.0.4_V1.4/device/embedsky/tq210目錄下創(chuàng)建libMT8880文件夾,在該文件夾中新建MT8880.c文件,在該文件里編寫(xiě)源碼,然后保存該文件,最后在該文件夾下創(chuàng)建Android.mk文件并編寫(xiě)該文件的源碼,然后保存該文件。

      (3)最后在終端輸入相關(guān)命令進(jìn)行編譯,將在目錄下生成的MT8880.tq210.so文件復(fù)制到主板上的system/lib/hw目錄下,當(dāng)然也可以放在其他目錄下。

      2.3 JNI層開(kāi)發(fā)

      JNI的全稱為Java Native Interface,它是Java平臺(tái)的一部分,并允許Java代碼與其他語(yǔ)言寫(xiě)的代碼進(jìn)行交互,使得在JVM(Java虛擬機(jī))內(nèi)部運(yùn)行的Java字節(jié)碼能夠與其他語(yǔ)言(比如C、C++等)進(jìn)行交互操作[9],圖5為JNI層在Android中的位置關(guān)系圖。

      圖5 JNI在Android中位置圖

      在/opt/EmbedSky/TQ210/TQ210_Android_4.0.4_V1.4/packages/apps中創(chuàng)建MT8880文件夾,用來(lái)存放jni源碼,在該文件夾中新建文件MT8880Service.cpp,編寫(xiě)源碼并保存,這里需要注意的是函數(shù)的前置Java_com_embedsky_MT8880_MT8880Activity_決定了創(chuàng)建應(yīng)用程序使用的包名。其次創(chuàng)建Android.mk文件,編寫(xiě)源碼并保存。最后在終端輸入相關(guān)命令進(jìn)行編譯,將生成的libMT8880.so文件復(fù)制到主板對(duì)應(yīng)的目錄中[10]。

      3 測(cè)試及結(jié)果

      在本次測(cè)試中,將TQ210開(kāi)發(fā)板(搭載Android4.0系統(tǒng))與MT8880模塊及其外圍電路通過(guò)開(kāi)發(fā)板上的CAMERA_B接口連接起來(lái),并把電話線接到MT8880上的RJ11接口上,然后打開(kāi)開(kāi)發(fā)板上的通訊錄APP,點(diǎn)擊按鈕進(jìn)行撥號(hào)。經(jīng)過(guò)測(cè)試,該裝置能順利撥通要打的電話,并且語(yǔ)音質(zhì)量良好,測(cè)試結(jié)果如圖6~圖8所示。

      圖6 撥號(hào)測(cè)試圖

      圖7 接通后測(cè)試圖

      圖8 通話記錄顯示界面

      4 結(jié)論

      本文實(shí)現(xiàn)了在Android系統(tǒng)上通過(guò)MT8880芯片撥打和接聽(tīng)有線電話的功能,并且該方案既有抗干擾能力強(qiáng)、輻射小、保密性強(qiáng)的通信特點(diǎn),又具有Android平臺(tái)的所有特性。如果將手機(jī)上的通訊信息同步到該系統(tǒng)上,然后直接在該系統(tǒng)上撥出要打的電話號(hào)碼,即可完全實(shí)現(xiàn)無(wú)線與有線的融合,把兩者的優(yōu)點(diǎn)結(jié)合起來(lái),這樣該設(shè)計(jì)方案將更加完美。

      [1] 廣州天嵌計(jì)算機(jī)科技有限公司.TQ210用戶硬件手冊(cè)[Z].2012.

      [2] 李傳南,王劍剛,李寶華.單片機(jī)與DTMF信號(hào)收發(fā)芯片MT8880的直接接口設(shè)計(jì)[J].電子與自動(dòng)化,1999(2):23-24.

      [3] 張立臣.DTMF信號(hào)收、發(fā)芯片MT8888原理及應(yīng)用[J].國(guó)外電子元器件,2001(9):30-31.

      [4] 董守田,徐風(fēng)文.DTMF收發(fā)芯片MT8888的應(yīng)用[J].農(nóng)機(jī)化研究,2003(2):216-217.[5] 宋寶華.Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)詳解(第二版)[M].北京:人民郵電出版社,2013.

      [6] 李剛.瘋狂Android講義[M].北京:電子工業(yè)出版社,2015.

      [7] 李寧. Android開(kāi)發(fā)權(quán)威指南[M]. 北京:人民郵電出版社,2011.

      [8] 韋德瓊.基于Android系統(tǒng)的驅(qū)動(dòng)模塊的設(shè)計(jì)和實(shí)現(xiàn)[D].哈爾濱:哈爾濱工業(yè)大學(xué),2012.

      [9] 施月玲,宣凱,張海平,等.JNI技術(shù)在Android平臺(tái)融合通信終端的應(yīng)用[J].杭州電子科技大學(xué)學(xué)報(bào)(自然科學(xué)版),2015,28(2):41-44.

      [10] 杜江,周淵平.基于Android的電話撥號(hào)功能[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2014,23(12):245-248.

      Design and implementation of MT8880 chip based on Android

      Wen Bo,Zhou Yuanping

      (School of Electronics and Information Engineering,Sichuan University,Chengdu 610065,China)

      Android is an open source operating system based on Linux.It has very rich applications.In this paper, mainboard TQ210 with Android system and dual tone multi-frequency dialing chip MT8880 are connected by the mainboard’s camera B interface, and an application of making and receiving calls on the Android platform is designed.Driver can be redacted in the Linux Kernel of Android ,and dynamic libraries are generated in JNI and HAL to make and receive calls through the wire phone on the Android system.The test results show that the design can answer and call the phone successfully.

      Android; wire telephone; MT8880; HAL; JNI

      TP399

      A

      10.19358/j.issn.1674- 7720.2016.21.027

      文波,周淵平. 基于Android的MT8880芯片的設(shè)計(jì)與實(shí)現(xiàn)[J].微型機(jī)與應(yīng)用,2016,35(21):88-90,97.

      2016-06-05)

      文波(1988-),男,碩士研究生,主要研究方向:信號(hào)與信息處理。

      周淵平(1955-),男,教授,博士生導(dǎo)師,主要研究方向:通信與信息系統(tǒng)、信號(hào)與信息處理。

      猜你喜歡
      源碼主板芯片
      滬市/深市主板觀察
      滬市/深市主板觀察
      滬市/深市主板觀察
      滬市/深市主板觀察
      基于網(wǎng)頁(yè)源碼結(jié)構(gòu)理解的自適應(yīng)爬蟲(chóng)代碼生成方法
      基于圖神經(jīng)網(wǎng)絡(luò)的軟件源碼漏洞檢測(cè)方法
      企業(yè)如何保護(hù)源碼
      芯片測(cè)試
      基于數(shù)據(jù)結(jié)構(gòu)教輔系統(tǒng)的實(shí)驗(yàn)課程改革
      多通道采樣芯片ADS8556在光伏并網(wǎng)中的應(yīng)用
      榆林市| 沧州市| 印江| 冀州市| 永泰县| 洞口县| 玉环县| 汕头市| 盐山县| 大冶市| 察雅县| 冀州市| 台中市| 湛江市| 会昌县| 镇康县| 平湖市| 温泉县| 芜湖市| 安仁县| 嵊州市| 桦甸市| 绥宁县| 长治县| 永昌县| 呼伦贝尔市| 香格里拉县| 连州市| 富裕县| 叙永县| 衡阳市| 赫章县| 湘乡市| 嘉荫县| 通州区| 重庆市| 临沂市| 潜山县| 日喀则市| 义马市| 香河县|