DSP28335软件实验讲解
- 格式:pdf
- 大小:6.87 MB
- 文档页数:55
D S P实验二、T M S320F28335按键输入控制L E D亮灭继续我的第二个实验;实现按键控制LED亮灭:功能描述:上电默认LD3亮;触动一次按键SW12,LD3灭再按一次按键SW12, LD3亮再触动一次按键SW12,LD3灭再按一次按键SW12, LD3亮。
实现每触动一次按键,LED执行一次由亮到灭,或者由灭到亮,也就是实现一次状态反转。
电路连接说明:LD3 设置为通用GPIO 上拉输出初始化后默认为输出LD3亮状态;LD3控制LED灯的负极,如下图;SW12 设置为通用GPIO 上拉输入该引脚应用滤波功能,且仅在按键抬起时控制LD3状态发生变化。
按键电路如上图,GPIO53须输出0,当按键按下时,读取GPIO50端口值,为0,当按键未按下时,GPIO50因为上上拉作用,其端口值为1。
程序设计说明:按键的读取采用实时扫描的方式(非中断方式),功能要求在按键抬起后发生LED状态翻转;所以要记录上一次按键值,并且将当前值==0&&上一次值==1时,做为按键抬起有效,控制LED发生状态翻转。
主要程序如下:while(1){EALLOW;last_Key_SW12 = new_Key_SW12; //保存旧值new_Key_SW12 = Key_SW12();//读取新值if( last_Key_SW12==0 && new_Key_SW12==1)LD3_TOGGLE();EDIS;}经实际测试,上述程序可以实现LD3的翻转,基本达到设计要求。
但是在测试过程中,时好时坏,有时能够看见LED快速翻转,说明按键有抖动的情况,这里可以考虑IO口滤波,即在初始化时,设置IO采样周期以及量化串口,设置如下:采样周期设置为200时,不再出现抖动现象,按键稳定操作。
源程序如下:#include"DSP2833x_Device.h"// DSP2833x Headerfile Include File#include"DSP2833x_Examples.h"// DSP2833x Examples Include File#define LD3_ON() GpioDataRegs.GPACLEAR.bit.GPIO0 = 1#define LD3_OFF() GpioDataRegs.GPASET.bit.GPIO0 = 1#define LD3_TOGGLE() GpioDataRegs.GPATOGGLE.bit.GPIO0 = 1#define LD4_ON() GpioDataRegs.GPBCLEAR.bit.GPIO34 = 1#define LD4_OFF() GpioDataRegs.GPBSET.bit.GPIO34 = 1#define Key_SW12() GpioDataRegs.GPBDAT.bit.GPIO50/** main.c*/int main(void) {unsigned char last_Key_SW12=1;//保留上一次扫描结果,上电默认为未按下状态unsigned char new_Key_SW12=1;//保留当前扫描结果,上电默认为未按下状态InitSysCtrl();DINT;IER = 0x0000;IFR = 0x0000;InitPieCtrl();InitPieVectTable();InitGpio();EALLOW;//GPIO0 LD3 控制LED负极GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0;//0 gpio modeGpioCtrlRegs.GPADIR.bit.GPIO0 = 1;//1 output 0 inputGpioCtrlRegs.GPAPUD.bit.GPIO0 = 0;//1 enable pullup 0 disable pullup//GPIO34 LD4 控制LED负极GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 0;//0 gpio modeGpioCtrlRegs.GPBDIR.bit.GPIO34 = 1;//1 output 0 inputGpioCtrlRegs.GPBPUD.bit.GPIO34 = 0;//1 enable pullup 0 disable pullup//GPIO50 按键矩阵SW12输入端GpioCtrlRegs.GPBMUX2.bit.GPIO50 = 0;//0 gpio modeGpioCtrlRegs.GPBDIR.bit. GPIO50 = 0;//1 output 0 inputGpioCtrlRegs.GPBPUD.bit. GPIO50 = 0;//1 enable pullup 0 disable pullupGpioCtrlRegs.GPBCTRL.bit.QUALPRD2= 200;//采样周期=2*Tsysclkout*200GpioCtrlRegs.GPBQSEL2.bit.GPIO50 = 2;//采样窗内3次采样结构相同//GPIO53 按键矩阵负极输出0GpioCtrlRegs.GPBMUX2.bit.GPIO53 = 0;//0 gpio modeGpioCtrlRegs.GPBDIR.bit. GPIO53 = 1;//1 output 0 inputGpioCtrlRegs.GPBPUD.bit. GPIO53 = 0;//1 enable pullup 0 disable pullupGpioDataRegs.GPBCLEAR.bit.GPIO53 = 1;LD3_ON();//默认输出亮状态LD4_OFF();EDIS;while(1){EALLOW;last_Key_SW12 = new_Key_SW12; //保存旧值new_Key_SW12 = Key_SW12();//读取新值if( last_Key_SW12==0 && new_Key_SW12==1)LD3_TOGGLE();EDIS;}}。
题问译编致导对不置设因免避,作工的置设多很少减以可样这,码代 的己自改修上础基序程个这在,板模的序程用应发开其为作件文个这考参以可户用、1:注 。
间时烁闪和式方烁闪的要想己自到得 码代变改来,果结的要想己自据根可户用。
烁闪)31D-01D(管极二光发个4 上板到看可则 行运速全 )5F键捷快(NUR>-gubeD、6 niaM OG>-gubeD、5)同下以(margorP daoL>-eliF、3 。
件文 tuo. 载加步 3 第到接直,步这过跳以可也时用使次一第:明说 :钮按的下如是就。
接链译编,LLA dliubeR或 dliuB>-tcejorP、2。
件文程工的中录目该开打,nepO>-tcejorP、1 :下如作操中境环 SCC 在 DEL_0remiT_53382QZ_10xE录目在所序程验实闪灯0器时定部内、1软件实验讲解司公限有技科子电零零肥合margorP daoL>-eliF、3 。
件文 tuo. 载加步 3 第到接直,步这过跳以可也时用使次一第:明说 。
接链译编,LLA dliubeR>-tcejorP、2。
件文程工的中录目该开打,nepO>-tcejorP、1 :下如作操的中 3.3SCC 在 。
GES8_IPS_53382QZ_20xE录目在所序程验实示显管码数IPS .2。
件文 TUO.的新成生下 gubeD在而进,下一译编新重要需码代的过变改户用、2司公限有技科子电零零肥合margorP daoL>-eliF、3 。
件文 tuo. 载加步 3 第到接直,步这过跳以可也时用使次一第:明说 。
接链译编,LLA dliubeR>-tcejorP、2。
件文程工的中录目该开打,nepO>-tcejorP、1 :下如作操的中 3.3SCC 在 。
ZZUB_53382QZ_30xE录目在所序程验实制控器鸣蜂OIPG 、3 、3。
28335实验指导书TMS320F28335实验板2016.6.16目录1 调试工具安装与使用说明 (1)1.1 CCS3.3安装 (1)2 CCS入门实验 (7)2.1 实验目的 (7)2.2 实验内容 (7)2.3实验背景知识 (7)2.3.1 CCS简介 (7)2.3.2 使用CCS常遇见文件简介 (7)2.3.3 CCS常用指令简介 (9)2.4 实验准备 (11)2.5 实验步骤 (11)2.5.1 创建源文件 (11)2.5.2 创建工程文件 (12)3 CPU定时器控制实验 (18)3.1实验目的 (18)3.2 实验内容 (18)3.3 实验背景知识 (18)3.4 实验要求 (19)3.5 实验程序功能与结构说明 (19)3.5.1 定时器实验主文件 (19)3.5.2 程序流程图 (19)3.5.3 实验准备 (20)3.5.4 实验步骤 (21)4 片内RAM仿真实验 (22)4.1 实验目的 (22)4.2 实验内容 (22)4.3 实验要求 (22)4.4 实验程序功能与结构说明 (22)4.4.1 Ramtest实验文件 (22)4.4.2 实验准备 (22)4.4.3 实验步骤 (22)5 FFT仿真实验 (23)5.1 实验目的 (23)5.2 实验内容 (23)5.3 实验背景知识 (23)5.4 实验要求 (24)5.5 实验程序功能与结构说明 (24)5.5.1 FFT实验文件 (24)5.5.2 实验准备 (24)5.5.3 实验步骤 (24)1 调试工具安装与使用说明1.1 CCS3.3安装注:此教程是在win7系统下的教程(64位和32位均可),若有360安全卫士,安装前请关闭。
(1)先从TI官网上下载CCS3.3安装软件或从网上搜索下载(大小:550M左右),点击setup.exe图标开始安装,如图1所示。
图1 文件信息(2)点击后出现下图2所示界面,并点击Next继续图2 安装界面(3)一直点击Next出现下图3所示界面后,选择Typical Install。
TMS320F28335串口通信实验实验目的:掌握TMS320F28335串口的使用;实现功能:1、与电脑232 接口通讯,波特率9600 8N1;2、电脑发送数据,开发板原数据返回;基础知识:TMS320F28335的3个功能相同的SCIA、SCIB、SCIC模块,都可以看做是UART串口;每个串口各有一个接收器、一个发送器。
接收器和发送器各有一个16级深度的FIFO,他们都还有自己的使能和中断位。
若要使SCI模块工作,DSP需要做如下设置:◆使用GPIOMUX寄存器将对于的GPIO设置为SCIx功能;◆将sysclkout经过低速预定标器之后输出低速时钟LSPCLK供给SCIx;◆使能SCIx相关时钟,即PCLKCR寄存器中的SCIxENCLK置1;◆通信格式、波特率、需要用到FIFO的情况,可以使能FIFO、使能中断等;实现步骤:1、初始化串口IO引进为串口功能;开发板串口连接图,如上图,XRnW为SCITXDA、GPIO35复用引脚;XZCS0n为SCIRXDA、GPIO36复用引脚;2、设置串口相关寄存器、波特率等;3、设置串口中断接收函数;4、设置串口查询发送函数;遇到的问题:1、中断发生后,要记得清PIEACK中断响应寄存器,否则只中断一次,以后再也不进入中断了,串口中断在读数据后会自动清中断标志。
每个外设中断响应后,一定要对PIEACK的相关位进行软件复位,否则同组内的其他中断都不会被响应。
2、了解SCI功能应参考《MS320x2833x, 2823x Serial Communications Interface (SCI)》3、串口端口IO设置成内部上拉、Rx端还应设为异步输入;具体SCI部分程序如下:/** ======= sci_uart ========*** Created on: 2017年9月19日* Author: liu*/#include"DSP2833x_Device.h"// DSP2833x Header File#include"DSP2833x_Examples.h"// DSP2833x Examples Include File#include"sci_uart.h"__interrupt void sciaRxIsr(void);/** ======== sci_uart_init ========*/void SCIA_uart_init(void){//GPIO35、36复用功能选择EALLOW;GpioCtrlRegs.GPBMUX1.bit.GPIO35 = 1 ; //SCIA_TXDAGpioCtrlRegs.GPBMUX1.bit.GPIO36 = 1 ; //SCIA_RXDAGpioCtrlRegs.GPBPUD.bit.GPIO35 = 0; // Enable pull-up for GPIO29 (SCITXDA)GpioCtrlRegs.GPBPUD.bit.GPIO36 = 0; // Enable pull-up for GPIO28 (SCIRXDA)//定义管脚为异步输入GpioCtrlRegs.GPBDIR.bit.GPIO36 = 0 ;//输入GpioCtrlRegs.GPBQSEL1.bit.GPIO36 = 3;//异步输入EDIS;//基本通信参数设置// Note: Clocks were turned on to the SCIA peripheral// in the InitSysCtrl() functionSciaRegs.SCICCR.all =0x0007; // 1 stop bit, No loopback// No parity,8 char bits,// async mode, idle-line protocolSciaRegs.SCICTL1.all =0x0003; // enable TX, RX, internal SCICLK,// Disable RX ERR, SLEEP, TXWAKESciaRegs.SCICTL2.all =0x0003;SciaRegs.SCICTL2.bit.TXINTENA =0; //查询发送SciaRegs.SCICTL2.bit.RXBKINTENA =1;//中断接收SciaRegs.SCIHBAUD=488>>8;// 9600 135MHz@LSPCLK = 33.75MHz /(9600*8)-1=4394 150MHz@LSPCLK = 37.5MHz /(9600*8)-1=488SciaRegs.SCILBAUD=488;SciaRegs.SCICTL1.all =0x0023; // Relinquish SCI from Reset// Initialize the SCI FIFO 禁止FIFO功能SciaRegs.SCIFFTX.bit.SCIFFENA = 0 ; //禁止SCI FIFO功能EALLOW;// This is needed to write to EALLOW protected registersPieVectTable.SCIRXINTA = &sciaRxIsr;EDIS;// This is needed to disable write to EALLOW protected registersPieCtrlRegs.PIEIER9.bit.INTx1=1;// PIE Group 9, int1IER |= M_INT9;// Enable CPU INTEINT;}void SCIA_UART_Send_Byte( unsigned char Dat){while(SciaRegs.SCICTL2.bit.TXRDY !=1);//等待SCIRXBUF准备好才写入下一个所要发送的数据SciaRegs.SCITXBUF = Dat;}//SCIA串口中断接收处理函数__interrupt void sciaRxIsr(void){if(SciaRegs.SCIRXST.bit.RXRDY == 1){SCIA_UART_Send_Byte( SciaRegs.SCIRXBUF.bit.RXDT );}PieCtrlRegs.PIEACK.all=PIEACK_GROUP9;}。
DSP28335的调试总结,这是一份总结很全面的资料,我在学习开发板的一些总结,希望能得到同行的帮助,愿与大家一起学习和分享1DSP的PWM信号1.1简介DSP28335共12路16位的ePWM,能进行频率和占空比控制。
ePWM的时钟TBCLK=SYSCLKOUT/(HSPCLKDIV×CLKDIV):PWM信号频率由时基周期寄存器TBPDR和时基计数器的计数模式决定。
初始化程序采用的计数模式为递增计数模式。
在递增计数模式下,时基计数器从零开始增加,直到达到周期寄存器值(TBPDR)。
然后时基计数器复位到零,再次开始增加。
PWM信号周期与频率的计算如下:1.2端口对应关系说明:JP0B的端口号按“Z”字形顺序数。
1.3初始化程序注释void InitPwm1AB(float32f){Uint16T= 2343750/f-1.0;//系统时钟SYSCLKOUT=150MHz,TBCLK=6.6666667ns,在连续增计数模式下,f=150000000/(TBPDR+1) EALLOW;//先初始化通用输入输出口//GpioCtrlRegs.GPAPUD.bit.GPIO0 = 0;GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 1;GpioCtrlRegs.GPAPUD.bit.GPIO1 = 0;GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 1;EPwm1Regs.TBPHS.half.TBPHS= 0; // 在相位寄存器中设置计数器的起始计数位置//下面两条语句组合对PWM的时钟进行分频EPwm1Regs.TBCTL.bit.CLKDIV = 6;EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0;EPwm1Regs.TBPRD = T; //在周期寄存器中设置计数器的计数周期//TBCTL为定时器控制寄存器EPwm1Regs.TBCTL.bit.CTRMODE= TB_COUNT_UP; //设置计数模式位为连续增计数模式,产生对称方波EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // 将定时器相位使能位关闭EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;//映射寄存器SHADOW使能并配置映射寄存器为自动读写EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO; // 定时器时钟源选择,一共有四种时钟源EPwm1Regs.CMPA.half.CMPA= 0.0001*T;// 设置EPWM1A比较值寄存器的比较值,即体现EPWM1A的占空比EPwm1Regs.CMPB= 0.0001*T;EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;//A模块比较模式EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;//B模块比较模式EPwm1Regs.CMPCTL.bit.LOADAMODE= CC_CTR_ZERO; // A模块比较使能,通过写0来清除SHDWAMODE位来使能load on CTR=ZeroEPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; // B模块比较使能,通过写0来清除SHDWBMODE位来使能load on CTR=Zero//AQCTLA为输出A比较方式控制寄存器EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET; // TBCTR(计数器)计到零时使输出为反向EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;//TBCTR(计数器)与CMPA在up 计数时相等使输出为high,这关系的输出的占空比EPwm1Regs.AQCTLB.bit.ZRO = AQ_SET;EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR;EDIS;}2DSP的CAN通信2.1CAN2.0B协议简述TMS320F28335上有2个增强型CAN总线控制器,符合CAN2.0B协议,其总线波特率可达到1Mbps。
实验一(A)、CCS入门实验(C语言的使用)一、实验目的:1. 学习用标准C 语言编制程序;了解常用的C 语言程序设计方法和组成部分。
2. 熟悉使用软件仿真方式调试程序。
二、实验内容:1. DSP源文件的建立;2. DSP程序工程文件的建立;3. 掌握C语言在DSP中的应用。
三、实验背景知识:当使用标准C 语言编制的程序时,其源程序文件名的后缀应为.c。
CCS 在编译标准C 语言程序时,首先将其编译成相应汇编语言程序,再进一步编译成目标DSP 的可执行代码。
最后生成的是coff 格式的可下载到DSP 中运行的文件,其文件名后缀为.out。
由于使用C 语言编制程序,其中调用的标准C 的库函数由专门的库提供,在编译连接时编译系统还负责构建C 运行环境。
所以用户工程中需要注明使用C 的支持库。
(一)实验程序,包含文件:1. add.c:实验的主程序。
2. 28335.gel:系统初始化3. 28335.cmd: 声明了系统的存储器配置与程序各段的连接关系。
(二)实验准备:首先将光盘下03. Examples of Program \ 04. SEED-DTK28335实验程序\CCS使用实验目录下的3.1.2 c_add的文件夹拷贝到D:盘根目录下。
1. 将DSP仿真器与计算机连接好;2. 将DSP仿真器的JTAG插头与SEED-DEC28335单元的J18相连接;3. 打开SEED-DTK28335的电源。
观察SEED-DTK_MBoard单元的+5V,+3.3V,+15V,-15V的电源指示灯灯以及SEED-DEC28335的电源指示灯D2是否均亮;若有不亮的,请断开电源,检查电源。
(三)实验步骤:1. 双击图标进入CCS环境。
2. 按照下图所示添加工程pjt文件,点击Project →open命令3. 在弹出的对话框中选中cadd.pjt文件添加该工程文件。
4. 按照下图所示添加gel文件,即右键点击工程视窗中的GEL files,在弹出的菜单中选择laod gel 命令。
继续我的第二个实验;实现按键控制LED亮灭:功能描述:上电默认 LD3 亮;触动一次按键 SW12,LD3 灭再按一次按键 SW12, LD3亮再触动一次按键SW12,LD3 灭再按一次按键 SW12, LD3亮。
实现每触动一次按键, LED执行一次由亮到灭,或者由灭到亮,也就是实现一次状态反转。
电路连接说明:LD3 设置为通用 GPIO 上拉输出初始化后默认为输出 LD3 亮状态; LD3 控制LED灯的负极,如下图;SW12 设置为通用 GPIO 上拉输入该引脚应用滤波功能,且仅在按键抬起时控制 LD3状态发生变化。
按键电路如上图, GPIO53须输出 0,当按键按下时,读取 GPIO50端口值,为 0,当按键未按下时, GPIO50因为上上拉作用,其端口值为 1。
程序设计说明:按键的读取采用实时扫描的方式(非中断方式),功能要求在按键抬起后发生 LED状态翻转;所以要记录上一次按键值,并且将当前值==0&&上一次值==1 时,做为按键抬起有效,控制LED发生状态翻转。
主要程序如下:while(1){EALLOW;last_Key_SW12 = new_Key_SW12;// 保存旧值new_Key_SW12 = Key_SW12();// 读取新值if ( last_Key_SW12==0 && new_Key_SW12==1)LD3_TOGGLE();EDIS;}经实际测试,上述程序可以实现 LD3的翻转,基本达到设计要求。
但是在测试过程中,时好时坏,有时能够看见 LED快速翻转,说明按键有抖动的情况,这里可以考虑 IO 口滤波,即在初始化时,设置 IO 采样周期以及量化串口,设置如下:采样周期设置为 200 时,不再出现抖动现象,按键稳定操作。
源程序如下:#include"DSP2833x_Device.h"// DSP2833x Headerfile Include File#include"DSP2833x_Examples.h"// DSP2833x Examples Include File#define LD3_ON()GpioDataRegs.GPACLEAR.bit.GPIO0= 1#define LD3_OFF()GpioDataRegs.GPASET.bit.GPIO0= 1#define LD3_TOGGLE()GpioDataRegs.GPATOGGLE.bit.GPIO0= 1#define LD4_ON()GpioDataRegs.GPBCLEAR.bit.GPIO34= 1#define LD4_OFF()GpioDataRegs.GPBSET.bit.GPIO34= 1#define Key_SW12()GpioDataRegs.GPBDAT.bit.GPIO50/**main.c*/int main ( void ) {unsigned char last_Key_SW12=1; // 保留上一次扫描结果,上电默认为未按下状态unsigned char new_Key_SW12=1; // 保留当前扫描结果,上电默认为未按下状态InitSysCtrl();DINT;IER = 0x0000;IFR = 0x0000;InitPieCtrl();InitPieVectTable();InitGpio();EALLOW;//GPIO0 LD3控制 LED负极GpioCtrlRegs.GPAMUX1. bit. GPIO0= 0;//0 gpio modeGpioCtrlRegs.GPADIR. bit. GPIO0= 1;//1 output0 input GpioCtrlRegs.GPAPUD. bit. GPIO0= 0;//1 enable pullup 0 disable pullup//GPIO34 LD4控制 LED负极GpioCtrlRegs.GPBMUX1. bit. GPIO34 = 0;//0 gpio modeGpioCtrlRegs.GPBDIR. bit. GPIO34= 1;//1 output0 input GpioCtrlRegs.GPBPUD. bit. GPIO34= 0;//1 enable pullup 0 disable pullup//GPIO50按键矩阵 SW12输入端GpioCtrlRegs.GPBMUX2. bit. GPIO50= 0;//0 gpio modeGpioCtrlRegs.GPBDIR. bit.GPIO50= 0;//1 output0 input GpioCtrlRegs.GPBPUD. bit.GPIO50= 0;//1 enable pullup 0 disable pullup GpioCtrlRegs.GPBCTRL. bit. QUALPRD2= 200;// 采样周期 =2*Tsysclkout*200 GpioCtrlRegs.GPBQSEL2. bit. GPIO50 = 2;//采样窗内 3次采样结构相同//GPIO53按键矩阵负极输出0GpioCtrlRegs.GPBMUX2. bit. GPIO53= 0;//0 gpio modeGpioCtrlRegs.GPBDIR. bit.GPIO53= 1;//1 output0 input GpioCtrlRegs.GPBPUD. bit.GPIO53= 0;//1 enable pullup 0 disable pullup GpioDataRegs.GPBCLEAR. bit. GPIO53 = 1;LD3_ON(); // 默认输出亮状态LD4_OFF();EDIS;while(1){EALLOW;last_Key_SW12 = new_Key_SW12;// 保存旧值new_Key_SW12 = Key_SW12();// 读取新值if ( last_Key_SW12==0 && new_Key_SW12==1)LD3_TOGGLE();EDIS;}}。
// main函数#include"DSP2833x_Device.h"// DSP2833x Headerfile Include File #include"DSP2833x_Examples.h"// DSP2833x Examples Include File #include"sci.h"#define NUM 10// Prototype statements for functions found within this file.void SCI_Operation();void SCIA_Operation(void);void SCIB_Operation(void);void SCIC_Operation(void);void sci_config_init(void);void scia_config_init(void);void scib_config_init(void);void scic_config_init(void);void SCI_FIFO_Init(void);void SCIA_FIFO_Init(void);void SCIB_FIFO_Init(void);void SCIC_FIFO_Init(void);void SCIA_Character_Send_Msg(char character);void SCIB_Character_Send_Msg(char character);void SCIC_Character_Send_Msg(char character);void SCI_Send_Msg(char *message);void SCI_Send_Msg_Count(char count,char *message);char SCI_Receive_Buff();char SCIA_Receive_Buff(void);char SCIB_Receive_Buff(void);char SCIC_Receive_Buff(void);char *msg="\r\nHello Yan Xu!\0";char *message1={ "\r\nlearner the scic!\0"};char ReceivedChar;char LoopCount =0;void main(void){InitSysCtrl();Init_SCI_Gpio();InitXintf16Gpio();DINT;InitPieCtrl();IER = 0x0000;IFR = 0x0000;InitPieVectTable();SCI_FIFO_Init(); // Initialize the SCI FIFOsci_config_init(); // Initalize SCI for echobackSCI_Send_Msg(msg);SCI_Send_Msg_Count(NUM,message1);msg = "\r\nYou will enter a character, and the DSP will echo it back! \n\0"; SCI_Send_Msg(msg);while(LoopCount++<10){SCI_Operation();}}void SCI_Operation(){#if (DSP2833x_SCI_A)SCIA_Operation();#endif#if (DSP2833x_SCI_B)SCIB_Operation();#endif#if (DSP2833x_SCI_C)SCIC_Operation();#endif}void SCIA_Operation(void){msg = "\r\nEnter a character: \0";SCI_Send_Msg(msg);ReceivedChar = SCIA_Receive_Buff();// Echo character backmsg = " You sent: \0";SCI_Send_Msg(msg);SCIA_Character_Send_Msg(ReceivedChar);}void SCIB_Operation(void){msg = "\r\nEnter a character: \0";SCI_Send_Msg(msg);ReceivedChar = SCIB_Receive_Buff();// Echo character backmsg = " You sent: \0";SCI_Send_Msg(msg);SCIB_Character_Send_Msg(ReceivedChar);}void SCIC_Operation(void){msg = "\r\nEnter a character: \0";SCI_Send_Msg(msg);ReceivedChar = SCIC_Receive_Buff();// Echo character backmsg = " You sent: \0";SCI_Send_Msg(msg);SCIC_Character_Send_Msg(ReceivedChar);}void sci_config_init(void){#if (DSP2833x_SCI_A)// Test 1,SCIA DLB, 8-bit word, baud rate 0x000F, default, 1 STOP bit, no parity scia_config_init();#endif#if (DSP2833x_SCI_B)// Test 1,SCIA DLB, 8-bit word, baud rate 0x000F, default, 1 STOP bit, no parity scib_config_init();#endif#if (DSP2833x_SCI_C)// Test 1,SCIA DLB, 8-bit word, baud rate 0x000F, default, 1 STOP bit, no parity scic_config_init();#endif}// Test 1,SCIA DLB, 8-bit word, baud rate 0x000F, default, 1 STOP bit, no parity void scia_config_init(){// Note: Clocks were turned on to the SCIA peripheral// in the InitSysCtrl() functionSciaRegs.SCICCR.all =0x0007; // 1 stop bit, No loopback// No parity,8 char bits,// async mode, idle-line protocol SciaRegs.SCICTL1.all =0x0003; // enable TX, RX, internal SCICLK,// Disable RX ERR, SLEEP, TXWAKE SciaRegs.SCICTL2.all =0x0003;SciaRegs.SCICTL2.bit.TXINTENA = 1;SciaRegs.SCICTL2.bit.RXBKINTENA =1;#if (CPU_FRQ_150MHZ)SciaRegs.SCIHBAUD =0x0001; // 9600 baud @LSPCLK = 37.5MHz.SciaRegs.SCILBAUD =0x00E7;#endif#if (CPU_FRQ_100MHZ)SciaRegs.SCIHBAUD =0x0001; // 9600 baud @LSPCLK = 20MHz.SciaRegs.SCILBAUD =0x0044;#endifSciaRegs.SCICTL1.all =0x0023; // Relinquish SCI from Reset}// Test 1,SCIA DLB, 8-bit word, baud rate 0x000F, default, 1 STOP bit, no parityvoid scib_config_init(){// Note: Clocks were turned on to the SCIA peripheral// in the InitSysCtrl() functionScibRegs.SCICCR.all =0x0007; // 1 stop bit, No loopback// No parity,8 char bits,// async mode, idle-line protocol ScibRegs.SCICTL1.all =0x0003; // enable TX, RX, internal SCICLK,// Disable RX ERR, SLEEP, TXWAKE ScibRegs.SCICTL2.all =0x0003;ScibRegs.SCICTL2.bit.TXINTENA = 1;ScibRegs.SCICTL2.bit.RXBKINTENA =1;#if (CPU_FRQ_150MHZ)ScibRegs.SCIHBAUD =0x0001; // 9600 baud @LSPCLK = 37.5MHz.ScibRegs.SCILBAUD =0x00E7;#endif#if (CPU_FRQ_100MHZ)ScibRegs.SCIHBAUD =0x0001; // 9600 baud @LSPCLK = 20MHz.ScibRegs.SCILBAUD =0x0044;#endifScibRegs.SCICTL1.all =0x0023; // Relinquish SCI from Reset}// Test 1,SCIA DLB, 8-bit word, baud rate 0x000F, default, 1 STOP bit, no parity void scic_config_init(){// Note: Clocks were turned on to the SCIA peripheral// in the InitSysCtrl() functionScicRegs.SCICCR.all =0x0007; // 1 stop bit, No loopback// No parity,8 char bits,// async mode, idle-line protocol ScicRegs.SCICTL1.all =0x0003; // enable TX, RX, internal SCICLK,// Disable RX ERR, SLEEP, TXWAKE ScicRegs.SCICTL2.all =0x0003;ScicRegs.SCICTL2.bit.TXINTENA = 1;ScicRegs.SCICTL2.bit.RXBKINTENA =1;#if (CPU_FRQ_150MHZ)ScicRegs.SCIHBAUD =0x0001; // 9600 baud @LSPCLK = 37.5MHz.ScicRegs.SCILBAUD =0x00E7;#endif#if (CPU_FRQ_100MHZ)ScicRegs.SCIHBAUD =0x0001; // 9600 baud @LSPCLK = 20MHz.ScicRegs.SCILBAUD =0x0044;#endifScicRegs.SCICTL1.all =0x0023; // Relinquish SCI from Reset}// Transmit a character from the SCIvoid SCIA_Character_Send_Msg(char character){while(SciaRegs.SCICTL2.bit.TXRDY==0){}SciaRegs.SCITXBUF=character;}void SCIB_Character_Send_Msg(char character) {while(ScibRegs.SCICTL2.bit.TXRDY==0){}ScibRegs.SCITXBUF=character;}void SCIC_Character_Send_Msg(char character) {while(ScicRegs.SCICTL2.bit.TXRDY==0){}ScicRegs.SCITXBUF=character;}void SCI_FIFO_Init(){#if (DSP2833x_SCI_A)SCIA_FIFO_Init();#endif#if (DSP2833x_SCI_B)SCIB_FIFO_Init();#endif#if (DSP2833x_SCI_C)SCIC_FIFO_Init();#endif}// Initalize the SCI FIFOvoid SCIA_FIFO_Init(){SciaRegs.SCIFFTX.all=0x8000;}// Initalize the SCI FIFOvoid SCIB_FIFO_Init(){ScibRegs.SCIFFTX.all=0x8000;}// Initalize the SCI FIFOvoid SCIC_FIFO_Init(){ScicRegs.SCIFFTX.all=0x8000;// ScicRegs.SCIFFRX.all=0x204f;// ScicRegs.SCIFFCT.all=0x0;}char SCI_Receive_Buff(){#if (DSP2833x_SCI_A)return( SCIA_Receive_Buff());#endif#if (DSP2833x_SCI_B)return (SCIB_Receive_Buff());#endif#if (DSP2833x_SCI_C)return (SCIC_Receive_Buff());#endif}char SCIA_Receive_Buff(){ // Wait for inc characterwhile(SciaRegs.SCIRXST.bit.RXRDY!=1) { } // wait for XRDY =1 for empty state // Get characterreturn SciaRegs.SCIRXBUF.all;}char SCIB_Receive_Buff(){ // Wait for inc characterwhile(ScibRegs.SCIRXST.bit.RXRDY!=1) { } // wait for XRDY =1 for empty state // Get characterreturn ScibRegs.SCIRXBUF.all;}char SCIC_Receive_Buff(){ // Wait for inc characterwhile(ScicRegs.SCIRXST.bit.RXRDY!=1) { } // wait for XRDY =1 for empty state // Get characterreturn ScicRegs.SCIRXBUF.all;}void SCI_Send_Msg(char *message){int i=0;while(message[i++]!='\0'){#if(DSP2833x_SCI_A)SCIA_Character_Send_Msg(message[i]);#endif#if(DSP2833x_SCI_B)SCIB_Character_Send_Msg(message[i]);#endif#if(DSP2833x_SCI_C)SCIC_Character_Send_Msg(message[i]);#endif}}void SCI_Send_Msg_Count(char count,char *message){while(count--){SCI_Send_Msg(message);}}//=========================================================================== // No more.//=========================================================================== //=========================================================================== // sci.c文件//===========================================================================#include"DSP2833x_Device.h"// DSP2833x Headerfile Include File#include"DSP2833x_Examples.h"// DSP2833x Examples Include File#include"sci.h"void Init_SCI_Gpio(){#if DSP2833x_SCI_AInitSCIAGpio();#endif#if DSP2833x_SCI_BInitSCIBGpio();#endif#if DSP2833x_SCI_CInitSCICGpio();#endif}void InitSCIAGpio(void){EALLOW;//ENBALE PULL-UP FUNCTIONGpioCtrlRegs.GPBPUD.bit.GPIO36= 0; // Enable pull-up for GPIO28 (SCIRXDA) GpioCtrlRegs.GPBPUD.bit.GPIO35 = 0; // Enable pull-up for GPIO29 (SCITXDA)GpioCtrlRegs.GPBQSEL1.bit.GPIO35 = 3; // Asynch input GPIO28 (SCIRXDA) GpioCtrlRegs.GPBQSEL1.bit.GPIO36 = 3;GpioCtrlRegs.GPBMUX1.bit.GPIO36 = 1; // Configure GPIO28 for SCIRXDA operationGpioCtrlRegs.GPBMUX1.bit.GPIO35 = 1; // Configure GPIO29 for SCITXDA operation#if 0GpioCtrlRegs.GPAPUD.bit.GPIO28 = 0; // Enable pull-up for GPIO28 (SCIRXDA) GpioCtrlRegs.GPAPUD.bit.GPIO29 = 0; // Enable pull-up for GPIO29 (SCITXDA)GpioCtrlRegs.GPAMUX2.bit.GPIO28 = 1; // Configure GPIO28 for SCIRXDA operationGpioCtrlRegs.GPAMUX2.bit.GPIO29 = 1; // Configure GPIO29 for SCITXDA operation#endifEDIS;}void InitSCIBGpio(){EALLOW;/* Enable internal pull-up for the selected pins */// Pull-ups can be enabled or disabled disabled by the user.// This will enable the pullups for the specified pins.// Comment out other unwanted lines.// GpioCtrlRegs.GPAPUD.bit.GPIO9 = 0; // Enable pull-up for GPIO9 (SCITXDB) GpioCtrlRegs.GPAPUD.bit.GPIO14 = 0; // Enable pull-up for GPIO14 (SCITXDB) //GpioCtrlRegs.GPAPUD.bit.GPIO18 = 0; // Enable pull-up for GPIO18 (SCITXDB)// GpioCtrlRegs.GPAPUD.bit.GPIO22 = 0; // Enable pull-up for GPIO22 (SCITXDB) // GpioCtrlRegs.GPAPUD.bit.GPIO11 = 0; // Enable pull-up for GPIO11 (SCIRXDB) GpioCtrlRegs.GPAPUD.bit.GPIO15 = 0; // Enable pull-up for GPIO15 (SCIRXDB) // GpioCtrlRegs.GPAPUD.bit.GPIO19 = 0; // Enable pull-up for GPIO19 (SCIRXDB)// GpioCtrlRegs.GPAPUD.bit.GPIO23 = 0; // Enable pull-up for GPIO23 (SCIRXDB) /* Set qualification for selected pins to asynch only */// This will select asynch (no qualification) for the selected pins.// Comment out other unwanted lines.// GpioCtrlRegs.GPAQSEL1.bit.GPIO11 = 3; // Asynch input GPIO11 (SCIRXDB)GpioCtrlRegs.GPAQSEL1.bit.GPIO15 = 3; // Asynch input GPIO15 (SCIRXDB)//GpioCtrlRegs.GPAQSEL2.bit.GPIO19 = 3; // Asynch input GPIO19 (SCIRXDB)// GpioCtrlRegs.GPAQSEL2.bit.GPIO23 = 3; // Asynch input GPIO23 (SCIRXDB)/* Configure SCI-B pins using GPIO regs*/// This specifies which of the possible GPIO pins will be SCI functional pins. // Comment out other unwanted lines.// GpioCtrlRegs.GPAMUX1.bit.GPIO9 = 2; // Configure GPIO9 for SCITXDB operationGpioCtrlRegs.GPAMUX1.bit.GPIO14= 2; // Configure GPIO14 for SCITXDB operation //GpioCtrlRegs.GPAMUX2.bit.GPIO18 = 2; // Configure GPIO18 for SCITXDB operation// GpioCtrlRegs.GPAMUX2.bit.GPIO22 = 3; // Configure GPIO22 for SCITXDB operation// GpioCtrlRegs.GPAMUX1.bit.GPIO11 = 2; // Configure GPIO11 for SCIRXDB operationGpioCtrlRegs.GPAMUX1.bit.GPIO15= 2; // Configure GPIO15 for SCIRXDB operation // GpioCtrlRegs.GPAMUX2.bit.GPIO19 = 2; // Configure GPIO19 for SCIRXDB operation// GpioCtrlRegs.GPAMUX2.bit.GPIO23 = 3; // Configure GPIO23 for SCIRXDB operationEDIS;}void InitSCICGpio(){EALLOW;/* Enable internal pull-up for the selected pins */// Pull-ups can be enabled or disabled disabled by the user.// This will enable the pullups for the specified pins.GpioCtrlRegs.GPBPUD.bit.GPIO62= 0; // Enable pull-up for GPIO62 (SCIRXDC) GpioCtrlRegs.GPBPUD.bit.GPIO63 = 0; // Enable pull-up for GPIO63 (SCITXDC)/* Set qualification for selected pins to asynch only */// Inputs are synchronized to SYSCLKOUT by default.// This will select asynch (no qualification) for the selected pins.GpioCtrlRegs.GPBQSEL2.bit.GPIO62 = 3; // Asynch input GPIO62 (SCIRXDC)/* Configure SCI-C pins using GPIO regs*/// This specifies which of the possible GPIO pins will be SCI functional pins.GpioCtrlRegs.GPBMUX2.bit.GPIO62 = 1; // Configure GPIO62 for SCIRXDC operationGpioCtrlRegs.GPBMUX2.bit.GPIO63 = 1; // Configure GPIO63 for SCITXDC operationEDIS;}//=========================================================================== // sci头文件//=========================================================================== #ifndef SCI_H_#define SCI_H_#define DSP2833x_SCI_A 0#define DSP2833x_SCI_B 0#define DSP2833x_SCI_C 1void Init_SCI_Gpio();void InitSCIAGpio(void);void InitSCIBGpio(void);void InitSCICGpio(void);#endif。
XXXXXX大学研究生实验报告课程名称:DSP技术应用综合设计名称:电量参数计算和发送学生姓名:班级学号:学科名称:2012年5月25日一、综合实验题目和要求1、实验设计要求要求1:对给定的波形信号,采用TMS320F28335的浮点功能计算该信号的以下时域参数:信号的周期T(频率f也需要计算),信号的均方根大小V rms、平均值V avg (即直流量)、峰峰值V pp。
其中,均方根V rms的计算公式(数字量的离散公式)如下:rmsV=式中,N为采样点数,u(i)为采样序列中的第i个采样点。
要求2:所设计的软件需要计算采样的波形周期个数,并控制采样点数大于1个波形周期,小于3个波形周期大小。
要求3:对采样的数据通过串口发送至PC界面。
2、实验目的主要考核学生对TMS320F28335浮点处理器、A/D模块、SCI模块和信号时域分析等知识的掌握。
产生的波形可选择正弦波,也可以是其它任意波形。
如果波形中添加了随机噪声,则建议采用软件设计中加入数字滤波算法,否则可能计算中产生较大的误差。
实验所需的频率不能太大,(建议范围:10Hz~100kHz),采样点建议在256点左右(自己任意设定也可,不少于32点)。
二、硬件框图图1 系统硬件框图图1 给出了该综合实验的硬件框图,首先通过小键盘设置波形的参数,包括频率、幅值以及波形等。
然后通过信号发生器产生模拟信号,由DSP28335的AD通道6进行采样处理。
DSP与PC机之间通过串口进行通信,由DSP28335的SCIb通道处理。
ADC模块有16个转换通道,可配置成两个独立的8通道转换模块,分别对应于管理器A和B,根据用户需求,两个独立的8通道转换模块可以级联成一个8通道模块,在ADC模块中尽管可以多通道输入和有两个排序器,但只有一个A/D转换器可以。
两个8通道模块可以自动对一系列转换进行排序,而且每个模块都可以通过多路复用开关选择任何一个通道。
在级联模式下,自动排序器将作为一个单一的8通道排序器。
合肥零零电子科技有限公司 软件实验讲解程序所在目录Ex01_POP28335_Timer0_LED 在 CCS 环境中操作如下: 1、Project->Open,打开该目录中的工程文件。
1、内部定时器0 内部定时器0灯闪实验2、Project->Build 或Rebuild ALL,编译链接。
就是如下的按钮: (以下同) 说明:第一次使用时也可以跳过这步,直接到第 3 步加载 .out 文件。
3、File->Load Program5、Debug->GO Main 6、Debug->RUN(快捷键F5) 全速运行 则可看到板上 4个发光二极管(D14-D17)闪烁。
用户可根据自己想要的结果,来改变代码 得到自己想要的闪烁方式和闪烁时间。
注:1、用户可以参考这个文件作为其开发应用程序的模板,在这个程序基础上修改自己的 代码,这样可以减少很多设置的工作,避免因设置不对导致编译问题。
合肥零零电子科技有限公司 2、用户改变过的代码需要重新编译一下,进而在Debug 下生成新的.OUT 文件。
程序所在目录Ex02_POP28335_SPI_8SEG_Static。
在 CCS3.3 中的操作如下: 1、Project->Open,打开该目录中的工程文件。
2. SPI数码管 数码管静态 静态显示实验 SPI数码管 静态显示实验2、Project->Rebuild ALL,编译链接。
说明:第一次使用时也可以跳过这步,直接到第 3 步加载 .out 文件。
3、File->Load Program合肥零零电子科技有限公司 4、Debug->GO Main 5、Debug->RUN(快捷键F5) 全速运行 可以看到板上数码管显示数字“28”。
程序中Uint16 showdata=28; 可修改这个值显示不同 数字。
程序所在目录Ex03_POP28335_SPI_8SEG。
在 CCS3.3 中的操作如下: 1、Project->Open,打开该目录中的工程文件。
3. SPI数码管 数码管计数 计数实验 SPI数码管 计数实验2、Project->Rebuild ALL,编译链接。
说明:第一次使用时也可以跳过这步,直接到第 3 步加载 .out 文件。
3、File->Load Program合肥零零电子科技有限公司 4、Debug->GO Main 5、Debug->RUN(快捷键F5) 全速运行 可以看到板上数码管从‘00’~‘60’循环显示。
实现一个秒表计数功能。
程序所在目录Ex04_POP28335_CPU_BUZZ。
在 CCS3.3 中的操作如下: 1、Project->Open,打开该目录中的工程文件。
4、 GPIO蜂鸣器控制实验 GPIO蜂鸣器控制实验2、Project->Rebuild ALL,编译链接。
说明:第一次使用时也可以跳过这步,直接到第 3 步加载 .out 文件。
合肥零零电子科技有限公司 3、File->Load Program4、Debug->GO Main 5、Debug->RUN(快捷键F5) 全速运行 可以听到蜂鸣器发出:do、re、mi、fa、so、la、xi。
注意:J23跳线记得要插好。
程序所在目录Ex05_POP28335_BUZZ。
在 CCS3.3 中的操作如下: 1、Project->Open,打开该目录中的工程文件。
5、蜂鸣器播放音乐实验 蜂鸣器播放音乐实验合肥零零电子科技有限公司 2、Project->Rebuild ALL,编译链接。
说明:第一次使用时也可以跳过这步,直接到第 3 步加载 .out 文件。
3、File->Load Program4、Debug->GO Main 5、Debug->RUN(快捷键F5) 全速运行 可以听到蜂鸣器发出不同节奏的音乐声。
注意:J23跳线记得要插好。
程序所在目录Ex06_POP28335_PWM_LED。
在 CCS3.3 中的操作如下: 1、Project->Open,打开该目录中的工程文件。
4、PWM定时器 PWM定时器LED 定时器LED闪烁 LED闪烁实验 闪烁实验合肥零零电子科技有限公司 2、Project->Rebuild ALL,编译链接。
说明:第一次使用时也可以跳过这步,直接到第 3 步加载 .out 文件。
3、File->Load Program4、Debug->GO Main 5、Debug->RUN(快捷键F5) 全速运行 可以看到板子上的D16和D17两个LED闪烁。
程序所在目录Ex07_POP28335_ExRAM。
7、 外扩 RAM 读写实验合肥零零电子科技有限公司 在 CCS3.3 中的操作如下: 1、Project->Open,打开该目录中的工程文件。
2、Project->Rebuild ALL,编译链接。
说明:第一次使用时也可以跳过这步,直接到第 3 步加载 .out 文件。
3、File->Load Program4、Debug->GO Main 5、Debug->RUN(快捷键F5),程序运行到下图OK地方停止表示外部SRAM读写数据正常,否 则停在error处。
合肥零零电子科技有限公司 另外此时可以再通过View->Memory 打开内存观察窗口,设起始地址为外扩RAM的起始地址 0x100000。
注意:起始地址是 0x100000,否则导致看不到数据!!另外记得输入地址以后要按下回车。
可以看到内存区域内是从 0x0000 依次递增的数据,说明内存操作正常。
如下图:程序所在目录Ex08_POP28335_NOR_FLASH。
在 CCS3.3 中的操作如下: 1、Project->Open,打开该目录中的工程文件。
8、 外扩 FLASH 读写实验合肥零零电子科技有限公司 2、Project->Rebuild ALL,编译链接。
说明:第一次使用时也可以跳过这步,直接到第 3 步加载 .out 文件。
3、File->Load Program4、Debug->GO Main 在如下图的位置设置断点合肥零零电子科技有限公司 Debug->RUN(快捷键F5),运行到断点后 再打开内存观察窗口(View->Memory),输入外扩的 FLASH 的起始地址为0x200000,则如 下图所示置: 注意:起始地址为0x200000 ,注意不是0x80000000,或者其他的数值,这点粗心的学习者经 常会弄错。
则可看到外扩 FLASH 中有一块全是从0 开始的顺序数, 这是刚才从初始化了的RAM 中读出, 然后写到到FLASH 中的,说明FLASH 操作正常。
程序所在目录Ex09_POP28335_KEY_LED。
在 CCS3.3 中的操作如下: 1、Project->Open,打开该目录中的工程文件。
9、按键控制LED 按键控制LED实验 LED实验合肥零零电子科技有限公司 2、Project->Rebuild ALL,编译链接。
说明:第一次使用时也可以跳过这步,直接到第 3 步加载 .out 文件。
3、File->Load Program4、Debug->GO Main 5、Debug->RUN(快捷键F5) 全速运行 分别按下板子上的K1、K2、K3、K4按键对应D14、D15、D16、D17的LED亮。
程序所在目录Ex10_POP28335_EXT_XINT。
在 CCS3.3 中的操作如下:10、 10、外部中断控制实验合肥零零电子科技有限公司 1、Project->Open,打开该目录中的工程文件。
2、Project->Rebuild ALL,编译链接。
说明:第一次使用时也可以跳过这步,直接到第 3 步加载 .out 文件。
3、File->Load Program4、Debug->GO Main 5、Debug->RUN(快捷键F5),全速运行。
按下板子上的K3按键,对应的D10(LED1)和D11(LED2)发光二级管亮或灭一次;按下板子 上的K4按键,对应的D10(LED1)和D11(LED2)发光二级管快速闪烁几次。
不同的LED闪烁 方式以便区分是2个不同的中断按键。
合肥零零电子科技有限公司 程序所在目录Ex11_POP28335_ADC_dma。
试验准备:将板子右下角的J5排针的1-2用跳线冒接上(出厂默认已经接好了)。
注意:输入的电压值不能超过3V,否则可能损坏DSP芯片。
在 CCS3.3 中的操作如下: 1、Project->Open,打开该目录中的工程文件。
11、 11、 ADC_DMA ADC_DMA实验 _DMA实验2、Project->Rebuild ALL,编译链接。
说明:第一次使用时也可以跳过这步,直接到第 3 步加载 .out 文件。
3、File->Load Program4、Debug->GO Main,添加ADC_Result到Watch Window窗口里;合肥零零电子科技有限公司 5、Debug->RUN(快捷键F5),全速运行。
6、程序停止后,在Watch Window里查看ADC_Result的值,和输入的电压值比较接近。
这里 需要说明的是DMA瞬间采样是有一定误差的,另外数组有效的是前10位。
注意:可以通过旋转电位器(R51)按钮改变输入电压值来进行试验,但是每次都需要重新 运行程序一遍。
即改变了电压值就需要重新做一次试验了,不是说旋转按钮值立马改变。
合肥零零电子科技有限公司 程序所在目录Ex12_POP28335_ADC_8SEG。
试验准备:将板子右下角的J5排针的1-2用跳线冒接上(出厂默认已经接好了)。
注意:输入的电压值不能超过3V,否则可能损坏DSP芯片。
在 CCS3.3 中的操作如下: 1、Project->Open,打开该目录中的工程文件。
12、 ADC电压采样显示 ADC电压采样显示实验 电压采样显示实验2、Project->Rebuild ALL,编译链接。
说明:第一次使用时也可以跳过这步,直接到第 3 步加载 .out 文件。
3、File->Load Program4、Debug->GO Main合肥零零电子科技有限公司 5、Debug->RUN(快捷键F5),全速运行。