Dsp5416与cpld.docx
- 文档编号:6805784
- 上传时间:2023-01-10
- 格式:DOCX
- 页数:26
- 大小:775.99KB
Dsp5416与cpld.docx
《Dsp5416与cpld.docx》由会员分享,可在线阅读,更多相关《Dsp5416与cpld.docx(26页珍藏版)》请在冰豆网上搜索。
Dsp5416与cpld
Dsp5416
Cpld95144XL
1、/*TMS320UC5402多通道缓存串口0寄存器
~~~~~~~~~~~~~~~~~~~~*/
#defineDRR20*(volatileunsignedint*)0x0020
/*McBSP0数据接收寄存器2*/
#defineDRR10*(volatileunsignedint*)0x0021
/*McBSP0数据接收寄存器1*/
#defineDXR20*(volatileunsignedint*)0x0022
/*McBSP0数据发送寄存器2*/
#defineDXR10*(volatileunsignedint*)0x0023
/*McBSP0数据发送寄存器1*/
#defineSPSA0*(volatileunsignedint*)0x0038
/*McBSP0subbank地址寄存器*/
#defineSPSD0*(volatileunsignedint*)0x0039
/*McBSP0subbank数据寄存器*/
#defineSPCR10x00
/*串口控制寄存器1*/
#defineSPCR20x01
/*串口控制寄存器2*/
#defineRCR10x02
/*接收控制寄存器1*/
#defineRCR20x03
/*接收控制寄存器2*/
#defineXCR10x04
/*传送控制寄存器1*/
#defineXCR20x05
/*传送控制寄存器2*/
#defineSRGR10x06
/*采样率产生寄存器1*/
#defineSRGR20x07
/*采样率产生寄存器2*/
#defineMCR10x08
/*多通道寄存器1*/
#defineMCR20x09
/*多通道寄存器2*/
#defineRCERA0x0A
/*接收通道使能寄存器A*/
#defineRCERB0x0B
/*接收通道使能寄存器B*/
#defineXCERA0x0C
/*发送通道使能寄存器A*/
#defineXCERB0x0D
/*发送通道使能寄存器B*/
#definePCR0x0E
/*引脚控制寄存器 */
dsp_5402_配置多通道缓冲串口的操作模式程序(2010-08-0416:
36:
29)转载标签:
dspmcbsp杂谈分类:
DSP
;*******************************************
;配置多通道缓冲串口的操作模式程序
;*******************************************
.include"initial.inc"
.def_rint
.def_xint
.def_mcbsp_dx_wait
.defspi1_init_16_16
.mmregs;把内存映射寄存器导入进符号表
.text;assemblethissub_programto.textblock
;******************************
;16位、1位数据延时,200ns一个时钟脉冲,内部时钟、FSX发生在DXR向XSR拷贝期间
;接收帧同步(FSR)由内部采样率发生器生成(FSR为输出引脚)、
;无数据返回模式并由内部采样率发生器驱动CLKR
;CLKXP=0,CLKRP=0发送接收的时钟极性下降沿触发,上升沿采样
;CLKSTP=11,CLKXP=0,时钟开始于上升沿,有延时
;接收中断产生由接收准备位(RRDY)决定。
(准备好就产生接收中断)
;发送中断产生由发送准备位(XRDY)决定。
(准备好就产生发送中断)
;
;******************************
;**************************************
spi1_init_16_16:
ssbxintm
rsbxCPL;cpl=0使用DP作为直接寻址寄存器
ld#0,DP;dp=0使用第0页
stmRCR1,SPSA0;每帧一字,字长32位
nop
stm#0000000001000000b,SPSD0
;#0~~~~~~~~~~~~~~~b;reserved
;#~0000000~~~~~~~~b;接收帧1长度每帧1字(0-127)对应是(1-128)个字
;#~~~~~~~~010~~~~~b;接收1字长
;000-8位;001-12位;010-16位;011-20位
;100-24位;101-32位;11x-保留
;#~~~~~~~~~~~00000b;reserved
nop
stmRCR2,SPSA0;(03h)->(48h)
nop
stm#0000000001000001b,SPSD0
;#0~~~~~~~~~~~~~~~b;0-单相桢,1-双相桢
;#~0000000~~~~~~~~b;接收帧2长度每帧1字(0-127)对应是(1-128)个字
;#~~~~~~~~010~~~~~b;接收2字长
;000-8位;001-12位;010-16位;011-20位
;100-24位;101-32位;11x-保留
;#~~~~~~~~~~~00~~~b;无压缩扩展,传输高位起先
;00--无扩展、数据从MSB开始转换
;01--8位数据,数据从LSB开始转换
;10--按u-率扩展
;11--按A-率扩展
;#~~~~~~~~~~~~~0~~b;0---无接收同步信号
;1---有接收同步信号
;#~~~~~~~~~~~~~~01b;00--0位数据延时
;01--1位数据延时
;10--2位数据延时
;11--保留
nop
stmXCR1,SPSA0;(04h)->(48h)
nop
stm#0000000001000000b,SPSD0
;#0~~~~~~~~~~~~~~~b;Reserved
;#~0000000~~~~~~~~b;发送帧长度每帧一字
;#~~~~~~~~010~~~~~b;发送帧字长16位
;#~~~~~~~~~~~00000b;Reserved
nop
stmXCR2,SPSA0;(05h)->(48h)
nop
stm#0000000001000001b,SPSD0
;#0~~~~~~~~~~~~~~~b;单相帧
;#~0000000~~~~~~~~b;每帧1字
;#~~~~~~~~010~~~~~b;字长16位
;#~~~~~~~~~~~00~~~b;无压缩扩展,传输高位起先
;#~~~~~~~~~~~~~0~~b;0---无接收同步信号
;#~~~~~~~~~~~~~~01b;1位延迟
nop
stmSRGR1,SPSA0;(06h)->(48h)
nop
stm#19,SPSD0;t=(1+clkgd)*cpu时钟
;#00000000~~~~~~~~b;帧宽,该域+1确定帧同步脉冲的宽度(1个时钟脉冲宽度)
;#~~~~~~~~00010011b;采样率因子时钟分频系数(FRST)
nop
stmSRGR2,SPSA0;(07h)->(48h)
nop
stm#0010000000000000b,SPSD0
;#0~~~~~~~~~~~~~~~b;采样率发生器时钟同步控制位(外部时钟驱动后才起作用)
;0--CLKG不工作
;1--CLKG工作(发现FSR后,CLKG重新同步,同时产生FSG。
另外FPER不起作用)
;#~0~~~~~~~~~~~~~~b;CLKSP位
;CLKS极性(外部时钟驱动后才起作用)
;0--CLKS上升沿产生CLKG和FSG(CLKM=0后才起作用)
;1--CLKS下降沿产生CLKG和FSG
;#~~1~~~~~~~~~~~~~b;CLKSM
;0--外部时钟驱动,即由CLKS管脚输入
;1--内部时钟驱动,采样率生成时钟从cpu时钟产生
;#~~~0~~~~~~~~~~~~b;FSGM=0发送帧同步信号(fsx)依据于dxr-to-xsr的拷贝,fpr,fwid被忽略
;当PCR中的FSXM=1时起作用。
;0--FSX发生在DXR向XSR拷贝期间。
FPR和FWID被忽略
;1--FSX由FSG产生
;#~~~~000000000000b;帧周期设置值。
该预值+1决定帧周期
nop
stmPCR,SPSA0;(0Eh)->(48h)
nop
stm#0000111100001101b,SPSD0
;#00~~~~~~~~~~~~~~b;(15-14)Reserved
;#~~0~~~~~~~~~~~~~b;(13)=0时,DX、FSX、CLKX被配制成串口模式管脚(XRST=0)
;#~~~0~~~~~~~~~~~~b;(12)=0时,DR、FSR、CLKR、CLKS被配制成串口模式管脚(RRST=0)
;#~~~~1~~~~~~~~~~~b;(11)FSXM位(=1BFSXpinasanoutput(CS线)发送帧同步模式)帧同步由在srgr2中的采样率发生器帧同步模式位fsgm确定
;#~~~~~1~~~~~~~~~~b;(10)(接收帧同步模式)帧同步由内部采样率发生器生成,除了当srgr中的gsync位等于1时fsr为输出脚
;#~~~~~~1~~~~~~~~~b;(9)CLKXM
;=0,MCBSP为从器件,外部时钟驱动CLKX
;=1,MCBSP为主器件,时钟由内部采样率发生器驱动CLKX,CLKX驱动CLKR
;#~~~~~~~1~~~~~~~~b;(8)接收时钟(clkr)由外部时钟驱动的输入脚
;SPCR1中的DLB=0时,无数据返回模式
;=0,外部时钟驱动CLKR
;=1,内部采样率发生器驱动CLKR
;SPCR1中的DLB=1时,有数据返回模式
;=0,由PCR中CLKXM确定的发送时钟驱动接收时钟(不是CLKR),CLKR为高阻。
;=1,CLKR设定为输出引脚,由发送时钟驱动,发送时钟由PCR中的CLKM位定义驱动。
;#~~~~~~~~0~~~~~~~b;(7)reserved
;#~~~~~~~~~0~~~~~~b;(6)CLKS脚(作为通用i/o时)状态0
;#~~~~~~~~~~0~~~~~b;(5)DX脚(作为通用i/o时)的状态0
;#~~~~~~~~~~~0~~~~b;(4)DR脚(作为通用i/o时)的状态0
;#~~~~~~~~~~~~1~~~b;(3)FSXP=1发送帧同步信号极性BFSXpinasactive-low发送帧同步极性,帧同步脉冲FSX低有效
;=0,上升沿触发
;=1,下降沿触发
;#~~~~~~~~~~~~~1~~b;
(2)接收帧同步极性,帧同步脉冲FSR低有效
;=0,上升沿触发
;=1,下降沿触发
;#~~~~~~~~~~~~~~0~b;
(1)CLKXP发送时钟极性,发送数据在CLKX上升沿采样
;=0,上升沿采样
;=1,下降沿采样
;#~~~~~~~~~~~~~~~1b;(0)CLKRP接收时钟极性,接收数据在CLKR上升沿采样
;=0,下降沿采样
;=1,上升沿采样
nop
stmSPCR1,SPSA0;(00h)->(48h);两处设置
nop
stm#0001100010000000b,SPSD0
;#0~~~~~~~~~~~~~~~b;(15)数据环回模式无效,测试用的
;#~00~~~~~~~~~~~~~b;(14-13)RJUST接收符号扩展和判别模式。
DRR[1,2]中有对齐高位填0模式
;00--右-判,最高位为0
;01--右-判,最高位为符号扩展位
;10--左-判,最高位为0
;11--保留
;#~~~11~~~~~~~~~~~b;(12-11)CLKSTP,时钟停止模式位,时钟开始于上升沿有延时
;CLKSTP=0x,在非SPI时,为正常时钟。
;SPI模式时
;CLKSTP=10,CLKXP=0,时钟开始于上升沿,无延时
;CLKSTP=10,CLKXP=1,时钟开始于下降沿,无延时
;CLKSTP=11,CLKXP=0,时钟开始于上升沿,有延时
;CLKSTP=11,CLKXP=1,时钟开始于下降沿,有延时
;#~~~~~000~~~~~~~~b;(10-8)Reserved
;#~~~~~~~~1~~~~~~~b;(7)打开DX脚使能
;#~~~~~~~~~0~~~~~~b;(6)ABIS模式无效
;#~~~~~~~~~~00~~~~b;(5-4)RINTM接收中断模式。
RINT由RRDY驱动(如字结尾),以及ABIS帧末尾
;00--RNT由RRDY(字结束)驱动。
当在ABIS时,由帧结束产生
;01--在多通道中,由块结束或帧结束产生
;10--一个新帧同步产生一次RINT
;11--由接收同步错误(RSYNCERR)产生RINT中断
;#~~~~~~~~~~~~0~~~b;(3)RSYNCERR(没有同步错误)
;=0,关同步错误监测
;=1,开同步错误监测
;#~~~~~~~~~~~~~0~~b;
(2)只读,RFULL接收缓冲区是否满状态
;#~~~~~~~~~~~~~~0~b;
(1)只读,RRDY接收器是否准备好
;#~~~~~~~~~~~~~~~0b;(0)串口接收机无效并处于复位状态
;=0,复位
;=1,使能
nop
stmSPCR1,SPSA0;(00h)->(48h);两处设置
nop
stm#0001100010000001b,SPSD0;解释看上面说明
;#~~~~~~~~~~~~~~~1b;串口接收机使能
rpt#6;指令空转延时
nop
stmSPCR2,SPSA0;(01h)->(48h);两处设置
nop
stm#0000001011000000b,SPSD0
;#000000~~~~~~~~~~b;(15-10)reserved
;#~~~~~~1~~~~~~~~~b;(9)使能自由运行模式
;#~~~~~~~0~~~~~~~~b;(8)只读,=0废除软件调试模式
;#~~~~~~~~1~~~~~~~b;(7)FRST同步信号位,在fper+1各clkg后,帧同步模式fsg产生,例如所有帧计数器由其编程值载入
;#~~~~~~~~~1~~~~~~b;(6)GRST=0采样率发生器复位,=1启动
;#~~~~~~~~~~00~~~~b;(5-4)XINTM由XRDY信号驱动(如字结束)和ABIS模式帧结束
;00--XINT由XRDY产生中断
;01--块结束或多通道时帧同步结束产生中断
;10--新帧产生中断
;11--由发送同步错误(XSYNCERR)产生中断
;#~~~~~~~~~~~~0~~~b;(3)XSYNCERR(无同步错误)
;#~~~~~~~~~~~~~0~~b;
(2)只读,发送移位寄存器是否空,XSR[1,2]是否空
;#~~~~~~~~~~~~~~0~b;
(1)只读,发送器准备好
;#~~~~~~~~~~~~~~~0b;(0)串口发送器无效并处于复位状态
;=0,复位
;=1,使能
nop
stmSPCR2,SPSA0;(01h)->(48h);两处设置
nop
stm#0000001011000001b,SPSD0;解释看上面说明
;#~~~~~~~~~~~~~~~1b;使能串口发送器
stm0ffffh,ifr
rsbxintm
rpt#06h;指令空转延时
nop
ret;topofstack->(pc);(sp)+1->(sp)
;**********************************************
;中断服务例程
;**********************************************
_rint:
pshmar5
stmmcbsp_dr_wait_flag,ar5;write_over_flag=0,写完
st#00h,*ar5
_rint_over:
POPMar5
rete;/允许中断
;**********************************************
;中断服务例程
;**********************************************
_xint:
pshmar5;1cycle
stmmcbsp_dx_wait_flag,ar5;write_over_flag=0,写完
st#00h,*ar5
_xint_over:
POPMar5;1cycle
rete;/允许中断
*************************************************
**mcbsp写等待
*************************************************
_mcbsp_dx_wait:
pshmar5;1cycle
stmmcbsp_dx_wait_flag,ar5;write_over_flag=0,写完
_mcbsp_dx_wait_next:
nop
cmpm*ar5,#01h
nop
bc_mcbsp_dx_wait_next,tc
st#01h,*ar5
;rpt#01000h;指令空转延时
;nop
;nop
;nop
popmar5;1cycle
rpt#6;指令空转延时
nop
ret;topofstack->(pc);(sp)+1->(sp)
voidinitMcBSP2(void)/*configuationtheMcBSP1asSPImode*/
{
SPSA2=SPCR1;//SPSA2McBSP2SubbankAddressRegister;查SPCR1定义
SPSD2=0;//SPCR1=0
;#0~~~~~~~~~~~~~~~b;(15)数据环回模式无效,测试用的
;#~00~~~~~~~~~~~~~b;(14-13)RJUST接收符号扩展和判别模式。
DRR[1,2]中有对齐高位填0模式
;00--右-判,最高位为0
;01--右-判,最高位为符号扩展位
;10--左-判,最高位为0
;11--保留
;#~~~11~~~~~~~~~~~b;(12-11)CLKSTP,时钟停止模式位,时钟开始于上升沿有延时
;CLKSTP=0x,在非SPI时,为正常时钟。
;SPI模式时
;CLKSTP=10,CLKXP=0,时钟开始于上升沿,无延时
;CLKSTP=10,CLKXP=1,时钟开始于下降沿,无延时
;CLKSTP=11,CLKXP=0,时钟开始于上升沿,有延时
;CLKSTP=11,CLKXP=1,时钟开始于下降沿,有延时
;#~~~~~000~~~~~~~~b;(10-8)Reserved
;#~~~~~~~~1~~~~~~~b;(7)打开DX脚使能
;#~~~~~~~~~0~~~~~~b;(6)ABIS模式无效
;#~~~~~~~~~~00~~~~b;(5-4)RINTM接收中断模式。
RINT由RRDY驱动(如字结尾),以及ABIS帧末尾
;00--RNT由RRDY(字结束)驱动。
当在ABIS时,由帧结束产生
;01--在多通道中,由块结束或帧结束产生
;10--一个新帧同步产生一次RINT
;11--由接收同步错误(RSYNCERR)产生RINT中断
;#~~~~~~~~~~~~0~~~b;(3)RSYNCERR(没有同步错误)
;=0,关同步错误监测
;=1,开同步错误监测
;#~~~~~~~~~~~~~0~~b;
(2)只读,RFULL接收缓冲区是否满状态
;#~~~~~~~~~~~~~~0~b;
(1)只读,RRDY接收器是否准备好
;#~~~~~~~~~~~~~~~0b;(0)串口接收机无效并处于复位状态
;=0,复位
;=1,使能
SPSA2=SPCR2;
SPSD2=0;
;#000000~~~~~~~~~~b;(15-10)reserved
;#~~~~~~1~~~~~~~~~b;(9)使能自由运行模式
;#~~~~~~~0~~~~~~~~b;(8)只读,=0废除软件调试模式
;#~~~~~~~~1~~~~~~~b;(7)FRST同步信号位,在fper+1各clkg后,帧同步模式fsg产生,例如所有帧计数器由其编程值载入
;#~~~~~~~~~1~~~~~~b;(6)GRST=0采样率发生器复位,=1启动
;#~~~~~~~~~~00~~~~b;(5-4)XINTM由XRDY信号驱动(如字结束)和ABIS模式帧结束
;00--XINT由XRDY产生中断
;01--块结束或多通道时帧同步结束产生中断
;10--新帧产生中断
;11--由发送同步错误(XSYNCERR)产生中断
;#~~~~~~~~~~~~0~~~b;(3)XSYNCERR(无同步错误)
;#~~~~~~~~~~~~~0~~b;
(2)只读,发送移位寄存器是否空,XSR[1,2]是否空
;#~~~~~~~~~~~~~~0~b;
(1)只读,发送器准备好
;#~~~~~~~~~~~~~~~0b;(0)串口发送器无效并处于复位状态
;=0,复位
;=1,使能
SPSA2=RCR1;
SPSD2=0x40;
;#0~~~~~~~~~~~~~~~b;reserved
;#~0000000~~~~~~~~b;接收帧1长度每帧1字(0-127)对应是(1-128)个字
;#~~~~~~~~010~~~~~b;接收1字长
;000-8位;001-12位;010-1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Dsp5416 cpld