📄 init_54x.asm
字号:
***********************************************************************
* MODULE NAME: init_54x.asm *
* *
.mmregs
.include "init_54x.inc" ;包含VC5402初始化的各个寄存器
.include "mcbsp54x.inc" ;多通道缓冲串行口的各个寄存器
.global _McBSP_init
.def _init_54
K_IPTR_init .set 0080h
.text
***************初始化系统***************************
_init_54:
NOP
LD #0, DP ;复位数据页指针
****************使所有的中断无效******************************
SSBX INTM ;屏蔽全局中断
STM #0x0000,IMR ;屏蔽所有的中断
STM #0x0FFFF,IFR ;清除中断标志寄存器
****************时钟方案选择**********************************
STM #0, CLKMD ;DSP系统时钟的软件设置
STM #0, CLKMD
STM #0x9007,CLKMD ;设置VC5402 DSP时钟到5MHz
****************配置C5402系统寄存器*******************************
STM #0x7492,SWWSR ;I/O等待2个时钟,数据和程序空间无等待
STM #0x0000,BSCR ;为块切换等待0个时钟
STM #0x1800,ST0
STM #0x2900,ST1
STM #0x0FFE0,PMST ;0x0FFA0
****************改变中断向量表位置*****************************
LDM PMST, A
AND #7FH, A
OR #K_IPTR_init, A
STLM A, PMST
RETD
NOP
NOP
****************多通道缓冲串行通信端口初始化*************************************
*(1) 设置SPRCR[1,2]中的XRST=RRST=FRST=0,如果马上离开复位状态这一步不需要。**
*(2) 只对需要的McBSP配置寄存器进行编程(不是数据寄存器)。
*(3) 等待2个位时钟。确保内部正确的同步。
*(4) 设置所需要的数据采集。
*(5) 设置XRST=RRST=1,使串行端口有效。注意这时写到SPCR[1,2]中的值只是复位的位变成1。剩下的的位域与上面的第二步的值相同。
*(6) 如果需要内部的产生帧同步信号,设置FRST=1。
*(7) 等待2个时钟用于使接收器和发送器有效。
_McBSP_init:
*********************串行端口复位******************************************
STM #SPCR10_SUBADDR,SPSA0 ;复位串行端口
STM #0000h,SPSD0 ;/RRST=0 ;控制寄存器1配置
STM #SPCR20_SUBADDR,SPSA0
STM #0000h,SPSD0 ;/XRST=0 ;控制寄存器2配置
RPT #512
NOP
STM #PCR0_SUBADDR,SPSA0
STM #3F25h,SPSD0
RPT #512
NOP
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -