?? 5409的mcbsp配置成spi口的小結(jié).txt
字號(hào):
5409的McBSP配置成SPI口的小結(jié)(http://www.dspinfo.net/new_view.asp?id=1166)
終于把5409的McBSP的配置搞清楚了!現(xiàn)在就把我做的寫出來,也好讓后來人在這方面少走彎路。
我的目標(biāo)是將MCBSP配置成SPI兼容接口。 我采用MCBSP0。
下面我把我用匯編寫的McBSP的初始化程序給出來。已經(jīng)調(diào)試通過了,但是可能還有不對(duì)的地方,請(qǐng)大家看了以后指正!
.include "cpu_reg.inc"
.def McBsp0Init
McBsp0Init:
stm #spcr10,spsa0 ;接收復(fù)位
stm #0000h,spsd0
stm #spcr20,spsa0
stm #0000h,spsd0 ;發(fā)送復(fù)位
rpt #9
nop
STM #spcr10,spsa0
STM #1800h,spsd0 ;clkstp=11b
*---------------------------PCR0------------------------------------
stm #pcr0,spsa0
;CLKXP=0,CLKXM=1,FSXM=1,FSXP=1
;xx..............;RESERVED
;..0.............;XIOEN=0時(shí),DS,FSX,CLKX配置為串行接口
;...0............;RIOEN=0時(shí),DR,FSR,CLKR,CLKS配置為串行接口引腳
;....1...........;FSXM=1時(shí),采樣率發(fā)生器的幀同步模式位(SRGR2的FSGM位)決定幀同步信號(hào)
;.....0..........;FSRM=1,片內(nèi)采樣率發(fā)生器產(chǎn)生幀同步信號(hào),F(xiàn)SR為輸出引腳(除非SRGR的GSYNC=1)
;......1.........;在SPI模式下,CLKXM=1時(shí),McBSP為主設(shè)備,并產(chǎn)生時(shí)鐘(CLKX)
;去驅(qū)動(dòng)它的接收時(shí)鐘(CLKR)和系統(tǒng)的SPI從設(shè)備的SCLK時(shí)鐘
;.......1........;DLB=0時(shí),
;CLKRM=0,接收時(shí)鐘由外部時(shí)鐘驅(qū)動(dòng)
;CLKRM=1,接收時(shí)鐘由內(nèi)部采樣率發(fā)生器驅(qū)動(dòng)
;DLB=1時(shí),
;CLKRM=0,接收時(shí)鐘由發(fā)送時(shí)鐘驅(qū)動(dòng),CLKX的特性由PCR的CLKXM位
;設(shè)定。CLKR引腳為高阻態(tài)
;CLKRM=1,CLKR為由發(fā)送時(shí)鐘(CLKX)驅(qū)動(dòng)的輸出引腳。CLKX的特性由PCR的CLKXM位
;設(shè)定。
;........x.......;RESERVED,
;.........x......;CLKS引腳狀態(tài)位。當(dāng)CLKS被選作通用輸入時(shí),該位反映了CLKX引腳的值
;..........x.....;DX引腳狀態(tài)位
;...........x....;DR引腳狀態(tài)位
;............1...;幀同步脈沖FSX低電平有效
;.............0..;幀同步脈沖FSR低電平有效
;..............0.;發(fā)送時(shí)鐘極性,CLKXP=0時(shí),在CLKX的上升沿采樣發(fā)送數(shù)據(jù)
;...............0;接收時(shí)鐘極性,CLKRP=0時(shí),在CLKR的上升沿采樣發(fā)送數(shù)據(jù)
stm #0b08h,spsd0
*-------------------SRGR20-----------------------------------
stm #srgr20,spsa0
;0...............;GSYNC=0,采樣率發(fā)生寄存器時(shí)鐘(CLKG)自由運(yùn)行
;.0..............;CLKSP=0,在CLKS的上升沿產(chǎn)生CLKG和FSG
;..1.............;CLKSM=1,采樣率發(fā)生器時(shí)鐘由CPU時(shí)鐘驅(qū)動(dòng)
;...0............;FSGM=0,當(dāng)DXR復(fù)制到XSR而產(chǎn)生發(fā)送幀同步信號(hào)(FSX)
;FSGM=0時(shí),F(xiàn)PER和FWID均被忽略
;....xxxxxxxxxxxx;FPER,幀周期
stm #2000h,spsd0 ;clksm=1,fsgm=0
*--------------------SRGR10----------------------------------
stm #srgr10,spsa0
;DSP時(shí)鐘為60MHz,MBF200為12MHz
;xxxxxxxx........;FWID,幀寬度
;........00110000;CLKDV=48,采樣率發(fā)生時(shí)鐘除法器
stm #0030h,spsd0
;clkgdv=30h,SPI的時(shí)鐘=DSP時(shí)鐘/48
;=1MHz
nop
nop
*----------------------RCR10----------------------------------
stm #rcr10,spsa0
;x...............;RESERVED
;.0000000........;RFLEN1=0000000,每幀1字
;........100.....;RWDLEN1=100,每字24bit
;...........xxxxx;RESERVED
stm #0080h,spsd0
*---------------------RCR20------------------------------------
stm #rcr20,spsa0
;0...............;RPHASE=0,單相幀
;.0000000........;RFLEN2=0000000,每幀1字
;........100.....;RWDLEN2=100,每個(gè)字24bit
;...........00...;RCOMPAND=00,無擴(kuò)展,數(shù)據(jù)傳送從最高位(msb)開始
;.............0..;RFIG=0,第一個(gè)后的接收幀同步脈沖重新啟動(dòng)數(shù)據(jù)傳送
;..............01;RDATDLY=01,延遲一位數(shù)據(jù)
stm #0081h,spsd0 ;rdatdly=01
*-------------------------XCR10----------------------------------
stm #xcr10,spsa0 ;發(fā)送
;x...............;reserved
;.0000000........;XFRLEN1=0000000,每幀1字
;........100.....;XWDLEN1=100,每字24bit
;...........XXXXX;RESERVED
stm #0080h,spsd0 ;
*-------------------------XCR20----------------------------------
stm #xcr20,spsa0 ;發(fā)送
;0...............;XPHASE=0,單相幀
;.0000000........;XFLEN2=0000000,每幀1字
;........100.....;XWDLEN2=100,每字24bit
;...........00...;XCOMPAND=00,無擴(kuò)展,數(shù)據(jù)傳輸從最高位(MSB)開始
;.............0..;SFIG=0,第一個(gè)后的發(fā)送幀同步脈沖重新啟動(dòng)數(shù)據(jù)傳送
;..............01;XDATDLY=01,延遲一位數(shù)據(jù)
stm #0081h,spsd0
*-----------------------SPCR20----------------------------------------
STM #spcr20,spsa0
STM #0040h,spsd0 ;grst=1
rpt #9
nop ;等待
*---------------------------SPCR10---------------------------------------
stm #spcr10,spsa0 ;RINTM=10
;0...............;DLB=0,禁止循環(huán)返回
;.00.............;RJUST=00,DRR靠右對(duì)齊,高位補(bǔ)0
;...11...........;CLSTP=11,時(shí)鐘停止模式,有延時(shí)
;.....xxx........;RESERVED
;........0.......;DXENA=0,DX使能關(guān)
;.........0......;ABIS=0,禁止ABIS模式
;..........10....;RINTM=10,接收中斷RINT由一個(gè)新的幀同步信號(hào)產(chǎn)生
;............0...;RSYNCERR=0,無接收同步錯(cuò)誤
;.............0..;RFULL=0,RBR沒有出現(xiàn)上溢
;..............0.;RRDY=0,接收器沒有準(zhǔn)備好
;...............1;RRST=1,打開串口接收
stm #9821h, spsd0
rpt #9
nop
*----------------------------SPCR20----------------------------------
stm #spcr20,spsa0
;xxxxxx..........;RESERVED
;......0.........;FREE=1,時(shí)鐘自由運(yùn)行
;.......0........;SOFT=0,禁止SOFT模式
;........0.......;FRST=0,幀同步邏輯電路復(fù)位。采樣率發(fā)生器不會(huì)產(chǎn)生幀同步信號(hào)FSG
;.........1......;GRST=1,采樣率發(fā)生器從復(fù)位中退出。CLKG按照采樣率發(fā)生寄存器
;(SRGR)中的編程值產(chǎn)生時(shí)鐘信號(hào)
;..........10....;XINTM=10,發(fā)送中斷XINT由一個(gè)新的幀同步信號(hào)產(chǎn)生
;............0...;XSYNCERR=0,無發(fā)送幀幀同步錯(cuò)誤
;.............0..;XEMPTY=0,XSR為空
;..............0.;XRDY=0,發(fā)送器未準(zhǔn)備好
;...............1;XRST=1,打開串口發(fā)送
stm #0061h,spsd0
rpt #9
nop
stm #spcr20,spsa0 ;FRST=1
orm #0080h,spsd0
rpt #6
nop
ret
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -