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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 智能無(wú)線多媒體數(shù)字播放系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

          智能無(wú)線多媒體數(shù)字播放系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

          作者: 時(shí)間:2012-04-14 來(lái)源:網(wǎng)絡(luò) 收藏

          嵌入式操作系統(tǒng)構(gòu)成如下:(1)Bootloader使用三星公司專為其產(chǎn)品開發(fā)的啟動(dòng)代碼VIVI;(2)內(nèi)核采用Linux2.6.13版[3];(3)文件系統(tǒng)選擇與NAND Flash兼容較好的YAFFS文件系統(tǒng)[4-6];(4)圖形用戶界面采用QTOPIA1.7[7]。

          2.2 ARM9嵌入式微處理器S3C2440A

          S3C2440A是三星公司基于ARM920T設(shè)計(jì)的一款處理器,主頻400MHz;擴(kuò)展總線最大頻率100MHz;32bit數(shù)據(jù),27bit外部數(shù)據(jù)線;完全靜態(tài)設(shè)計(jì)(0~400MHz);存儲(chǔ)控制器(8個(gè)存儲(chǔ)體),4個(gè)帶有PWM的16bit定時(shí)器;多達(dá)55個(gè)中斷源的中斷控制器;RTC;3個(gè)UART,支持IrDA 1.0;4個(gè)DMA通道支持外設(shè)DMA;8通道,500kS/s,10bit ADC;支持STN與TFT LCD控制器;看門狗;I2S音頻接口;2個(gè)USB接口;I2C-Bus接口;2個(gè)串行外圍接口電路(SPI);SD卡接口。選擇ARM9芯片可以利用Linux操作系統(tǒng)來(lái)減少軟件開發(fā)時(shí)間,而且S3C2440A對(duì)主流多媒體支持較好,很適合用于開發(fā)智能多媒體系統(tǒng)。

          2.3 CYWUSB6934無(wú)線收發(fā)模塊

          無(wú)線收發(fā)模塊選用Cypress公司的CYWUSB6934。該芯片既可用作發(fā)射,也可用作接收,工作在2.4GHz ISM 頻段,頻率范圍為2.4GHz~2.483GHz。具有低功耗、低輻射的特點(diǎn)(輻射功率最大為0dBm),且發(fā)射功率可調(diào)(共7個(gè)等級(jí));無(wú)線接收靈敏度高,可達(dá)-90dBm;通信半徑可達(dá)10m(當(dāng)輸出最大功率且無(wú)障礙物阻擋時(shí)的直線通信距離可達(dá)15m左右)。由于其近距離、低功耗等特點(diǎn),非常適用于短距離無(wú)線傳輸。

          2.4 地址碼

          地址碼是以單片機(jī)為核心構(gòu)成的控制系統(tǒng),主要包括電源模塊、無(wú)線發(fā)射模塊和發(fā)射功率調(diào)整撥動(dòng)開關(guān),單片機(jī)與無(wú)線發(fā)射模塊的接口為SPI口。

          2.5 手持智能終端

          每個(gè)景點(diǎn)/展臺(tái)的音視頻內(nèi)容都以特定格式存儲(chǔ)在SD存儲(chǔ)卡中,每一個(gè)文件以規(guī)定方式命名,且對(duì)應(yīng)于一個(gè)地址碼。

          手持智能終端開機(jī)完成硬件初始化、Linux操作系統(tǒng)的啟動(dòng)、文件系統(tǒng)的掛載和圖形用戶界面的啟動(dòng)后,由用戶點(diǎn)擊圖形桌面上的智能點(diǎn)播系統(tǒng)程序圖標(biāo)運(yùn)行點(diǎn)播程序。系統(tǒng)查詢到這個(gè)信息后,立即讀取CYWUSB6934的數(shù)據(jù)寄存器以獲得地址碼。系統(tǒng)會(huì)將接收到的地址碼與前一數(shù)據(jù)進(jìn)行對(duì)比,若相同則繼續(xù)播放,若不同則自動(dòng)切換到對(duì)應(yīng)該地址碼的文件進(jìn)行播放。

          3 智能無(wú)線點(diǎn)播的實(shí)現(xiàn)

          微處理器S3C2440A和無(wú)線芯片CYWUSB6934之間通過(guò)SPI接口進(jìn)行通信,在Linux系統(tǒng)中兩者之間的通信就必須通過(guò)SPI驅(qū)動(dòng)程序來(lái)實(shí)現(xiàn)。而智能點(diǎn)播則是在用戶啟動(dòng)Linux系統(tǒng)中的點(diǎn)播程序時(shí),系統(tǒng)識(shí)別接收到的數(shù)據(jù)后,自動(dòng)調(diào)用音視頻文件進(jìn)行播放。

          3.1 SPI驅(qū)動(dòng)

          在Linux操作系統(tǒng)中,所有外圍設(shè)備的控制都是通過(guò)驅(qū)動(dòng)程序?qū)崿F(xiàn)的,設(shè)備驅(qū)動(dòng)程序是操作系統(tǒng)內(nèi)核與機(jī)器硬件之間的接口。

          SPI,是英語(yǔ)Serial Peripheral interface的縮寫,顧名思義就是串行外圍設(shè)備接口。是Motorola首先在其MC68HCXX系列處理器上定義的。SPI接口主要應(yīng)用在EEPROM,F(xiàn)LASH,實(shí)時(shí)時(shí)鐘,AD轉(zhuǎn)換器,還有數(shù)字信號(hào)處理器和數(shù)字信號(hào)解碼器之間。SPI,是一種高速的,全雙工,同步的通信總線,并且在芯片的管腳上只占用四根線,節(jié)約了芯片的管腳,同時(shí)為PCB的布局上節(jié)省空間,提供方便,正是出于這種簡(jiǎn)單易用的特性,現(xiàn)在越來(lái)越多的芯片集成了這種通信協(xié)議。手持智能終端需要通過(guò)SPI接口控制無(wú)線收發(fā)芯片,這就需使用SPI接口驅(qū)動(dòng)程序來(lái)建立無(wú)線收發(fā)芯片與內(nèi)核之間的通信橋梁。SPI接口以主從方式進(jìn)行工作,其接口包括4種信號(hào):(1)MOSI:主器件數(shù)據(jù)輸出,從器件數(shù)據(jù)輸入;(2)MISO:主器件數(shù)據(jù)輸入,從器件數(shù)據(jù)輸出;(3)SCLK:時(shí)鐘信號(hào),由主器件產(chǎn)生;(4)/SS:從器件使能信號(hào),由主器件控制。

          圖2為S3C2440A與CYWUSB6934之間SPI接口的連接圖。圖中nSS控制CYWUSB6934作為從器件,SPIMOSI和SPIMISO是它們之間的數(shù)據(jù)傳輸通道,SPICLK為時(shí)鐘信號(hào)。當(dāng)SPI作為主控制器時(shí),由SPPRE寄存器中相應(yīng)的比特位控制。而當(dāng)SPI為從設(shè)備時(shí),時(shí)鐘信號(hào)則是由其他設(shè)備提供。某些情況下,在將數(shù)據(jù)寫入SPTDAT寄存器之前,nSS應(yīng)該被置為高電平。在本系統(tǒng)中主要用到的S3C2440A內(nèi)部與SPI相關(guān)的寄存器如下:

          智能無(wú)線多媒體數(shù)字播放系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

          (1)SPCON寄存器:主要用于設(shè)置時(shí)鐘開啟、SPI傳輸格式、SPI傳輸模式。其中傳輸模式有3種,分別是polling模式、DMA模式、中斷模式。

          (2)SPSTA寄存器:SPI接口的狀態(tài)寄存器,用于指示數(shù)據(jù)接收或發(fā)送是否已經(jīng)完成。

          (3)SPPIN寄存器:用于檢測(cè)是否有多個(gè)主機(jī)。

          (4)SPPRE寄存器:用于設(shè)置SPI傳輸時(shí)鐘頻率。其值通過(guò)如下計(jì)算式確定:

          Baud rate=PCLK/2/(Prescaler value+1)

          其中Prescaler value的初始值為0x00。



          評(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); })();