《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 智能無線多媒體數字播放系統的設計與實現
智能無線多媒體數字播放系統的設計與實現
崔 微,馮文江,衡玉龍,唐丹丹,郭褚冰
(重慶大學 通信工程學院,重慶400044)
摘要: 基于嵌入式Linux技術,提出一種智能無線多媒體數字播放系統的設計方案。介紹了系統功能、總體結構、主控CPU和無線模塊。通過Linux系統中SPI接口的驅動對無線模塊的控制,成功實現了區域位置自動識別和音視頻文件的受控播放以及與用戶進行交互的圖形化界面操作程序。
Abstract:
Key words :

摘  要: 基于嵌入式Linux技術,提出一種智能無線多媒體數字播放系統的設計方案。介紹了系統功能、總體結構、主控CPU和無線模塊。通過Linux系統中SPI接口的驅動對無線模塊的控制,成功實現了區域位置自動識別和音視頻文件的受控播放以及與用戶進行交互的圖形化界面操作程序。
關鍵詞: 嵌入式Linux;SPI驅動CYWUSB6934;多媒體數字播放系統

  隨著旅游業的進一步發展,旅游市場電子產品更趨多樣性,以滿足不同消費人群的個性化需求,目前常見的能提供語音服務的電子導游機只能提供單一的語音解說,不能滿足游客追求視聽一體化享受的需求。如果在游客進入任一景點時,可以通過手中的多媒體數字播放系統,在優美的背景音樂中輕松聆聽富有內涵的講解或在參觀、游覽的同時,播放相應景點的歷史畫面,就能讓每一個游客得到深層次的精神享受。
  嵌入式應用技術已在消費類電子產品中得到廣泛應用,其高智能化、可裁剪性、可移植性的特點已受到業界的推崇[1-2]。本文介紹一種智能無線多媒體播放系統,該產品將嵌入式應用技術應用于電子多媒體導游產品開發,實現了視頻受控播放,彌補了以往單一語音解說的不足,也有重要的市場推廣價值。
1 系統組成
  一種能夠自動接收并識別無線地址碼的嵌入式智能無線多媒體播放系統結構如圖1所示,該系統由手持智能無線多媒體終端和地址碼無線發射機構成。

  地址碼無線發射機安裝在各個景點或展臺處,周期性地向外發射自身地址碼,不同的景點/展臺具有不同的地址碼,同一景點/展臺可以設置一個或多個相同地址碼的發射機,盡量讓所發射的信號覆蓋整個景點/展臺,同時通過發射功率控制技術避免相鄰景點/展臺之間產生交叉干擾。隨著用戶的移動,所攜帶的手持智能無線多媒體終端在走近某景點/展臺時會自動接收到對應該景點/展臺的地址碼,通過對該地址碼的解析,接收終端調用并切換到該地址碼對應的、預存在SD存儲卡中的音視頻文件進行播放,用戶可通過LCD液晶觸摸顯示屏觀看播放內容,也可以終止自動播放,手動選擇其他的音視頻文件進行播放。
2 系統設計
2.1 系統設計指標
  設計指標為:各景點/展臺的覆蓋范圍5 m~25 m可調;各景點/展臺之間互不干擾;景點識別編碼發射采用ISM頻段;信號發射功率在允許范圍之內可調;能在溫度濕度相對惡劣的環境下工作;使用智能化操作系統,可隨時更新應用程序;自動實現不同景點/展臺的音視頻內容切換;擁有圖形用戶界面,用戶可通過觸摸屏手動選擇音視頻文件和語種;可存放音視頻文件,大小及數量根據SD存儲卡容量決定,可現場下載更新;支持音頻MP3和MPEG1-4視頻文件播放;發射主機符合國家相關標準。
  為了滿足設計技術指標要求,對構成系統的主要器件選擇如下:(1)地址碼無線發射機的主控芯片選用TI公司的MSP430F133;(2)手持智能無線多媒體終端的主控芯片選用三星公司的S3C2440A,該芯片典型主頻為400 MHz,集成了NAND Flash控制器、SD/MMC控制器、LCD控制器、SPI接口控制器等;(3)無線收發模塊選用CYWUSB6934;(4)Flash存儲器采用三星公司的K9F1208UOB;(5)SDRAM采用Hynix公司的HY57561620T;(6)顯示屏采用NEC 3.5′ TFT觸摸屏;(7)音頻解碼芯片采用UDA1341TS。
  嵌入式操作系統構成如下:(1)Bootloader使用三星公司專為其產品開發的啟動代碼VIVI;(2)內核采用Linux2.6.13版[3];(3)文件系統選擇與NAND Flash兼容較好的YAFFS文件系統[4-6];(4)圖形用戶界面采用QTOPIA1.7[7]。
