📄 c54_init.asm
字号:
.copy 5410.mmreg
.def _c54_init,_hpidsp_host
.global _ad_samp_freq
.bss _ad_samp_freq,1
.bss IO_OUDATA,1
.text
_c54_init:
SSBX INTM
ST #0,*(IO_OUDATA)
PORTW IO_OUDATA,04h ;Write IO(address = 0x4h),复位 AIC,因为AIC的复位脚映射为IO的0X4H地址
;CPU
STM 0,ST0 ;ARP=0、DP=0
STM 0100001101011111B,ST1 ;CPL=0 DP直接寻址、中断屏蔽、溢出保护、
;符号扩展、FRCT有效、ARP无效、ASM=-1
STM 0010000000100100B,PMST ;中断定位2000H、程序/数据空间有效,DROM=1 SARAM2有效
STM 0x7FFF,SWWSR ;0 WS for memory, 2 WS for I/O */
STM 0x3,@0x2B
;CLK
STM 0,BSCR ;CLKOUT = CPU CLOCK
NOP
NOP
STM 0,CLKMD ;Reset to DIV Mod
NOP
NOP
STM 1001011111111111B,CLKMD ;PLL Multiply 10,高4位加1即为倍频系数
NOP
NOP
NOP
NOP
;TOUT = 100M/16,设置定时器0的定时周期
STM 0000010000010001B,TCR ;TDDR=3
NOP
NOP
STM 0XFFFE,PRD ;PRD=3
NOP
NOP
STM 0000010000000011B,TCR ;TDDR=3
NOP
NOP
ST #1,*(IO_OUDATA)
PORTW IO_OUDATA,04h ;Enable The AIC
CALL WAITT
;设置McBSP0工作方式
STM 0,SPSA0
STM 0X40A0,SPCR0 ;SPCR10 ;reset
STM 1,SPSA0
STM 0X0220,SPCR0 ;SPCR20
STM 2,SPSA0
STM 0X0040,SPCR0 ;RCR10 ;receive frame and word length
STM 3,SPSA0
STM 0X0040,SPCR0 ;RCR20 ;receive frame and word length
STM 4,SPSA0
STM 0X0040,SPCR0 ;xCR10 ;transmit frame and word length
STM 5,SPSA0
STM 0X0040,SPCR0 ;xCR20 ;transmit frame and word length
STM 0x000e,SPSA0
STM 0CH,SPCR0 ;PCR0 ;Polarity
STM 0,DXR10 ;发送清空
STM 0,23H
NOP
NOP
STM 1,SPSA0
STM 0X0221,SPCR0 ;SPCR20
STM 0,SPSA0
STM 0X40A1,SPCR0 ;SPCR10 ;run
NOP
NOP
;设置AIC的工作方式
CALL WAITT
;reg 2 AIC分频器,抽样频率=外部输入时钟/分频比
CALL DX0EMPT
STM 0,DXR10 ;发送清空
CALL DX0EMPT
STM 1,DXR10 ;第二串口通信请求
CALL DX0EMPT
LD *(_ad_samp_freq),A
STLM A,DXR10
CALL DX0EMPT
STM 0,DXR10
;reg 4 输入放大
CALL DX0EMPT
STM 0,DXR10 ;发送清空
CALL DX0EMPT
STM 1,DXR10 ;第二串口通信请求
CALL DX0EMPT
STM 0000100000001100B,DXR10
CALL DX0EMPT
STM 0,DXR10
CALL WAITT
;设置中断屏蔽寄存器IMR,允许BSP0接收中断
STM 0X010,IMR ;BSP0中断允许,产生的正弦波的抽样频率由AIC的抽样频率决定
NOP
RSBX INTM
RET
;延迟一段时间
WAIT: STM #0X0FFF,AR0
WAIT0: STM #0X0FF,AR1
WAIT1: BANZ WAIT1,*AR1-
BANZ WAIT0,*AR0-
RET
WAITT: STM #0X00FFF,AR0
WAITT0: STM #0X003FF,AR1
WAITT1: BANZ WAITT1,*AR1-
BANZ WAITT0,*AR0-
RET
;MCBSP0 发送空检测
DX0EMPT: STM 1,SPSA0
LDM SPCR0,A ;SPCR20
NOP
NOP
AND #0004h,A
NOP
NOP
BC DX0EMPT,ANEQ
NOP
NOP
CALL WAITT
NOP
RET
;触发一个HPI中断,告诉主机有数据将要发送给主机
_hpidsp_host
STM 0x0a,HPIC
RET
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -