新聞中心

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ò) 收藏

(5)SPTDAT和SPRDAT寄存器:發(fā)射和接收數(shù)據(jù)寄存器。

在Linux系統(tǒng)啟動(dòng)時(shí),要對(duì)以上寄存器進(jìn)行賦值,就必須通過(guò)SPI驅(qū)動(dòng)程序。而驅(qū)動(dòng)程序就是作為系統(tǒng)和外部設(shè)備的一個(gè)橋梁,在這里只有將SPI通道正確打開(kāi),系統(tǒng)才能夠通過(guò)這個(gè)橋梁對(duì)外部無(wú)線芯片的基本工作寄存器進(jìn)行操作,完成數(shù)據(jù)的收發(fā)。

Linux中的I/O子系統(tǒng)向內(nèi)核中的其他部分提供了一個(gè)統(tǒng)一的標(biāo)準(zhǔn)設(shè)備接口,這是通過(guò)include/linux/fs.h中的數(shù)據(jù)結(jié)構(gòu)file_operations完成的[11]。圖3所示為本系統(tǒng)中SPI驅(qū)動(dòng)設(shè)備描述符函數(shù)組成框圖。

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

圖3中驅(qū)動(dòng)程序的struct file_operations( )只使用了系統(tǒng)提供的4個(gè)子函數(shù)接口:open( )、write( )、ioctl( )和release( )。其中open( )用于完成SPI設(shè)備的打開(kāi)、初始化相關(guān)寄存器、準(zhǔn)備進(jìn)行設(shè)備I/O操作;write( )完成通過(guò)SPI接口進(jìn)行寫操作;ioctl( )是進(jìn)行讀寫以外的其他操作,通過(guò)對(duì)I/O口高低電平的改變實(shí)現(xiàn)不同功能;release( )用于關(guān)閉設(shè)備,釋放占用內(nèi)存[12]。

S3C2440A SPI的傳輸形式是由SPI控制寄存器SPCON中的1bit位和2bit位的值共同決定的。1bit位是CPHA(Clock Phrase Select),它用來(lái)選擇傳輸格式為Format A或Format B,置0為Format A,置1為Format B;2bit位是CPOL(Clock Polarity),它決定時(shí)鐘信號(hào)是高電平觸發(fā)還是低電平觸發(fā),置0為active high,置1為active low。由圖3可以看出,CYWUSB6934的SPI單字節(jié)讀出時(shí)鐘是高電平觸發(fā)的,又如虛線箭頭處時(shí)鐘信號(hào)的上升沿正與圖4中SPI時(shí)鐘相吻合,而在圖4中cmd的2bit位是傳輸字節(jié)中的最高2位,再根據(jù)圖5中MOSI的MSB就應(yīng)該是傳輸字節(jié)的最高2位,為00,所以選擇方式為Format A高電平觸發(fā)。

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

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



評(píng)論


相關(guān)推薦

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

關(guān)閉