2.2 ARM9嵌入式微處理器S3C2440A[8]
  S3C2440A是三星公司基于ARM920T設計的一款處理器,主頻400 MHz;擴展總線最大頻率100 MHz;32 bit數據,27 bit外部數據線;完全靜態設計(0~400 MHz);存儲控制器(8個存儲體),4個帶有PWM的16 bit定時器;多達55個中斷源的中斷控制器;RTC;3個UART,支持IrDA 1.0;4個DMA通道支持外設DMA;8通道,500 kS/s,10 bit ADC;支持STN與TFT LCD控制器;看門狗;I2S音頻接口;2個USB接口;I2C-Bus接口;2個串行外圍接口電路(SPI);SD卡接口。選擇ARM9芯片可以利用Linux操作系統來減少軟件開發時間,而且S3C2440A對主流多媒體支持較好,很適合用于開發智能多媒體系統。
2.3 CYWUSB6934無線收發模塊[9]
      無線收發模塊選用Cypress公司的CYWUSB6934。該芯片既可用作發射,也可用作接收,工作在2.4 GHz ISM 頻段,頻率范圍為2.4 GHz~2.483 GHz。具有低功耗、低輻射的特點(輻射功率最大為0 dBm),且發射功率可調(共7個等級);無線接收靈敏度高,可達-90 dBm;通信半徑可達10 m(當輸出最大功率且無障礙物阻擋時的直線通信距離可達15 m左右)。采用直序擴頻(DSSS)技術,調制方式采用高斯頻移鍵控(GFSK),與ARM之間接口為SPI口。由于其近距離、低功耗等特點,非常適用于短距離無線傳輸。
2.4 地址碼無線發射機[10]
  地址碼無線發射機是以單片機為核心構成的控制系統,主要包括電源模塊、無線發射模塊和發射功率調整撥動開關,單片機與無線發射模塊的接口為SPI口。
2.5 手持智能無線多媒體終端
  每個景點/展臺的音視頻內容都以特定格式存儲在SD存儲卡中,每一個文件以規定方式命名,且對應于一個地址碼。
  手持智能無線多媒體終端開機完成硬件初始化、Linux操作系統的啟動、文件系統的掛載和圖形用戶界面的啟動后,由用戶點擊圖形桌面上的智能點播系統程序圖標運行點播程序。該程序打開無線模塊,開始監聽信道,同時等待查詢信息的返回。系統每隔1 s查詢一次CYWUSB6934的數據狀態寄存器,當收到1 B的數據后,狀態字會自動改變。系統查詢到這個信息后,立即讀取CYWUSB6934的數據寄存器以獲得地址碼。系統會將接收到的地址碼與前一數據進行對比,若相同則繼續播放,若不同則自動切換到對應該地址碼的文件進行播放。
3 智能無線點播的實現
  微處理器S3C2440A和無線芯片CYWUSB6934之間通過SPI接口進行通信,在Linux系統中兩者之間的通信就必須通過SPI驅動程序來實現。而智能點播則是在用戶啟動Linux系統中的點播程序時,系統識別接收到的數據后,自動調用音視頻文件進行播放。
