新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于STM32的語音導覽系統的設計

        基于STM32的語音導覽系統的設計

        作者: 時間:2015-03-04 來源:網絡 收藏

          3主要功能軟件設計

        本文引用地址:http://www.104case.com/article/270441.htm

          3.1軟件初始化

          3.1.1外設時鐘的使能

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

          3.1.2 I/O口的初始化

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

          3.1.3外部中斷的初始化

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

          3.1.4 SPI模塊的初始化

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

          根據ISD4004不同相位下的SPI總線傳輸時序和SPI操作時序關系,要想實現和ISD4004之間的SPI通信,須將其控制位CPHA和CPOL都設置為1.

          3.2 SPI控制功能軟件實現

          3.2.1 SPI1讀寫字節函數

          在讀數據時,接收到的數據被存放在一個內部的接收緩沖器中;在寫數據時,在被發送之前,數據將首先被存放在一個內部的發送緩沖器中。對SPI_DR寄存器的讀操作,將返回接收緩沖器的內容;寫入SPI_DR寄存器的數據將被寫入發送緩沖器中。

          SPI_SR是16位狀態寄存器,它的最低位為RXNE,該位為0則接收緩沖為空,為1則接收緩沖非空;SPI_SR的次低位為TXE,該位為0說明發送緩沖非空,為1則發送緩沖為空。不斷地查詢發送/接收緩沖區是否為空,進而實現數據的有序發送和接收。

          3.2.2發送指令函數

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

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

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

          例如,從00處放音,應遵循如下時序:

          ①發POWER UP命令;

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

         ?、郯l地址值為00的SET PLAY命令;

         ?、馨lPLAY命令。

          器件會從00地址開始放音,當出現EOM時,立即中斷,停止放音。

          如果從00處錄音,則按以下時序:

         ?、侔lPOWER UP指令;

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

         ?、郯lPOWER UP命令;

          ④等待2倍TPUD;

         ?、莅l地址值為00的SET REC命令;

          ⑥發REC命令。

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



        關鍵詞: STM32 語音導覽

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 漾濞| 永城市| 鲁甸县| 江安县| 嘉祥县| 肃宁县| 通城县| 水城县| 石嘴山市| 鄂托克前旗| 南开区| 屏东县| 麻阳| 苗栗市| 咸宁市| 宁海县| 游戏| 新蔡县| 唐山市| 麦盖提县| 石门县| 乌鲁木齐县| 玉树县| 漳平市| 瑞丽市| 乐清市| 石门县| 咸阳市| 南和县| 饶平县| 古浪县| 长岭县| 婺源县| 双流县| 北京市| 贡山| 耿马| 方正县| 原平市| 和硕县| 鹤山市|