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