3.1 SPI驅動
  在Linux操作系統中,所有外圍設備的控制都是通過驅動程序實現的,設備驅動程序是操作系統內核與機器硬件之間的接口。
  手持智能無線多媒體終端需要通過SPI接口控制無線收發芯片,這就需使用SPI接口驅動程序來建立無線收發芯片與內核之間的通信橋梁。SPI接口以主從方式進行工作,其接口包括4種信號:(1)MOSI:主器件數據輸出,從器件數據輸入;(2)MISO:主器件數據輸入,從器件數據輸出;(3)SCLK:時鐘信號,由主器件產生;(4)/SS:從器件使能信號,由主器件控制。
  圖2為S3C2440A與CYWUSB6934之間SPI接口的連接圖。圖中nSS控制CYWUSB6934作為從器件,SPIMOSI和SPIMISO是它們之間的數據傳輸通道,SPICLK為時鐘信號。S3C2440A通過SPI接口與外部設備進行通信時,可發送或接收8 bit同步數據,其中兩路數據線信號的轉換與采樣由一路時鐘信號線進行同步。SPI工作方式等的選擇由S3C2440A中的相關寄存器進行控制。當SPI作為主控制器時,由SPPRE寄存器中相應的比特位控制。而當SPI為從設備時,時鐘信號則是由其他設備提供。當程序將數據寫入SPTDAT寄存器時,SPI的發送和接收操作同步進行。某些情況下,在將數據寫入SPTDAT寄存器之前,nSS應該被置為高電平。在本系統中主要用到的S3C2440A內部與SPI相關的寄存器如下:

  (1)SPCON寄存器:主要用于設置時鐘開啟、SPI傳輸格式、SPI傳輸模式。其中傳輸模式有3種,分別是polling模式、DMA模式、中斷模式。
  (2)SPSTA寄存器:SPI接口的狀態寄存器,用于指示數據接收或發送是否已經完成。
  (3)SPPIN寄存器:用于檢測是否有多個主機。
  (4)SPPRE寄存器:用于設置SPI傳輸時鐘頻率。其值通過如下計算式確定:
  Baud rate=PCLK/2/(Prescaler value+1)
  其中Prescaler value的初始值為0x00。
  (5)SPTDAT和SPRDAT寄存器:發射和接收數據寄存器。
  在Linux系統啟動時,要對以上寄存器進行賦值,就必須通過SPI驅動程序。而驅動程序就是作為系統和外部設備的一個橋梁,在這里只有將SPI通道正確打開,系統才能夠通過這個橋梁對外部無線芯片的基本工作寄存器進行操作,完成數據的收發。
  Linux中的I/O子系統向內核中的其他部分提供了一個統一的標準設備接口,這是通過include/linux/fs.h中的數據結構file_operations完成的[11]。圖3所示為本系統中SPI驅動設備描述符函數組成框圖。

  圖3中驅動程序的struct file_operations( )只使用了系統提供的4個子函數接口:open( )、write( )、ioctl( )和release( )。其中open( )用于完成SPI設備的打開、初始化相關寄存器、準備進行設備I/O操作;write( )完成通過SPI接口進行寫操作;ioctl( )是進行讀寫以外的其他操作,通過對I/O口高低電平的改變實現不同功能;release( )用于關閉設備,釋放占用內存[12]。
  S3C2440A SPI的傳輸形式是由SPI控制寄存器SPCON中的1 bit位和2 bit位的值共同決定的。1 bit位是CPHA(Clock Phrase Select),它用來選擇傳輸格式為Format A或Format B,置0為Format A,置1為Format B;2 bit位是CPOL(Clock Polarity),它決定時鐘信號是高電平觸發還是低電平觸發,置0為active high,置1為active low。根據這2個bit位的組合關系,S3C2440A的SPI操作方式有4種[4]:Format A高電平觸發,Format A低電平觸發,Format B高電平觸發,Format B低電平觸發。要使得S3C2440A能夠通過SPI接口對CYWUSB6934進行讀寫操作,就必須讓它們的時鐘和傳輸形式都相同。由圖3可以看出,CYWUSB6934的SPI單字節讀出時鐘是高電平觸發的,又如虛線箭頭處時鐘信號的上升沿正與圖4中SPI時鐘相吻合,而在圖4中cmd的2 bit位是傳輸字節中的最高2位,再根據圖5中 MOSI的MSB就應該是傳輸字節的最高2位,為00,所以選擇方式為Format A高電平觸發。

  在確定了它們之間的傳輸格式以及觸發方式后, SPI驅動的實現就是對這些寄存器進行正確的賦值。無線收發芯片CYWUSB6934通過SPI接口與ARM9主控芯片進行通信,需要對各個寄存器進行設置。根據系統要求,使用SPI1口實現SPI通信,其具體的編程實現如下:
  (1)在open( )函數中,對SPI接口進行初始化,設置端口使用狀態,設置SPI傳輸時鐘和傳輸模式。其代碼如下:

  在對S3C2440A中的SPI相關寄存器進行初始化時,需要注意SPI的時鐘是與主時鐘相關聯的,如果不首先開啟主時鐘,即使將SPI自身工作時鐘開啟也不能使接口正常工作。
  (2)通過寫函數write( )實現對無線收發芯片CYWUSB6934的數據及地址寄存器的操作。其代碼如下:
  static ssize_t spi_write(struct file*filp,const char*buf,size_t
  count,loff_t*f_ops)
  {
   unsigned int tmp=0;
   get_user(tmp,(char*)buf);/*獲取CYWUSB6934中寄存器地址*/
  while((readl(SPSTA1) & 0x1)==0);
  writel(tmp,SPTDAT1);/*向寄存器中寫預置數據*/
  while((readl(SPSTA1) & 0x1)==0);
  tmp=readl(SPRDAT1);/*再次從讀出的數據才是有用數據*/
     put_user(tmp,(char*)buf);
  return 0;
}
  (3)驅動中的ioctl( )函數通過改變I/O輸出電平的高低控制CYWUSB6934的PD(Power Down)口。該端口電平為低時可以使無線芯片工作在休眠狀態,以達到省電的目的。其代碼如下:

