一種智能無線多媒體數(shù)字播放系統(tǒng)的設(shè)計(jì)方案
圖3中驅(qū)動(dòng)程序的struct file_operations( )只使用了系統(tǒng)提供的4個(gè)子函數(shù)接口:open( )、write( )、ioctl( )和release( )。其中open( )用于完成SPI設(shè)備的打開、初始化相關(guān)寄存器、準(zhǔn)備進(jìn)行設(shè)備I/O操作;write( )完成通過SPI接口進(jìn)行寫操作;ioctl( )是進(jìn)行讀寫以外的其他操作,通過對(duì)I/O口高低電平的改變實(shí)現(xiàn)不同功能;release( )用于關(guān)閉設(shè)備,釋放占用內(nèi)存[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),它決定時(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的2 bit位是傳輸字節(jié)中的最高2位,再根據(jù)圖5中 MOSI的MSB就應(yīng)該是傳輸字節(jié)的最高2位,為00,所以選擇方式為Format A高電平觸發(fā)。
在確定了它們之間的傳輸格式以及觸發(fā)方式后, SPI驅(qū)動(dòng)的實(shí)現(xiàn)就是對(duì)這些寄存器進(jìn)行正確的賦值。無線收發(fā)芯片CYWUSB6934通過SPI接口與ARM9主控芯片進(jìn)行通信,需要對(duì)各個(gè)寄存器進(jìn)行設(shè)置。根據(jù)系統(tǒng)要求,使用SPI1口實(shí)現(xiàn)SPI通信,其具體的編程實(shí)現(xiàn)如下:
評(píng)論