freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

應(yīng)用電子技術(shù)專業(yè)畢業(yè)論文-基于stc12c5a60s2與vs1003音頻播放器的研究-預(yù)覽頁

2025-02-11 17:00 上一頁面

下一頁面
 

【正文】 30歐負載的耳機驅(qū)動器。GPIO3/SDATA10DIO通用I/O3/串行數(shù)據(jù)總線數(shù)據(jù),接100K下拉電阻。重要寄存器的定義、類型、參數(shù)、功能,詳見表22。bit0:SM_DIFF 微分。bit2:SM_RESET。SM_OUTOFWAV=1,停止WAV解碼。bit5:SM_TESTS。bit7:SM_PLUSV。bit9:SM_SDIORD。bit11:SM_SDINEW。)bit12:SM_ADPCM。SM_ADPCOM_HP=1,使能ADPCM高通濾波器。 SCI_BASS(地址0X2,RW,可讀寫)重音/高音設(shè)置寄存器。例如SCI_BASS=0x00f6,即對60Hz以下的音頻信號進行15dB的增強。bit15~bit13:SC_MULT時鐘輸入XTALI的倍頻設(shè)置,設(shè)置之后將啟動VS1003內(nèi)置的倍頻器。當(dāng)進行正確的解碼時,該寄存器的值為當(dāng)前的采樣率(bit:15~bit1)和所使用的聲道(bit0)。音量控制寄存器。例如:左聲道:173。(設(shè)置靜音(SCI_COL=0XFFFF)將關(guān)閉模擬 部分的供電。在音頻流解碼系統(tǒng)中,要以VS1003為從機數(shù)據(jù)應(yīng)答模塊得到順暢的模擬音頻流,必須依據(jù)VS1003關(guān)于SPI協(xié)議下其自身特定的SPI工作原理對STC12C5A60S2進行編程控制才能實現(xiàn)。由于SPI協(xié)議本身是全雙工的同步通信方式,因此對于SCI傳輸過程,VS1003定義了讀、寫2套命令操作機制。畢竟無論是SCI傳輸還是SDI傳輸,VS1003在整個系統(tǒng)的SPI傳輸中都是完全被動地接收數(shù)據(jù)的,而VS1003本身還承擔(dān)著實時處理音頻數(shù)據(jù)的責(zé)任,如果VS1003的處理時序與主機的傳輸時序發(fā)生了沖突,那么VS1003被動接收的數(shù)據(jù)將變得無效,進而使整個系統(tǒng)數(shù)據(jù)傳輸失效;如果VS1003在被動接收數(shù)據(jù)的前提下能夠根據(jù)自身的數(shù)據(jù)處理時序發(fā)出數(shù)據(jù)請求標識,表明在某一段時間內(nèi)數(shù)據(jù)傳輸可以進行,在另一段時間內(nèi)數(shù)據(jù)傳輸需要稍微暫停一下,那么整個SPI數(shù)據(jù)傳輸就會與音頻信號處理時序協(xié)調(diào)起來,實現(xiàn)流暢的音頻數(shù)據(jù)傳輸和處理。具體操作通常由8 bit的指令字節(jié)來確定。SCI讀數(shù)據(jù)過程如圖22所示。因此,首先STC12C5A60S2的XCS線上信號需要拉低以選擇芯片,這是SPI協(xié)議的一個關(guān)鍵。剛才所傳輸?shù)刂房臻g中包含的16bit固定參數(shù)將會緊跟著在SO管腳上返回給STC12C5A60S2,用于監(jiān)視通信。圖23 SCI寫數(shù)據(jù)它與SCI讀數(shù)據(jù)類似,也是先將XCS線拉低以選擇芯片。在整個數(shù)據(jù)傳輸過程中,SCI傳輸與SDI傳輸之間是緊密跟進的,因此在編寫代碼時必須非常注意真正的時序,尤其是注意DREQ信號的高低狀態(tài)和XCS線的高低選擇。2個SDI傳輸之間的SCI傳輸過程(見圖26),只要有SCI傳輸,在傳輸完成之后就一定存在一個DREQ低電平返回,DREQ與SCI傳輸是匹配的。圖27 VS1003設(shè)計圖第3章 存儲模塊 SD儲存卡簡介SD儲存卡(Secure Digital Memory Card)中文翻譯為安全數(shù)碼卡,是一種基于半導(dǎo)體快閃記憶器的新一代記憶設(shè)備,它被廣泛地于便攜式裝置上使用,例如數(shù)碼相機、個人數(shù)碼助理(PDA)和多媒體播放器等。而且它是一體化固體介質(zhì),沒有任何移動部分,所以不用擔(dān)心機械運動的損壞。在這些領(lǐng)導(dǎo)廠商的推動下,SD儲存卡已成為目前消費數(shù)碼設(shè)備中應(yīng)用最廣泛的一種存儲卡。目前SD儲存卡在數(shù)碼相機中正在迅速普及,大有成為主流之勢。 SD儲存卡硬件設(shè)計SD儲存卡可以設(shè)計出便宜的播放器和驅(qū)動器而沒有可移動的部分。SD存儲卡上的所有單元有內(nèi)部時鐘發(fā)生器提供時鐘。SD儲存卡的接口可以支持兩種操作模式:SD儲存卡模式和SPI模式。當(dāng)默認的上電后,SD儲存卡使用DAT0。SD總線上通信的命令和數(shù)據(jù)比特流從一個起始位開始,以停止位中止。CMD:命令從該CMD線上串行傳輸。一個命令是對之前命令的回答。SPI兼容模式使得MMC主機系統(tǒng)通過很小的改動就可以使用SD儲存卡。Byte6:前7位為CRC(Cyclic Redundacy Check,循環(huán)冗余校驗)校驗位,最后一位為停止位0。 CMD10:讀CID寄存器。 CMD17:讀單塊。 CMD27:寫CSD寄存器。Class6:寫保護命令集 CMD28:設(shè)置寫保護塊的地址。Class8:申請?zhí)囟罴?。SD儲存卡的初始化是非常重要的,只有進行了正確的初始化,才能進入SPI模式。在很多讀者的實驗中,很多是因為疏忽了這一點,而使初始化不成功。首先把片選CS拉低,發(fā)送CMD1信號;插入一定量的時鐘信號,等待SD在SPI模式下的復(fù)位;如果收到00h的信號表明初始化成功,如果收到的信號始終是FFh,則表明初始化失敗,需要重新初始化操作;拉高片選CS,并且發(fā)送8位時鐘信號,完成整個初始化操作。表32 CID寄存器結(jié)構(gòu)名稱域數(shù)據(jù)寬度CID劃分生產(chǎn)標識號MID8[127:120]OEM/應(yīng)用標識OID16[119:104]產(chǎn)品名稱PNM40[103:64]產(chǎn)品版本PRV8[63:56]產(chǎn)品序列號PSN32[55:24]保留-4[23:20]生產(chǎn)日期MDT12[19:8]CRC7校驗合CRC7[7:1]未使用,始終為1-1[0:0]圖33讀取CID時序CSD(CardSpecific Data)寄存器提供了讀寫SD儲存卡的一些信息。SD儲存卡的每一個扇區(qū)中有512個字節(jié),一次扇區(qū)讀操作將把某一個扇區(qū)內(nèi)的512個字節(jié)全部讀出。首先把CS拉低,發(fā)送CMD17,插入一定量的時鐘信號,等待命令發(fā)送成功,當(dāng)收到00h信號后表明命令發(fā)送成功,如果始終收到的是FFh則表明發(fā)送命令失敗,需要重復(fù)發(fā)送,插入一定量的時鐘信號,等待讀取扇區(qū)數(shù)據(jù)。圖35 讀扇區(qū)的時序?qū)懮葏^(qū)是SD儲存卡驅(qū)動的另一目的。第二是向SD儲存卡寫入512字節(jié)的數(shù)據(jù),同讀扇區(qū)命令相同,寫入的字節(jié)數(shù)也可由CMD16設(shè)定,默認是512字節(jié)。圖36 寫扇區(qū)的時序第4章 FAT32在單片機上的實現(xiàn) FAT32文件系統(tǒng)概述文件系統(tǒng)在操作系統(tǒng)中體現(xiàn)文件命名、存貯和組織的整體結(jié)構(gòu),由文件、目錄和對這些項目定位及存取所需的信息組成。引導(dǎo)區(qū)和文件分配表區(qū)又合稱為系統(tǒng)區(qū)。(3) 文件分配表區(qū)共保存了兩個相同的文件分配表,因為文件所占用的存儲空間(簇鏈)及空閑空間的管理都是通過FAT實現(xiàn)的,F(xiàn)AT如此重要,保存兩個以便第一個損壞時,還有第二個可用。顯然,對于容量大于512MB的邏輯盤,采用FAT32的簇比采用FAT16的簇小很多,大大減少了空間的浪費。(6) 目錄區(qū)中的目錄項變化較多,一個目錄項仍占32字節(jié),可以是文件目錄項、子目錄項、卷標項(僅跟目錄有)、已刪除目錄項、長文件名目錄項等。1213字節(jié) 僅長文件名目錄項用,用來存儲其對應(yīng)的短文件名目錄項的文件名字節(jié)校驗和等。2021字節(jié) 起始簇號的高16位。12831字節(jié) 32位的文件字節(jié)長度。 FAT32文件系統(tǒng)在單片機上的軟件設(shè)計FAT32文件系統(tǒng)您一定不會陌生,最多看到它是在windows操作系統(tǒng)里,但在一些嵌入式產(chǎn)品(如手機、MPMP4等)中,也能看到它的身影。 主引導(dǎo)扇區(qū)的數(shù)據(jù)結(jié)構(gòu)雖然本次設(shè)計中用的SD儲存卡基本只有一個分區(qū),但是在文件系統(tǒng)初始化的開始我們必須通過MBR獲得分區(qū)表項的數(shù)據(jù),以獲得CHS、LBA參數(shù)以及分區(qū)大小扇區(qū)數(shù),否則就無法知道SD儲存卡中的文件系統(tǒng)的起始物理扇區(qū)號!在單片機定義程序如下:struct PartRecord //結(jié)構(gòu)體:分區(qū)表項{unsigned char Active。 //分區(qū)類型unsigned char EndHead。 //分區(qū)的大小}。unsigned char BootSectSig1。 //文件系統(tǒng)標志與版本號unsigned char BPB_BytesPerSec[2]。 //此卷中FAT表數(shù)unsigned char BPB_RootEntCnt[2]。 //FAT32為0unsigned char BPB_SecPerTrk[2]。 //該卷總扇區(qū)數(shù)unsigned char BPB_FATSz32[4]。 //根目錄簇號unsigned char FSInfo[2]。 //設(shè)備號unsigned char BS_Reserved1[1]。 //卷標(ASCII碼)unsigned char BS_FilSysType1[8]。在單片機定義程序如下:struct direntry //結(jié)構(gòu)體:短文件名目錄項{unsigned char deName[8]。)unsigned char deExtension[3]。 //文件創(chuàng)建的時間(十分之一秒)unsigned char deCTime[2]。 //文件起始簇號的高兩位字節(jié)unsigned char deMTime[2]。 //文件內(nèi)容大小字節(jié)數(shù)}。 //最后訪問的文件的簇unsigned long FileCurCluster。 //最后訪問的文件的屬性unsigned short FileCreateTime。 //最后的文件修改日期unsigned long FileSector。下面是所需重要參數(shù)的數(shù)據(jù)結(jié)構(gòu)定義:struct FAT32_Init_Arg //FAT32初始化時初始參數(shù)裝入如下結(jié) 構(gòu)體中{unsigned char BPB_Sector_No。 //文件數(shù)據(jù)開始扇區(qū)號unsigned int BytesPerSector。 //第一個FAT表所在扇區(qū)unsigned long FirstDirSector。 FAT32運用函數(shù)上面主要介紹FAT32文件系統(tǒng)中的各種數(shù)據(jù)格式,從中基本了解了文件系統(tǒng)的構(gòu)成,在對文件系統(tǒng)進行操作時需要對應(yīng)的的程序?qū)ι鲜龅臄?shù)據(jù)結(jié)構(gòu)體進行操作,下面對各個程序進行介紹。amp。unsigned long lb2bb(unsigned char *dat,unsigned char len)//小端轉(zhuǎn)為大端{unsigned long temp=0。ilen。} 尋找BPB所在扇區(qū)SD存儲卡中BPB不一定存放在0扇區(qū),有時候我們需要通過MBR來找到BPB在那個扇區(qū)。if(FAT32_Buffer[0]!=0xeb)return lb2bb(((((structPartSector *)(FAT32_Buffer))Part[0]).StartLBA),4)。void FAT32_Init(struct FAT32_Init_Arg *arg){struct FAT32_BPB *bpb。//FAT32_Get_Total_Size()可以返回磁盤的總?cè)萘浚瑔挝皇钦譨rgFATsectors=lb2bb((bpbBPB_FATSz32),4)。//裝入每簇扇區(qū)數(shù)到SectorsPerClust中argFirstFATSector=lb2bb((bpbBPB_RsvdSecCnt),2)+argBPB_Sector_No。//裝入第一個目錄扇區(qū)到FirstDirSector中argFirstDataSector=(argFirstDirSector)+(argRootDirSectors)。 return buf。MP3音頻數(shù)據(jù)大致流向是SD到單片機緩存區(qū)在到VS1003中,下面按照數(shù)據(jù)傳輸順序依次介紹所需函數(shù)。寫一個字節(jié)數(shù)據(jù)到SD存儲卡:void Write_Byte_MMC(unsigned char value){unsigned char i。0x01)==0x01) //對數(shù)據(jù)進行低位寫入SPI_DI=1。SPI_SCL=1。寫命令就是將需要被寫入的6字節(jié)命令發(fā)送給SD存儲卡,上面完成了一個字節(jié)的寫入,在下面寫命令函數(shù)中調(diào)用6次寫字節(jié)函數(shù)就完成了SD存儲卡的命令寫入。SPI_CS=1。i0x06。 //SD存儲卡應(yīng)答 retry++。 //如果為0XFF重新寫return(tmp)。SD存儲卡上電延時74個時鐘周期后,在CS片選線為低電平的條件下,單片機向SD存儲卡發(fā)送復(fù)位命令CMD0,就可以SD存儲卡進入SPI接口模式下的ldle狀態(tài)。 unsigned char i。 Init_Flag=1。 //發(fā)送至少74個時鐘信號 }//向SD存儲卡發(fā)送CMD0 retry=0。 } } while(temp!=1)。 Do //為了能成功寫CMD1,寫100次 { temp=Write_Command_MMC(CMD)。 //應(yīng)答0停止寫入 Init_Flag=0。發(fā)送帶地址的讀命令,若SD存儲卡接收正確則有應(yīng)答00H,然后會送出所讀扇區(qū)的512字節(jié)數(shù)據(jù),圖52是讀單塊數(shù)據(jù)流程圖。EA=0。CMD[2] = ((sector amp。retry=0。}}while(temp!=0)。下面為從SD存儲卡接收一字節(jié)函數(shù):unsigned char Read_Byte_MMC() //讀8位數(shù)據(jù){unsigned char temp=0。i++){SPI_DO=1。}return (temp)。for (j=0。j++){*buffer++ = Read_Byte_MMC()。readPos=0。}}為了單片機能依據(jù)FAT32文件系統(tǒng)進行數(shù)據(jù)的讀寫所以在SD存儲卡函數(shù)設(shè)計中定義一個函數(shù)用
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1