3.2 智能點播界面
  當手持智能無線多媒體終端接收到由地址碼無線發射機發出的地址碼時,將其存儲在數據寄存器中,主控芯片通過SPI接口讀取該地址碼信息,并以此為指針搜索對應的、預存在SD存儲卡中的音視頻文件,并按需調用終端中的音視頻播放器解碼播放。
  軟件界面有2個按鈕,左邊是自動播放按鈕,右邊是手動播放按鈕。在用戶啟動點播軟件時,終端處于自動播放狀態,而自動播放按鈕是當用戶進行手動播放后,如需要再讓其進行自動播放時使用此按鈕。當用戶點下手動播放按鈕時,會立即終止自動播放,彈出文件選擇菜單,手動選擇需要播放的文件。
  智能點播軟件需要解決的是底層數據和上層應用程序的連接問題。因為該界面程序是建立在QTOPIA平臺[13-15]上的,所以需要用Embedded C++程序完成主界面的建立和播放器的調用。而對地址碼的判斷是對底層進行操作,需調用C程序,則用戶界面程序使用一個自定義的data外部變量,作為上層界面程序與底層應用程序的橋梁。為了使程序能準確地調用播放器,這里還設立了一個消息機制,定時查詢CYWUSB6934的數據寄存器。一旦收到數據,就改變消息參數,上層界面程序查詢到這個參數改變后,便立即調用播放器。
  本文設計的基于嵌入式的無線智能多媒體數字播放系統將嵌入式應用技術與短距離無線通信技術相結合,構成一套既具有工程實用價值,又可按需擴展功能的系統,實現了智能化的區域識別與音視頻播放,適用于各種景點及展臺的音視頻自動/手動受控播放,有很好的市場前景。
