在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            S3C2440-IIS放音

            作者: 時(shí)間:2016-12-02 來(lái)源:網(wǎng)絡(luò) 收藏
            S3C2440A的Inter-IC Sound(IIS)總線接口作為一個(gè)編解碼接口連接外部8/16位立體聲音頻解碼IC用于迷你碟機(jī)和可攜式應(yīng)用。IIS總線接口支持IIS總線數(shù)據(jù)格式和MSB-justified數(shù)據(jù)格式。該接口對(duì)FIFO的訪問(wèn)采用了DMA模式取代了中斷。它可以在同一時(shí)間接受和發(fā)送數(shù)據(jù)。S3C2440一共有5個(gè)引腳用于IIS:IISDO,IISDI,IISSCLK,IISLRCK和CDCLK。前兩個(gè)信號(hào)用于數(shù)字音頻信號(hào)的輸入輸出,另外3個(gè)引腳都與音頻信號(hào)的頻率有關(guān),可見(jiàn)要用好IIS,就要把信號(hào)頻率設(shè)置正確。IISSCLK為串行時(shí)鐘,每一個(gè)時(shí)鐘信號(hào)傳送一位音頻信號(hào),因此IISSCLK的頻率=聲道數(shù)*采樣頻率*采樣位數(shù),如采樣頻率為44.1kHz,采樣的位數(shù)為16位,聲道數(shù)2個(gè)(左,右兩個(gè)聲道),則IISSCLK的頻率=32fs=1411.2kHz。IISLRCK為幀時(shí)鐘,用于切換左右聲道,如IISLRCK為高電平表示正在傳輸?shù)氖亲舐暤罃?shù)據(jù),為低表示傳輸?shù)氖怯衣暤罃?shù)據(jù)。因此IISLRCK的頻率應(yīng)該正好等于采樣頻率。由于IIS只負(fù)責(zé)數(shù)字音頻信號(hào)的傳輸,而要真正實(shí)現(xiàn)音頻信號(hào)的放錄還需要額外的處理芯片(在這里我們使用UDA1341),CDCLK為該芯片提供系統(tǒng)同步時(shí)鐘,即編解碼時(shí)鐘,主要用于音頻的A/D,D/A采樣時(shí)的采樣時(shí)鐘,一般CDCLK為256fs或384fs。UDA1341使用L3接口,通過(guò)L3接口可以實(shí)現(xiàn)UDA1341和S3C2440控制信息的傳遞。L3指3根線,L3DATA(數(shù)據(jù)線,用于傳輸數(shù)據(jù)),L3MODE(模式線,用于選擇模式),L3CLOCK(時(shí)鐘線,用于傳輸時(shí)鐘)。先傳輸?shù)刂纺J綌?shù)據(jù),再傳輸數(shù)據(jù)模式數(shù)據(jù)。L3MODE為低時(shí)是地址模式,L3MODE為高時(shí)是數(shù)據(jù)傳輸模式。L3DATA和L3CLOCK相互作用,完成8位數(shù)據(jù)的傳輸,傳輸?shù)捻樞蚴窍鹊臀粩?shù)據(jù),再高位數(shù)據(jù)。地址模式用于選擇設(shè)備和定義目標(biāo)寄存器,在這種模式下,8位數(shù)據(jù)的含義是:高6位是設(shè)備地址(UDA1341的地址為000101),低兩位是后面數(shù)據(jù)模式的類型(00:DATA0,01:DATA1,10:STATUS)。

            下面這個(gè)程序完成從WAV音頻文件中提取出數(shù)組。

            #include <stdio.h>
            #include<stdlib.h>
            #include <string.h>
            #include <memory.h>
            int main(){
            FILE *stream, *fp;
            unsigned char *music;
            char ch[5];
            int start, end, num, t, i, j, r;
            if(((stream = fopen("D:music.wav","rb")) == NULL) || ((fp = fopen("D:music.h","wb+")) == NULL)){
            printf("%s","cannot open output file.");
            return 1;
            }
            fseek(stream,0,SEEK_SET);
            start = ftell(stream); //獲得文件的起始地址
            fseek(stream,0,SEEK_END);
            end = ftell(stream); //獲得文件的結(jié)束地址
            fseek(stream,0,SEEK_SET);
            music = (unsigned char *)malloc(end-start); //動(dòng)態(tài)分配一個(gè)buffer
            fwrite("unsigned char music[",1,20,fp);
            fwrite("]={",1,3,fp);
            fwrite("", 2, 1, fp);
            num = (end - start - 0x2c) / 16; //m每行16個(gè)
            t = (end - start - 0x2c) % 16;
            fread(music, 1, end - start, stream);
            for(i = 0; i < num; i++){
            for(j = 0; j < 16; j++){
            memset(ch,0,5);
            r = (int)music[i*16+j+0x2c]; //從0x2c開始是音頻數(shù)據(jù)
            r &= 0xff;
            sprintf(ch,"0x%02x",r); //先轉(zhuǎn)化成一定格式
            fwrite(ch,sizeof(ch),1,fp);
            fwrite(",",1,1,fp);
            }
            fwrite("",1,2,fp);
            }
            for(i = 0; i < t; i++){
            memset(ch,0,5);
            r = (int)music[i*16+j+0x2c];
            r &= 0xff;
            sprintf(ch,"0x%02x",r);
            fwrite(ch,sizeof(ch),1,fp);
            if(i != t-1)
            fwrite(",",1,1,fp);
            }
            fwrite("};",1,2,fp);
            fclose(stream);
            fclose(fp);
            system("pause");
            return 0;
            }

            上一頁(yè) 1 2 下一頁(yè)

            關(guān)鍵詞: S3C2440IIS放

            評(píng)論


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

            關(guān)閉