定时器控制寄存器(TCR)是一个16位的存贮器映射寄存器,包含了定时器的控制与状态信息。2.3.2McBSP介绍MCBSP是DSP的片上外设资源。它可以与其它的DSP、CODEC和带有SPI接口的器件进行连接。在TMS320vC5416上共有3个MCBSP(MultichannelBufferedSerialPort)。它共有三组主个管脚,包含了数据通路与控制通路。注:CLKS在C5000系列的DSP中没有提供,只在C6000中才有支持。1.串行同步通信的信号:FSR、CLKR、DR和FSX、CLKX、DX顿同步信号:FSR、FSX●位-时钟:CLKR、CLKX●串行数据流:DR、DX1.串行同步串行通信协议:1)串行数据流起始时刻称为顿同步事件。顿同步事件由位-时钟采样顿同步信号给出。2串行数据流长度:串行传输的数据流位数达到设定的长度后,结束本次传输,等下一个顿同步信号达到,再发起另一次串行传输。串行数据流传输速度:即每一个串行位的持续时间,由位-时钟决定3FSR(FSX)、CLKR(CLKX)、DR(DX)三者之间的关系即如何取得顿4)1同步事件、何时采样串行数据位流、或何时输出串行数据位流,是可以通过MCBSP的寄存器进行配置的。其中SPCR1x后面的寄存器是二次寻址的,其过程如下:首先向SPSAx寄存器中写入你想要操作的寄存器的子地址,然后再向SPSDx中写入你想要的数据,从而完成对其的操作。2.同步串口实验中使用MCBSP1作为与SEED-MMI5402通讯的同步串口其连接图如下:SEED-DEC5416SEED-MMI5402BCLKR14BCLKX1BFSR1BFSX1BDR1BDX1-mcbsp1mcbsp1BCLKR1BCLKX1BFSX1BFSR1BDX1BDR13.在同步串口实验中,,并而将MCBSP1设置成为单通道的方式使用。其设置如下:1)设置SPCR1寄存器,禁止SPI模式;2)设置XCR1寄存器,单数据相,发送数据长度为16位,每相1个数据;3)设置XCR2寄存器,发送数据延时一个位:4)设置RCR1寄存器,单数据相,接受数据长度为16位,每相1个数据;8
定时器控制寄存器(TCR)是一个 16 位的存贮器映射寄存器,包含了定时 器的控制与状态信息。 2.3.2 McBSP 介绍 MCBSP 是 DSP 的片上外设资源。它可以与其它的 DSP、CODEC 和带有 SPI 接口 的器件进行连接。在 TMS320VC5416 上共有 3 个 MCBSP(Multichannel Buffered Serial Port)。它共有三组主个管脚,包含了数据通路与控制通路。 注:CLKS 在 C5000 系列的 DSP 中没有提供,只在 C6000 中才有支持。 1. 串行同步通信的信号:FSR、CLKR、DR 和 FSX、CLKX、DX 帧同步信号:FSR、FSX 位-时钟:CLKR、CLKX 串行数据流:DR、DX 1. 串行同步串行通信协议: 1) 串行数据流起始时刻称为帧同步事件。帧同步事件由位-时钟采样帧 同步信号给出。 2) 串行数据流长度:串行传输的数据流位数达到设定的长度后,结束 本次传输,等下一个帧同步信号达到,再发起另一次串行传输。 3) 串行数据流传输速度:即每一个串行位的持续时间,由位-时钟决定 4) FSR(FSX)、CLKR(CLKX)、DR(DX)三者之间的关系即如何取得帧 同步事件、何时采样串行数据位流、或何时输出串行数据位流,是 可以通过 MCBSP 的寄存器进行配置的。 其中 SPCR1x 后面的寄存器是二次寻址的,其过程如下: 首先向 SPSAx 寄存器中写入你想要操作的寄存器的子地址,然后再 向 SPSDx 中写入你想要的数据,从而完成对其的操作。 2. 同步串口实验中使用 MCBSP1 作为与 SEED-MMI5402 通讯的同步串口其连 接图如下: 3. 在同步串口实验中,并而将 MCBSP1 设置成为单通道的方式使用。其设 置如下: 1) 设置 SPCR1 寄存器,禁止 SPI 模式; 2) 设置 XCR1 寄存器,单数据相,发送数据长度为 16 位,每相 1 个数据; 3) 设置 XCR2 寄存器,发送数据延时一个位; 4) 设置 RCR1 寄存器,单数据相,接受数据长度为 16 位,每相 1 个数据; 8
5)设置RCR2寄存器,单数据相,接收延时一个位;6)设置PCR寄存器,设置BLCKR为输入,下降沿接收数据;设置BFSR为输入,并且其极性为高有效;设置BCLKX由内部时钟产生,并且上沿发送数据;7)设置SRGR1,确定分频数为OxOFF,MCBSP2的波待率为625k,顿脉冲宽度为1个数据位,Ox0F:8)设置SRGR2,确定时钟来源为内部的CPU,确定顿同步为低有效:2.4实验要求能够掌据汇编语言的程序结构。能够按照设置的定时时间进行定时输出,能进入定时中断;通过串行通信发送单个字符和连续的多个字符,能进入串行中断。2.5实验程序功能与结构说明2.5.1Timer实验调试程序2.5.1.1在Timer实验调试程序中,主要包含以下文件:1.timer.c:这是实验的主程序,主要包含CSL初始化,DSP初始化,Timer及Timer中断初始化,Timer中断程序。2.vector.asm:包含5416的中断向量表。3.dec5416.cmd:声明了系统的存贮器配置与程序各段的链接关系。2.5.1.2程序流程图(定时器)9
5) 设置 RCR2 寄存器,单数据相,接收延时一个位; 6) 设置 PCR 寄存器,设置 BLCKR 为输入,下降沿接收数据;设置 BFSR 为输入,并且其极性为高有效;设置 BCLKX 由内部时钟产生,并且 上沿发送数据; 7) 设置 SRGR1,确定分频数为 0x0FF,MCBSP2 的波待率为 625k,帧脉 冲宽度为 1 个数据位,0x0F: 8) 设置 SRGR2,确定时钟来源为内部的 CPU,确定帧同步为低有效; 2.4 实验要求 能够掌据汇编语言的程序结构。能够按照设置的定时时间进行定时输出,能 进入定时中断;通过串行通信发送单个字符和连续的多个字符,能进入串行中断。 2.5 实验程序功能与结构说明 2.5.1 Timer 实验调试程序 2.5.1.1 在 Timer 实验调试程序中,主要包含以下文件: 1. timer.c:这是实验的主程序,主要包含 CSL 初始化,DSP 初始化,Timer 及 Timer 中断初始化,Timer 中断程序。 2. vector.asm:包含 5416 的中断向量表。 3. dec5416.cmd:声明了系统的存贮器配置与程序各段的链接关系。 2.5.1.2 程序流程图(定时器) 9
主程序流程图CSL初始化系统时钟设置→关中断定时器中断初始化定时器各寄存器配置开中断V启动定时器for(;:)循环等待进入中断程序中断程序流程图i++;开总中断+返回10
主程序流程图 CSL 初始化 定时器中断初始化 关中断 开中断 for(;;)循环等待进入 中断程序 定时器各寄存器配置 系统时钟设置 启动定时器 i++; 开总中断 中断程序流程图 返回 10
2.5.1.33程序流程图(串行口)主程序流程图DSP初始化+串口、McBSP初始化发送握手信号X接收串口数据判断串口状态文通讯错误通讯错误处理N数据处理实验处理N实验处理流程图开始V串口实验同步串口打开命令IN关闭串口同步串口关闭命令N终止处理实验终止命令回到程序主循环11
2.5.1.3 程序流程图(串行口) 主程序流程图 串口、McBSP 初始化 发送握手信号 N 实验处理 Y N 接收串口数据 判断串口状态 通讯错误 数据处理 通讯错误处理 Y DSP 初始化 N N Y Y Y 开始 同步串口打开命令 串口实验 同步串口关闭命令 关闭串口 实验终止命令 终止处理 实验处理流程图 回到程序主循环 11
2.5.1.4实验步骤(定时器)首先将光盘下03.ExamplesofProgram1O4.SEEDDTK-DBD调试实验程序目录下的CCS-Timer的文件夹拷贝到D:盘根目录下。1.将DSP仿真器与计算机连接好;2.将DSP仿真器的JTAG插头与SEED-DEC5416单元的J1相连接;3.启动计算机,当计算机启动后,打开SEED-DTK_DBD的电源。观察SEED-DTK-I01单元的+5V,十3.3V,+15V,一15V的电源指示灯,SEEDDEC5416的D2以及SEED-DSK2812的D2是否均亮;若有不亮的,请断开电源,检查电源。4.打开CCS,进入CCS的操作环境。5.装入timer.pjt工程文件,添加dtk-boot.gel文件。6.装载程序timer.out,进行调试。7.在程序的第101行“i=i+1:”处设置断点。8.运行程序,程序会停在断点处,表明已进入定时器中断。继续运行程序,程序每次都会停在断点处。实验者可根据自己的需要改变周期寄存器的值,从而控制每次进中断的时间。2.5.1.5实验步骤(串行口)首先将光盘下03.ExamplesofProgram\04.SEED_DTK-DBD调试实验程序目录下的DTK_MCBSP的文件夹拷贝到D:盘根目录下。1.将DSP仿真器与计算机连接好。2.将DSP仿真器的JTAG插头与SEED-DEC5416单元的J1相连接。3.启动计算机,当计算机启动后,打开SEED-DTKDBD的电源。观察SEED-DTK-I01单元的+5V,+3.3V,+15V,一15V的电源指示灯,SEEDDEC5416的D2以及SEED-DSK2812的D2是否均亮;若有不亮的,请断开电源,检查电源。4.进入SEED-DTKDBD的“实验选项”的菜单下,选择“同步串口实验”一项,进入后光标停留在“使用CCS选项”处,按“Enter”键,通过“→”选择是否使用CCS。在调试时选择使用CCS。5.打开CCS,进入CCS的操作环境。6.装入DTK_MCBSP.pjt工程文件,添加Dtk-boot.gel文件,进行调试。7.装载程序DTK_MCBSP.out8.运行程序,此时LCD显示器的下方将出现“同步串口实验装载成功!”9.打开MCBSP.c文件,在第202行if(MCBSPRRDY(mcbsp1))”处设置断点。10.在“发送模式”一项任意选择“整顿”或“单个”,在“串口状态”项选择“开启”,这是程序将停在所设的断点处。11.继续运行程序。12.若“发送模式”选择的是“整顿”,则在“自动发送数据”选项选择任意字符串,此数据串将在LCD显示器最下方的“数据接受:”后出现,说明通讯成功。若“发送模式”选择的是“单个”,则在LCD显示器下方的键盘上输入任意数字,此数字将在LCD显示器最下方的“数据接受:”后出现,说明通讯成功。注意:如果操作失误或者发现对实验箱的操作已不起作用,请复位实验箱,这时一定要在CCS下重新复位CPU,再重复步骤6)-步骤12)。12
2.5.1.4 实验步骤(定时器) 首先将光盘下 03. Examples of Program \ 04. SEED_DTK-DBD 调试实验程 序目录下的 CCS-Timer 的文件夹拷贝到 D:盘根目录下。 1. 将 DSP 仿真器与计算机连接好; 2. 将 DSP 仿真器的 JTAG 插头与 SEED-DEC5416 单元的 J1 相连接; 3. 启动计算机,当计算机启动后,打开 SEED-DTK_DBD 的电源。观察 SEED-DTK-IO1 单元的+5V,+3.3V,+15V,-15V 的电源指示灯, SEED_DEC5416 的 D2 以及 SEED-DSK2812 的 D2 是否均亮;若有不亮的, 请断开电源,检查电源。 4. 打开 CCS,进入 CCS 的操作环境。 5. 装入 timer.pjt 工程文件,添加 dtk-boot.gel 文件。 6. 装载程序 timer.out,进行调试。 7. 在程序的第 101 行“i=i+1;”处设置断点。 8. 运行程序,程序会停在断点处,表明已进入定时器中断。继续运行程序, 程序每次都会停在断点处。实验者可根据自己的需要改变周期寄存器的 值,从而控制每次进中断的时间。 2.5.1.5 实验步骤(串行口) 首先将光盘下 03. Examples of Program \ 04. SEED_DTK-DBD 调试实验程 序目录下的 DTK _MCBSP 的文件夹拷贝到 D:盘根目录下。 1.将 DSP 仿真器与计算机连接好。 2.将 DSP 仿真器的 JTAG 插头与 SEED-DEC5416 单元的 J1 相连接。 3.启动计算机,当计算机启动后,打开 SEED-DTK_DBD 的电源。观察 SEED-DTK-IO1 单元的+5V,+3.3V,+15V,-15V 的电源指示灯,SEED_DEC5416 的 D2 以及 SEED-DSK2812 的 D2 是否均亮;若有不亮的,请断开电源,检查电源。 4.进入 SEED-DTK_DBD 的“实验选项”的菜单下,选择“同步串口实验”一 项,进入后光标停留在“使用 CCS 选项”处,按 “Enter”键,通过“→”选择 是否使用 CCS。在调试时选择使用 CCS。 5.打开 CCS,进入 CCS 的操作环境。 6.装入 DTK _MCBSP.pjt 工程文件,添加 Dtk-boot.gel 文件,进行调试。 7.装载程序 DTK _MCBSP.out。 8.运行程序,此时 LCD 显示器的下方将出现“同步串口实验装载成功!” 9.打开 MCBSP.c 文件,在第 202 行 if(MCBSP_RRDY(mcbsp1))”处设置断点。 10.在“发送模式”一项任意选择“整帧”或“单个”,在“串口状态”一 项选择“开启”,这是程序将停在所设的断点处。 11.继续运行程序。 12.若“发送模式”选择的是“整帧”,则在“自动发送数据”选项选择任 意字符串,此数据串将在 LCD 显示器最下方的“数据接受:”后出现,说明通讯 成功。若“发送模式”选择的是“单个”,则在 LCD 显示器下方的键盘上输入任 意数字,此数字将在 LCD 显示器最下方的“数据接受:”后出现,说明通讯成功。 注意:如果操作失误或者发现对实验箱的操作已不起作用,请复位实验箱, 这时一定要在 CCS 下重新复位 CPU,再重复步骤 6)-步骤 12)。 12