欧美国产日韩精品-欧美国产日韩久久久-欧美国产日韩一区二区三区-欧美国产日韩在线-台湾毛片-台湾美女古装一级毛片

基于S3C2410的Linux下的I2S接口實現嵌入式語音的錄

來源:期刊VIP網所屬分類:機械時間:瀏覽:

  摘要:IIS接口即集成音頻接口,如果設計音頻應用產品,I2S總線接口是必需的。而S3C2410芯片內部集成有I2S接口控制部件,以便實現一個用于迷你型、可移動的多媒體數字音頻信號編解碼器。本文在介紹I2S總線的基礎上,分析并實現了在Linux下放音和錄音的初始化驅動及錄放音的過程。

  關鍵字: S3C2410 I2S總線 嵌入式Linux UDA1341

  1 I2S總線概述

  音響數據的采集、處理和傳輸是多媒體技術的重要組成部分。眾多的數字音頻系統已經進入消費市場,例如數字音頻錄音帶、數字聲音處理器。I2S(Inter—IC Sound)總線是飛利浦公司為數字音頻設備之間的音頻數據傳輸而制定的一種總線標準,該總線專責于音頻設備之間的數據傳輸,廣泛應用于各種多媒體系統。它采用了沿獨立的導線傳輸時鐘與數據信號的設計,通過將數據和時鐘信號分離,避免了因時差誘發的失真,為用戶節省了購買抵抗音頻抖動的專業設備的費用。

  2 I2S總線規范

  在飛利浦公司的I2S標準中,既規定了硬件接口規范,也規定了數字音頻數據的格式。

  2.1 I2S有3個主要信號:

  1)串行時鐘SCLK,也叫位時鐘(BCLK),即對應數字音頻的每一位數據,SCLK都有1個脈沖。SCLK的頻率=2×采樣頻率×采樣位數。

  2) 幀時鐘LRCK,(也稱WS),用于切換左右聲道的數據。LRCK為“1”表示正在傳輸的是左聲道的數據,為“0”則表示正在傳輸的是右聲道的數據。LRCK的頻率等于采樣頻率。

  3)串行數據SDATA,就是用二進制補碼表示的音頻數據。

  有時為了使系統間能夠更好地同步,還需要另外傳輸一個信號MCLK,稱為主時鐘,也叫系統時鐘(Sys Clock),是采樣頻率的256倍或384倍。

  2.2 串行數據(SD)

  I2S格式的信號無論有多少位有效數據,數據的最高位總是出現在LRCK變化(也就是一幀開始)后的第2個SCLK脈沖處。如果接收端能處理的有效位數多于發送端,可以自行補足剩余的位。這種同步機制使得數字音頻設備的互連更加方便,而且不會造成數據錯位。

  I2S格式的信號無論有多少位有效數據,數據位的最高位(MSB)總是被最先傳輸,1次能夠發送的數據決定于I2S格式的有效位數。

  隨著技術的發展,在統一的I2S接口下出現了多種不同的數據格式。根據SD信號相對于SCK和WS位置的不同,分為左對齊和右對齊2種格式,如圖2和圖3所示。

  2.3 字段(聲道)選擇(WS)

  命令選擇線表明了正在被傳輸的聲道。

  WS=1,表示正在傳輸的是左聲道的數據。

  WS=0,表示正在傳輸的是右聲道的數據。

  WS可以在串行時鐘的上升沿或者下降沿發生改變,并且WS信號不需要一定是對稱的。在從屬裝置端,WS在時鐘信號的上升沿發生改變。在圖2、圖3兩種數據傳輸格式中,當WS為“1”時傳輸的是左聲道的數據,當WS為“0”時傳輸的是右聲道的數據。為了保證數字音頻信號的正確傳輸,發送端和接收端應該采用相同的數據格式和長度。當然,對I2S格式來說數據長度可以不同。

  2.4電氣規范:

  輸出電壓:

  VL <0.4V

  VH>2.4V

  輸入電壓

  VIL=0.8V

  VIH=2.0V

  注:目前使用的TTL電平標準,隨著其他IC(LSI)的流行,其他電平也會支持。

  3 I2S工作時序

  在I2S總線中,任何設備都可以通過提供必需的時鐘信號成為系統的主導裝置,而從屬裝置通過外部時鐘信號來得到它的內部時鐘信號,這就意味著必須重視主導裝置和數據以及命令選擇信號之間的傳播延遲,總的延遲主要由兩部分組成:

  1)外部時鐘和從屬裝置的內部時鐘之間的延遲

  2)內部時鐘和數據信號以及命令選擇信號之間的延遲

  對于數據和命令信號的輸入,外部時鐘和內部時鐘的延遲不占據主導地位,它只是延長了有效的建立時間(set—up time)。延遲的主要部分是發送端的傳輸延遲和設置接收端所需的時間。

  T是時鐘周期,Tr是最小允許時鐘周期,T>Tr這樣發送端和接收端才能滿足數據傳輸速率的要求。

  對于所有的數據速率,發送端和接收端均發出一個具有固定的傳號空號比(mark—space ratio)的時鐘信號,所以t LC和tHC是由T所定義的。 t LC和tHC必須大于0.35T,這樣信號在從屬裝置端就可以被檢測到。

  延遲(tdtr)和最快的傳輸速度(由Ttr定義)是相關的,快的發送端信號在慢的時鐘上升沿可能導致tdtr不能超過tRC而使thtr為零或者負。只有tRC不大于tRCmax的時候(tRCmax>:0.15T),發送端才能保證thtr大于等于0。

  數據建立時間(set-up time)和保持時間(hold time)不能小于指定接收端的建立時間和保持時間。

  4 I2S總線結構配置

  S3C2410數字音頻接口模塊由I2S(Inter-IC Sound)音頻總線接口和UDA1341音頻編碼器(CODEC)組成。S3C2410內置一個I2S總線控制器,該控制器實現了到一個外部8/16位立體聲音頻CODEC IC的接口。支持I2S總線數據格式和MSB-justified數據格式。此控制器包含FIFO,支持DMA傳輸模式。I2S總線控制器結構如圖4所示。

  UDA1341是Philips公司的一款經濟型音頻CODEC,用于實現模擬音頻信號的采集(音頻AD)和數字音頻信號的模擬輸出(DA),并通過I2S數字音頻接口,實現音頻信號的數字化處理。

  5 S3C2410下的放音代碼

  I2S放音代碼如下所示:

  void Play_Iis(void)

  {

  unsigned int save_G, save_E, save_PG, save_PE;

  Uart_TxEmpty(0);

  由于I2S時鐘從系統進鐘分頻得到,為了得到合適的I2S時鐘,必須對系統時鐘進行適當的降頻處理,降頻后必須對串口重新進行初始化。然后將用到的端口保存起來,并進行端口初始化。

  I2S可以采用DMA方式進行語音錄音和播放,因此需進行DMA中斷的注冊。

  pISR_DMA2 = (unsigned)DMA2_Done;

  然后獲取語音數據及其大小以及采樣頻率。

  下來初始化UDA1341,設置為放音模式。

  Init1341(PLAY);

  接著進行DMA初始化。

  //DMA2 Initialize

  rDISRC2 = (int)(Buf + 0x2c);

  rDISRCC2 = (0<<1) + (0<<0);

  rDIDST2 = ((U32)IISFIFO);

  rDIDSTC2 = (1<<1) + (1<<0);

  rDCON2 = (1<<31)+(0<<30)+(1<<29)+(0<<28)+(0<<27)+(0<<24)+(1<<23)+(0<<22)+(1<<20)+(size/4);

  rDMASKTRIG2 = (0<<2) + (1<<1) + (0<<0);

  I2S的初始化并啟動I2S功能。

  if(fs==44100)

  rIISPSR = (2<<5) + 2;

  else

  rIISPSR = (5<<5) + 5;

  rIISCON = (1<<5) + (1<<2) + (1<<1);

  rIISMOD = (0<<8) + (2<<6) + (0<<5) + (0<<4) + (1<<3) + (0<<2) + (1<<0);

  rIISFCON = (1<<15) + (1<<13);

  //IIS Tx Start

  rIISCON |= 0x1;

  rINTMSK &= ~(/*BIT_EINT0 | BIT_UART0 |*/ BIT_DMA2);

  ClearPending(BIT_DMA2);

  I2S啟動后,將采用DMA方式播放語音數據,播放完畢后將引發DMA2中斷,在其中斷處理函數中將dma2_done設置為非零,因此,在主程序中可以通過判斷dma2_done是否為0決定播放是否結束。語音播放結束,通知I2S,并恢復寄存器設置。

  最后將關閉中斷并將系統時鐘恢復。

  rINTMSK |= (BIT_DMA2);

  ChangeMPllValue(0xa1,0x3,0x1); // FCLK=202.8MHz

  Uart_Init(0,115200);

  mute = 1;

  PRINTF("------放音測試結束------\n\n");

  6 S3C2410下的錄音代碼

  錄音程序在初始化等動作上與放音類似,代碼如下:

  void Record_Iis(void)

  {

  unsigned int save_G, save_E, save_PG, save_PE;

  Uart_TxEmpty(0);

  ChangeClockDivider(1,1);

  ChangeMPllValue(0x96,0x5,0x1);

  Uart_Init(33857142,115200);

  PRINTF("--------錄音測試--------\n");

  PRINTF("[1] 請接上耳機和麥克風\n");

  save_G = rGPGCON;

  save_E = rGPECON;

  save_PG = rGPGUP;

  save_PE = rGPEUP;

  IIS_PortSetting();

  錄制的聲音數據保存在rec_buf中,錄制長度為REC——LEN:

  rec_buf = (unsigned short *)0x31000000;

  pISR_DMA2 = (unsigned)DMA2_Rec_Done;

  pISR_EINT0 = (unsigned)Muting;

  rINTMSK &= ~(BIT_DMA2);

  Init1341(RECORD);

  rDISRCC2 = (1<<1) + (1<<0);

  rDISRC2 = ((U32)IISFIFO);

  rDIDSTC2 = (0<<1) + (0<<0);

  rDIDST2 = (int)rec_buf;

  rDCON2 = (1<<31)+(0<<30)+(1<<29)+(0<<28)+(0<<27)+(1<<24)+(1<<23)+(1<<22)+(1<<20)+REC_LEN;

  rDMASKTRIG2 = (0<<2) + (1<<1) + 0;

  rIISMOD = (0<<8) + (1<<6) + (0<<5) + (0<<4) + (1<<3) + (0<<2) + (1<<0);

  rIISPSR = (2<<5) + 2;

  rIISCON = (0<<5) + (1<<4) + (1<<3) + (0<<2) + (1<<1);

  rIISFCON = (1<<14) + (1<<12);

  開始錄音:

  rIISCON |= 0x1;

  while(!Rec_Done) Delay(1);

  rINTMSK |= BIT_DMA2;

  Rec_Done = 0;

  PRINTF(" 錄音完畢\n");

  7結束語

  I2S總線是近年出現的一種面向多媒體計算機器Multimedia PC)的音頻總線,該總線專門用于音頻設備之間的數據傳輸。文中基于S3C2410和Linux平臺,設計共實現基于該平臺的I2S錄音放音。

久久精品大片| 久草免费在线视频| 国产伦久视频免费观看 视频| 日日日夜夜操| 国产视频久久久| 精品国产三级a| 一级毛片视频免费| 成人在免费观看视频国产| 亚欧乱色一区二区三区| 国产麻豆精品高清在线播放| 精品视频在线观看免费| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 日本伦理片网站| 日本特黄特黄aaaaa大片| 中文字幕一区二区三区精彩视频| 一级女性大黄生活片免费| 一级女性全黄久久生活片| 色综合久久久久综合体桃花网| 精品视频一区二区| 久久精品欧美一区二区| 精品久久久久久影院免费| 久久国产一久久高清| 日韩免费片| 国产91丝袜在线播放0| 欧美激情一区二区三区视频| 午夜在线亚洲| 久久99这里只有精品国产| 黄视频网站在线看| 麻豆系列 在线视频| 999久久狠狠免费精品| 国产不卡在线播放| 九九热国产视频| 精品久久久久久中文字幕一区 | 国产91丝袜高跟系列| 四虎精品在线观看| 久久国产一久久高清| 美女免费黄网站| 欧美激情一区二区三区在线 | 你懂的国产精品| 国产视频久久久| 国产综合成人观看在线| 精品美女| 国产高清视频免费| 欧美1区| 久久99中文字幕| 99久久精品国产高清一区二区| 午夜在线亚洲| 国产伦精品一区二区三区无广告 | 午夜久久网| 天天做日日干| 91麻豆国产| 韩国毛片| 久久福利影视| 国产精品免费久久| 成人高清免费| 九九久久99综合一区二区| 青青久久精品| 999久久狠狠免费精品| 欧美大片一区| 可以在线看黄的网站| 日韩在线观看视频免费| 成人av在线播放| 亚洲天堂免费| 国产视频久久久| 欧美1卡一卡二卡三新区| 免费的黄视频| 韩国妈妈的朋友在线播放| 天天做日日爱| 人人干人人草| 国产精品免费精品自在线观看| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 日韩男人天堂| 麻豆污视频| 二级片在线观看| 黄色福利片| 精品国产一级毛片| 91麻豆爱豆果冻天美星空| 日韩一级黄色大片| 一级女人毛片人一女人| 国产麻豆精品高清在线播放| 久久精品成人一区二区三区| 韩国毛片| 精品视频在线看| 久草免费在线色站| 青青久久精品| 黄色福利片| 午夜在线亚洲| 超级乱淫伦动漫| 香蕉视频久久| 日韩中文字幕在线亚洲一区 | 精品视频在线观看一区二区三区| 一级女人毛片人一女人| 精品在线观看国产| 日韩一级黄色大片| 久久精品免视看国产明星| 国产91精品系列在线观看| 日本免费看视频| 日本免费乱理伦片在线观看2018| 午夜在线影院| 国产视频一区在线| 999精品视频在线| 日韩av东京社区男人的天堂| 九九九网站| 韩国三级视频网站| 国产麻豆精品视频| 成人免费一级纶理片| 国产91精品一区| 成人免费一级纶理片| 深夜做爰性大片中文| 四虎影视库国产精品一区| 日韩av片免费播放| 日韩男人天堂| 精品国产三级a| 免费国产在线观看| 国产精品自拍在线| 99久久网站| 久久国产影视免费精品| 精品在线观看国产| 日韩在线观看免费完整版视频| 久久精品店| 国产美女在线观看| 日本特黄一级| 久草免费在线色站| 欧美a级片免费看| 亚洲精品中文字幕久久久久久| 日韩在线观看视频网站| 国产不卡福利| 九九热国产视频| 国产精品自拍在线观看| 亚洲第一色在线| 精品视频在线看| 日韩中文字幕在线播放| 午夜欧美福利| 黄视频网站在线免费观看| 成人高清视频在线观看| 色综合久久天天综线观看| 国产视频一区二区在线播放| 精品视频在线观看一区二区| 精品久久久久久中文| 四虎久久影院| 日本在线www| 麻豆网站在线看| 青青久久网| 国产一区二区精品久久| 国产视频在线免费观看| 久久国产影视免费精品| 欧美激情在线精品video| 精品视频免费看| 精品久久久久久中文| 国产福利免费视频| 国产精品自拍亚洲| 亚洲第一页乱| 日日日夜夜操| 韩国三级视频网站| 天天色色色| 久久精品道一区二区三区| 亚久久伊人精品青青草原2020| 国产视频一区二区在线观看| 亚欧乱色一区二区三区| 午夜激情视频在线观看 | 日韩一级精品视频在线观看| 免费一级片在线| 国产国语对白一级毛片| 国产成人精品影视| 欧美另类videosbestsex视频| 色综合久久天天综合| 青青青草视频在线观看| 青青久久精品| 精品在线观看国产| 日韩男人天堂| 免费毛片播放| 天天色成人| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 久久成人综合网| 91麻豆精品国产高清在线| 日韩专区在线播放| 亚洲女初尝黑人巨高清在线观看| 九九久久国产精品| 亚洲 欧美 91| 欧美一级视频高清片| 欧美激情一区二区三区视频 | 国产a视频| 欧美18性精品| 欧美国产日韩一区二区三区| 超级乱淫伦动漫| 黄色短视频网站| 亚洲天堂在线播放| 欧美1区| 国产成人精品综合在线| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 精品国产香蕉伊思人在线又爽又黄| 国产精品自拍亚洲| 一本高清在线| 久久精品店| 91麻豆高清国产在线播放| 国产激情一区二区三区| 久久99中文字幕| 国产麻豆精品| 国产欧美精品午夜在线播放| 九九久久国产精品大片|