<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于STM32的語音導(dǎo)覽系統(tǒng)的設(shè)計(jì)

          基于STM32的語音導(dǎo)覽系統(tǒng)的設(shè)計(jì)

          作者: 時(shí)間:2015-03-04 來源:網(wǎng)絡(luò) 收藏

            3主要功能軟件設(shè)計(jì)

          本文引用地址:http://www.ex-cimer.com/article/270441.htm

            3.1軟件初始化

            3.1.1外設(shè)時(shí)鐘的使能

            本設(shè)計(jì)中涉及的外設(shè)時(shí)鐘可以通過APB2外設(shè)時(shí)鐘使能寄存器來使能。當(dāng)外設(shè)時(shí)鐘沒有啟用時(shí),軟件無法讀出外設(shè)寄存器的值,返回的數(shù)值始終為0.設(shè)計(jì)中用到的PA口、PB口、PD口的時(shí)鐘分別通過APB2ENR寄存器的第2、3、5位來設(shè)置,SPI1的時(shí)鐘通過APB2ENR的第12位來設(shè)置。

            3.1.2 I/O口的初始化

            本設(shè)計(jì)涉及的I/O口包括:用于控制片選擴(kuò)展的PA.3、PB.0口,需設(shè)置成開端輸出模式;用于實(shí)現(xiàn)按鍵控制的PA.15(錄音鍵)、PA.0(強(qiáng)制停止鍵)等需設(shè)置為上拉輸入模式;用于實(shí)現(xiàn)SPI通信的PA.5、PA.6、PA.7口,它們分別對(duì)應(yīng)SPI1的SCK、MISO、MOSI口,應(yīng)由軟件設(shè)置這三個(gè)口為復(fù)用I/O口即第二功能;用于檢測(cè)放音結(jié)束時(shí)語音芯片INT端低電平輸出的PA.8和PD.2設(shè)置為上拉輸入模式。

            3.1.3外部中斷的初始化

            外部中斷初始化中主要完成的工作是設(shè)置I/O口與中斷線的對(duì)應(yīng)關(guān)系、開啟與該I/O口對(duì)應(yīng)的線上中斷/事件以及設(shè)置中斷的觸發(fā)條件、配置中斷分組并使能中斷。本設(shè)計(jì)中,將強(qiáng)制停止鍵連接到的PA.0口對(duì)應(yīng)的中斷觸發(fā)條件設(shè)置為上升沿觸發(fā),對(duì)應(yīng)的中斷優(yōu)先級(jí)最高;其余按鍵連接的I/O口對(duì)應(yīng)的中斷觸發(fā)條件都設(shè)置為下降沿觸發(fā)。把所有的中斷都分配到第二組,把所有按鍵的次優(yōu)先級(jí)設(shè)置成一樣,而搶占優(yōu)先級(jí)不同。其中,幾個(gè)放音鍵連接的I/O口對(duì)應(yīng)的中斷共用一個(gè)中斷服務(wù)程序,也就是多個(gè)中斷線上的中斷共用一個(gè)中斷服務(wù)函數(shù),在該中斷服務(wù)程序里先對(duì)進(jìn)入中斷的信號(hào)進(jìn)行區(qū)分(通過中斷輸入I/O口上的電平判斷),再分別處理。

            3.1.4 SPI模塊的初始化

            本設(shè)計(jì)中,通過對(duì)CR1寄存器的設(shè)置,將SPI1模塊設(shè)置成全雙工模式、軟件NSS管理、主機(jī)模式、8 b MSB數(shù)據(jù)格式,并且把SPI1的波特率設(shè)置成了最低(281.25 kHz,為系統(tǒng)時(shí)鐘的256分頻),其中最重要的是SPI模塊輸出串行同步時(shí)鐘極性和相位的配置,SPI主模塊和與之通信的外設(shè)備時(shí)鐘相位和極性應(yīng)該一致。最后,發(fā)送0xff啟動(dòng)傳輸。

            根據(jù)ISD4004不同相位下的SPI總線傳輸時(shí)序和SPI操作時(shí)序關(guān)系,要想實(shí)現(xiàn)和ISD4004之間的SPI通信,須將其控制位CPHA和CPOL都設(shè)置為1.

            3.2 SPI控制功能軟件實(shí)現(xiàn)

            3.2.1 SPI1讀寫字節(jié)函數(shù)

            在讀數(shù)據(jù)時(shí),接收到的數(shù)據(jù)被存放在一個(gè)內(nèi)部的接收緩沖器中;在寫數(shù)據(jù)時(shí),在被發(fā)送之前,數(shù)據(jù)將首先被存放在一個(gè)內(nèi)部的發(fā)送緩沖器中。對(duì)SPI_DR寄存器的讀操作,將返回接收緩沖器的內(nèi)容;寫入SPI_DR寄存器的數(shù)據(jù)將被寫入發(fā)送緩沖器中。

            SPI_SR是16位狀態(tài)寄存器,它的最低位為RXNE,該位為0則接收緩沖為空,為1則接收緩沖非空;SPI_SR的次低位為TXE,該位為0說明發(fā)送緩沖非空,為1則發(fā)送緩沖為空。不斷地查詢發(fā)送/接收緩沖區(qū)是否為空,進(jìn)而實(shí)現(xiàn)數(shù)據(jù)的有序發(fā)送和接收。

            3.2.2發(fā)送指令函數(shù)

            首先,語音芯片ISD4004有如下操作規(guī)則:

            (1)串行外設(shè)接口,SPI協(xié)議設(shè)定微控制器的SPI移位寄存器在SCLK下降沿動(dòng)作,在時(shí)鐘上升沿鎖存MOSI引腳數(shù)據(jù),在下降沿將數(shù)據(jù)送至MISO引腳。

            (2)上電順序,器件延時(shí)TPUD(8 kHz采樣時(shí),約為25 ms)后才能開始操作。因此,用戶發(fā)完上電指令后,必須等待TPUD,才能發(fā)出下一條操作指令。

            例如,從00處放音,應(yīng)遵循如下時(shí)序:

            ①發(fā)POWER UP命令;

           ?、诘却齌PUD(上電延時(shí));

           ?、郯l(fā)地址值為00的SET PLAY命令;

            ④發(fā)PLAY命令。

            器件會(huì)從00地址開始放音,當(dāng)出現(xiàn)EOM時(shí),立即中斷,停止放音。

            如果從00處錄音,則按以下時(shí)序:

           ?、侔l(fā)POWER UP指令;

           ?、诘却齌PUD(上電延時(shí));

           ?、郯l(fā)POWER UP命令;

            ④等待2倍TPUD;

           ?、莅l(fā)地址值為00的SET REC命令;

           ?、薨l(fā)REC命令。

            器件便從00地址開始錄音,一直到出現(xiàn)OVF(存儲(chǔ)器末尾)時(shí),錄音停止。



          關(guān)鍵詞: STM32 語音導(dǎo)覽

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();