基于單片機的電子導游MP3設(shè)計
NAND FLASH存儲器操作模塊實現(xiàn)存儲器的物理檢查、存儲器鏈表建立和映射、存儲器讀寫訪問等。
時鐘系統(tǒng)初始化模塊
MSP430單片機是多時鐘芯片,在降低系統(tǒng)功耗的同時,為了充分發(fā)揮其性能,需要對系統(tǒng)時鐘進行編程。
系統(tǒng)將XT2外接8MHz晶振,獲得8MHz的主系統(tǒng)時鐘MCLK。而子系統(tǒng)時鐘SMCLK為DCO振蕩器產(chǎn)生的頻率為800KHz的信號。時鐘調(diào)整程序為:
BIS.W #OSCOFF,SR ;關(guān)閉LFXT1振蕩器
BIC.B #XT2OFF,BCSCTL1 ;啟動XT2振蕩器
SETUPOSC:
BIC.B #OFIFG,IFG1 ;清除振蕩器失效中斷
MOV.W #0FFh,R15
SetupOsc1:
DEC.W R15 ;計算等待時間至"0"
JNZ SetupOsc1 ;等待循環(huán)
BIT.B #OFIFG,IFG ;測試振蕩器失效中斷標志
JNZ SETUPOSC ;重復測試,直至標志始終復位
BIC.B #OFIFG,IFG1 ;清除振蕩器失效中斷
BIS.B #80H,BCSCTL2;選擇SMCLK時鐘源
模擬I2C總線模塊
MSP430F133沒提供I2C的硬件電路,因此需要用IO口線模擬。用于通過I2C來控制MAS3507D和DAC3550A。模擬I2C時序的程序包括啟動模塊、停止模塊、發(fā)送一個字節(jié)模塊、接收一個字節(jié)模塊、主應答模塊(MACK)、主非應答模塊(MNACK)、從應答模塊(CACK)等。
在程序設(shè)計中,充分利用了MSP430F133 I/O端口的特性,減少相關(guān)寄存器的操作次數(shù),簡化接口控制,縮小代碼量。下列程序段是模擬I2C總線的啟動功能。要求置時鐘線為高,數(shù)據(jù)線為下降沿觸發(fā)。
BIC.B #SCL+SDA,PORT_DIR
BIS.B #SDA,PORT_DIR ;SDA為輸出
BIS.B #SCL,PORT_DIR ;SCL為輸出
RET
位流傳輸模塊
當解碼芯片的請求信號有效時,單片機要從外掛的FLASH中讀取存放的數(shù)據(jù),發(fā)送給解碼芯片。數(shù)據(jù)是按逐位傳輸?shù)?,先傳輸高位,后傳輸?shù)臀?,在SIC時鐘下降沿鎖存位數(shù)據(jù)到解碼芯片。
DATA_TO_MAS: BIT.B #REQ,P1DIR
JZ DATA_TO_MAS
;REQ為0表示MAS不需要數(shù)據(jù)
CALL #BYTE_READ
;從FLASH讀一個字節(jié)到RAM
MOV.B #8,R4 ;用R4計數(shù)
TRANSFER: RLA.B READ_BYTE_A
JC BIT_1
BIT_0: BIC.B #SID,P5OUT
JMP LOCK_BIT
BIT_1: BIS.B #SID,P5OUT
LOCK_BIT: BIS.B #SIC,P5OUT
BIC.B #SIC,P5OUT
DEC.B R4
JNZ TRANSFER
結(jié)束語
本文設(shè)計的電子導游以TI公司的MSP430F133為主控制芯片,使用Micronas公司的解碼芯片MAS3507D以及配套的D/A轉(zhuǎn)換芯片。本系統(tǒng)不僅具備了MP3播放器的全部功能,而且可作為便攜式存儲器,用于存儲文件、相片等。其特定的設(shè)計功能不僅可用于電子導游,還可用于公交報站、博物館、展覽館、無人值守交通路口的語音提示等。
參考文獻:
[1]. MSP430F133 datasheet http://www.dzsc.com/datasheet/MSP430F133_307447.html.
[2]. MSP430 datasheet http://www.dzsc.com/datasheet/MSP430_490166.html.
[3]. RISC datasheet http://www.dzsc.com/datasheet/RISC_1189725.html.
[4]. MAS3507D datasheet http://www.dzsc.com/datasheet/MAS3507D_470629.html.
[5]. DAC3550A datasheet http://www.dzsc.com/datasheet/DAC3550A_253258.html.
評論