參考文獻
[1] 鄒思軼.嵌入式Linux設計與應用[M].北京:清華大學出版社,2002.
[2] 管耀武,楊宗德.嵌入式無線通信系統開發.北京:電子工業出版社,2006.
[3] O′REILLY.Building embedded linux systems[M].2003,4.
[4] Seokhyun Kim,Yookun Cho.The design and implementation of flash cryptographic file system based on YAFFS[C]. School of Computer Science and Engineering,Seoul National  University,2008.
[5] Sudeep Jain,Yann-Hang Lee.Real-time support of flash  memory file system for embedded applications[C].Department  of Computer Science and Engineering Arizona State University,2006.
[6] CHEN Xing Wu,JIANG Xin Hua,WANG Lei.Development  on ARM9 system-on-chip embedded sensor node for urban  intelligent transportation system[C].School of Information Science and Engineering,Central South University, 2006,6.
[7] 深圳市優龍科技有限公司.Qt嵌入式圖形開發(實戰篇)[M]. 2004,6.
[8] Samsung S3C2440X 32 Bit RISC microprocessor developer′s  manual[M].Samsung Electronics,2004.
[9] CYWUSB6934 datasheet[M].Cypress Corporation,2005.
[10] 馮文江,邱宇,張李鵬.智能無線電子解說系統的設計與實現[J].電子技術應用,2006(10).
[11] 孫天澤,袁文菊,張海峰.嵌入式設計及Linux驅動開發指南——基于ARM9處理器[M].北京:電子工業出版社,2006.
[12] O′REILLY.Linux device drivers third edition[M].2005,2.
[13] BLANCHETTE J,SUMMERFIELD M.C++ GUI programming with Qt 3[M].Prentice Hall Ptr,2004.
[14] 深圳市優龍科技有限公司.Qt嵌入式圖形開發(入門篇)[M].2004,6.
[15] 深圳市優龍科技有限公司.Qt嵌入式圖形開發(基礎篇)[M].2004,6.

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
久久久噜噜噜久久人人看| 男男成人高潮片免费网站| 亚洲第一在线综合网站| 亚洲欧美日韩在线| 亚洲午夜精品网| 中文在线一区| 亚洲色图综合久久| 亚洲特级片在线| 亚洲视频福利| 亚洲无亚洲人成网站77777| 99精品视频免费| 亚洲精品中文字| 亚洲精品一区二区三区99| 亚洲精品乱码久久久久久| 亚洲国产日韩综合一区| 亚洲国产视频直播| 亚洲剧情一区二区| 亚洲精品中文字| 一区二区欧美激情| 亚洲一区二区三区精品在线观看 | 欧美一级免费视频| 欧美有码在线观看视频| 欧美在线视频免费观看| 久久国产欧美| 久久视频国产精品免费视频在线| 久久久国产成人精品| 久久夜色精品国产噜噜av| 美女网站久久| 欧美精品一区二| 国产精品播放| 国产欧美日韩视频一区二区三区 | 在线精品福利| 亚洲免费成人av| 亚洲一区二区三区久久| 久久国产精品亚洲va麻豆| 亚洲欧洲一级| 亚洲一区在线观看视频 | 欧美视频在线免费| 国产精品主播| 在线精品亚洲一区二区| 妖精视频成人观看www| 午夜精品福利视频| 最新亚洲电影| 亚洲欧美日韩中文视频| 久久伊人免费视频| 欧美精品在线免费| 国产精品青草久久| 精品动漫一区二区| 亚洲乱码国产乱码精品精| 亚洲午夜羞羞片| 亚洲国产精品久久久久婷婷老年 | 亚洲一品av免费观看| 久久se精品一区精品二区| 你懂的一区二区| 国产精品免费观看在线| 影音先锋日韩有码| 在线一区二区三区四区| 久久精品日韩一区二区三区| 一区二区三区高清不卡| 久久九九全国免费精品观看| 欧美日韩国产精品专区| 国产一区二区精品丝袜| 日韩视频在线观看免费| 久久精品91| 亚洲欧美日产图| 欧美精品v日韩精品v国产精品| 国产精品一区二区三区四区五区| 亚洲国产精彩中文乱码av在线播放| 亚洲一区二区三区四区在线观看| 91久久久久久国产精品| 午夜日韩视频| 欧美精品乱码久久久久久按摩| 国产日产精品一区二区三区四区的观看方式 | 亚洲欧美视频在线观看视频| 欧美成人精品一区二区三区| 国产精品一区二区久久久| 亚洲黄色一区| 亚洲欧美日韩在线播放| 亚洲视频1区| 免费一区视频| 国产一区视频观看| 亚洲色无码播放| 亚洲免费观看| 蜜臀a∨国产成人精品| 国产麻豆午夜三级精品| 99这里只有久久精品视频| 亚洲精品欧美精品| 麻豆精品91| 国产在线拍偷自揄拍精品| 亚洲一区二区在线看| 这里只有精品视频| 欧美高清视频在线播放| 黄色一区二区三区| 香蕉久久a毛片| 亚洲免费一在线| 欧美日韩免费观看一区| 亚洲大胆美女视频| 亚洲高清毛片| 久久手机免费观看| 国产日韩欧美三区| 亚洲小说春色综合另类电影| 一区二区三区欧美视频| 欧美日韩99| 91久久夜色精品国产九色| 91久久在线观看| 欧美69视频| 亚洲电影第三页| 91久久极品少妇xxxxⅹ软件| 久久亚洲视频| 国产在线日韩| 久久精品视频在线观看| 久久一区二区三区四区| 国色天香一区二区| 久久精品国产亚洲aⅴ| 久久免费视频网站| 黄色精品一二区| 亚洲国产欧美日韩精品| 久久亚洲综合网| 一区精品久久| 亚洲精品日韩综合观看成人91| 欧美成人一区二区三区片免费| 亚洲国产精品电影在线观看| 亚洲欧洲综合另类| 欧美精品三级| 夜久久久久久| 午夜精品久久久| 国产视频精品网| 久久精品日韩欧美| 男人插女人欧美| 91久久在线观看| 国产精品99久久久久久人| 欧美午夜大胆人体| 亚洲影视九九影院在线观看| 欧美一区二区视频观看视频| 国产午夜精品久久久久久免费视| 欧美亚洲免费高清在线观看| 久久久久久久成人| 亚洲国产日韩美| 亚洲五月六月| 国产精品日韩久久久| 性久久久久久| 免费在线成人av| 99riav久久精品riav| 午夜久久久久久| 国产一区在线看| 亚洲精选在线| 国产精品超碰97尤物18| 亚洲欧美在线另类| 你懂的国产精品| av成人免费在线| 欧美一区二区三区久久精品茉莉花| 国产午夜精品久久久久久免费视| 亚洲高清在线精品| 欧美日韩 国产精品| 亚洲尤物视频在线| 免费日韩av电影| 亚洲午夜高清视频| 久久人人爽人人| 亚洲日本久久| 欧美自拍偷拍午夜视频| 亚洲黄色影院| 午夜视频一区在线观看| 黄色日韩网站| 亚洲女优在线| 一区在线电影| 亚洲综合欧美日韩| 雨宫琴音一区二区在线| 亚洲一区二区三区中文字幕在线| 国产欧美日本| 99精品热视频只有精品10| 国产精品一区在线观看你懂的| 亚洲黄色三级| 国产精品免费区二区三区观看| 91久久精品国产91久久性色tv | 亚洲一区二区三区免费观看 | 午夜精品久久久久久| 欧美国产日本在线| 亚洲欧美激情在线视频| 欧美大色视频| 亚洲女同性videos| 欧美日本国产精品| 久久精品91久久香蕉加勒比| 欧美少妇一区二区| 亚洲国产高潮在线观看| 国产精品久久久久久久9999| 亚洲二区视频在线| 国产精品视频免费一区| 亚洲美女区一区| 国产亚洲欧洲| 亚洲一区二区三区国产| 永久555www成人免费| 欧美亚洲一区在线| 日韩亚洲欧美在线观看| 久久亚洲图片| 午夜在线电影亚洲一区| 欧美日韩一区免费| 亚洲精品国产精品国自产在线| 国产日韩欧美一区| 亚洲在线一区| 亚洲人成网站精品片在线观看|