TMS320F2812delay 延时完整程序

合集下载

TMS320F2812 SCI口FLASH编程操作指南

TMS320F2812 SCI口FLASH编程操作指南
胜翼科技
TMS320F2812 SCI Flash 编程操作指南
目录
胜翼科技
1 文档介绍 ............................................................................................................... 3 2 软件准备 ............................................................................................................... 3 3 环境配置 ............................................................................................................... 5 4 烧写操作 ............................................................................................................... 8 5 波特率设置及操作时间 ..................................................................................... 11
3
销售邮箱:Sales@
胜翼科技
SDFlash algorithms for F28xxx flash programming via an RS232 serial link 需要进行 安装,一般情况下与 CCS 3.3 保持一个目录即可。
SDFlash 软件在 Spectrumdigital 公司网站上提供的是非安装版,无需安装。但需 要注意的是,非安装版缺少了相关的配置文件(如 sdopts.cfg、sdtsrv.dll)。软件是无 法直接运行的。需要安装 SD 公司的 CCS Emulation Drivers 软件。如图 2‐1 所示:

DSP之工MS320F2812基本系统及使用实例

DSP之工MS320F2812基本系统及使用实例

M0和M1:2组1K×16SARAM。

③16个12位模拟-数字转换通道. All Rights Reserved.图1LQTP封装引脚排列(b)JTAG接口图2基本系统框图(c). All Rights Reserved.(a)F2812芯片(d)(e)图3基本系统原理图系统组成本文介绍的TMS320F2812基本系统的框图如图2所示,板载TMS320F2812芯片、1个复位按钮、外扩1路SCI接口、外扩1路RS485标准接口、外扩1路CAN收发转换个电源指示LED、间距2.0mm的排针将所有有用的管脚引出针标准JTAG调试接口,全面支持TDS、XDS等各类仿真器TMS320F2812芯片的电路原理如图3(a)所示;JTAG接口电路原(b)所示;CAN接口电路采用TI公司的3.3VCAN总线收发芯片型号为SN65HVD230。

其电路原理如图3(c)所示;RS485用MAXIM公司的3.3VRS-485收发器,芯片其电路原理如图3(d)所示;RS232接口电路采用MAXIM3.3VRS-232收发器,芯片型号为MAX3232。

其电路原理如图基本系统采用4层PCB板大小94×64mm2,其引出脚如图系统等工业现场、运动控制产品中。

图4基本系统板引脚排列3使用实例基本系统的开发环境是CCS集成开发环境和XD510仿真器。

板上设有符合IEEE1149.1标准的片内扫描仿真接口(JTAG),用于实验或应用系统的在线仿真调试。

本文取基本系统板上56个多功能GPIO口中的8个,外接8个发光二级管进行流水灯演示。

外接电路如图5所示。

由于F2812芯片输出引脚输出缓冲器驱动能力的典型值是4mA,为了保护芯片,在发光管与芯片引脚之间增加一片74HC373锁存器。

3.3V电源电路如图6所示。

图5流水灯演示电路图6 3.3V电源电路实验程序如下:******************************************************* *************************文件:Water_lamp.c内容:8个发光二极管LED1(L1)-LED8(L8)流水灯实验。

TMS320F2812的SPWM原程序

TMS320F2812的SPWM原程序

TMS320F2812的SPWM原程序//实现了SPWM的输出#include "DSP281x_Device.h"#include "stdio.h"#include "math.h"#include "float.h"#define NX 404#define PI 3.1415925float M=0.8;int k0=0,h1=0;double a[NX];void zkb();interrupt void eva_T1UFINT_ISR(void);unsigned int n=0;float q,l,j;void main(void){InitSysCtrl(); //系统初始化DINT; //禁止全局中断IER=0x0000;IFR=0x0000;EALLOW;GpioMuxRegs.GPAMUX.all = 0x00FF; // EVA PWM 1-6 pins EDIS;InitPieCtrl();InitPieVectTable();EALLOW; //使能定时器1下益中断PieVectTable.T1UFINT=&eva_T1UFINT_ISR;EDIS;IER|=M_INT2; //开中断2PieCtrlRegs.PIEIER2.bit.INTx6=1; //开下益中断////////////////////while (n<=NX){q=(n+0.75); //为消除偶次偕波,减少谐波角度出发,选择从A 相3/4周期进行采样q=q*2*PI;q/=405;j=sin(q);l=1875*(1+M*j);//M为调制比 //计算占空比表达式//if(l>=187&l<=1687)(此处网友设置为错误的)if(l>=375&l<=3375)a[n]=l;else{if(l>3375)a[n]=3375;elsea[n]=375;}n=n+1;/////////////////////////////////init_eva///////////////////////////////EvaRegs.ACTRA.all=0x0666;EvaRegs.DBTCONA.all = 0x0000; // Disable deadbandCONA.all = 0xa600; //使能比较操作EvaRegs.EVAIMRA.all=0x0200; //EVAIMRA(EVA的中断屏蔽寄存器A).T1UIINT(通用定时器1的下溢中断使能)EvaRegs.EVAIMRB.all=0x0000;EvaRegs.EVAIMRC.all=0x0000;EvaRegs.EVAIFRA.all=0xffff;//EVAIFRA(EVA的中断标志寄存器.T1UIINT(通用定时器1的下溢中断标志)EvaRegs.EVAIFRB.all=0xffff;//写1清除定时器1的下溢中断标志EvaRegs.EVAIFRC.all=0xffff;EvaRegs.CMPR1=0; //初始化寄存器的值EvaRegs.CMPR2=0;EvaRegs.CMPR3=0;EvaRegs.GPTCONA.all=0x0041;//周期必须大于最大的正弦表格值EvaRegs.T1PR = 3750; // Timer1 period PWM载波周期为 65536个定标的定时器时钟周期//EvaRegs.T1PR = 0xffff;//EvaRegs.T1CNT = 937; // Timer1 counterEvaRegs.T1CNT = 937;//EvaRegs.T1CON.all = 0x0b4e; // 选择模式产生PWM波10EvaRegs.T1CON.all = 0x0b4e;EINT;return;///////////////////////////EvaRegs.T1CON.all=EvaRegs.T1CON.all|0x0040; //启动定时器1for(;;);}interrupt void eva_T1UFINT_ISR(void) // EV-A{int h2;int flag;flag=(EvaRegs.EVAIFRA.all)&0x0200; //T1UFINT中下益中断标志位置1if(flag!=0x0200){EINT;return;}else{if(k0<=NX){h1=k0+135; //B相表达式if(h1>=404)h1=h1-404;h2=k0+270; //C相表达式if(h2>=404)h2=h2-404;EvaRegs.CMPR1=a[k0];EvaRegs.CMPR2=a[h1]; //更新比较寄存器2的值EvaRegs.CMPR3=a[h2]; //更新比较寄存器3的值k0=k0+1;}else{k0=0;}}EvaRegs.EVAIMRA.bit.T1UFINT=1; //清除中断屏蔽标志EvaRegs.EVAIFRA.bit.T1UFINT=1; //清楚中断使能标志PieCtrlRegs.PIEACK.all=0x0002; //响应同组中断EINT; //开全局中断}。

TMS320F2812外设例程系列之SPI

TMS320F2812外设例程系列之SPI

TMS320F2812外设例程系列之SPI//############################################### ######################//文件:Example_281xSpi_FFDLB_int.c//发送的数据流如下://0000 0001 0002 0003 0004 0005 0006 0007//0001 0002 0003 0004 0005 0006 0007 0008//0002 0003 0004 0005 0006 0007 0008 0009//....//FFFE FFFF 0000 0001 0002 0003 0004 0005//FFFF 0000 0001 0002 0003 0004 0005 0006//etc..//观测变量:// sdata[8]:要发送的数据// rdata[8]:接收的数据// rdata_point//############################################### #######################include &quot;DSP281x_Device.h&quot; //头文件#include &quot;DSP281x_Examples.h&quot;//功能函数原型//interrupt void ISRTimer2(void);interrupt void spiTxFifoIsr(void);interrupt void spiRxFifoIsr(void);void delay_loop(void);void spi_fifo_init(void);void error();//全局变量Uint16 sdata[8]; //发送数据缓冲器Uint16 rdata[8]; //接收数据缓冲器Uint16 rdata_point; //跟踪在数据流里检测接收到的数据//主程序void main(void){Uint16 i;//Step 1. 初始化系统控制(PLL、看门狗、使能外设时钟)InitSysCtrl();//Step 2. 初始化GPIO//InitGpio(); //本例中略过//在本程序中只需设置下列 GPIO 口为特殊功能口(SPI口)EALLOW;GpioMuxRegs.GPFMUX.all=0x000F; //配置 GPIOs 为SPI 引脚//Port F MUX - x000 0000 0000 1111EDIS;//Step 3. 清除所有中断、初始化 PIE 中断向量表并禁止 CPU 中断DINT;IER = 0x0000;IFR = 0x0000;//初始化 PIE 控制寄存器到默认状态InitPieCtrl();//初始化 PIE 向量表使它们指向一些空的中断服务子程序InitPieVectTable();//映射中断向量EALLOW;PieVectTable.SPIRXINTA = &spiRxFifoIsr;PieVectTable.SPITXINTA = &spiTxFifoIsr;//Step 4. 初始化所有的外设//InitPeripherals(); //本例中省略spi_fifo_init(); //初始化SCI//Step 5. 用户程序段,使能中断//初始化发送数据缓冲器for(i=0; i<8; i++){sdata[i] = i;}rdata_point = 0;//使能所需的中断PieCtrlRegs.PIECRTL.bit.ENPIE = 1; //使能 PIE 模块PieCtrlRegs.PIEIER6.bit.INTx1=1; //使能 PIE Group 6, INT 1PieCtrlRegs.PIEIER6.bit.INTx2=1; //使能 PIE Group 6, INT 2IER=0x20; //使能 CPU INT6EINT; //使能全局中断//Step 6. 空循环for(;;);}//用户定义程序段void delay_loop(){long i;for (i = 0; i < 1000000; i++) {}}void error(void){asm(&quot; ESTOP0&quot;); //出现错误,测试失败,停止!for (;;);}//SPI FIFO 初始化程序void spi_fifo_init(){//初始化 SPI FIFO 寄存器组SpiaRegs.SPICCR.bit.SPISWRESET=0; //复位SPI SpiaRegs.SPICCR.all=0x001F; //16位数据位,自主循环模式SpiaRegs.SPICTL.all=0x0017; //使能中断,使能主从模式SpiaRegs.SPISTS.all=0x0000;SpiaRegs.SPIBRR=0x0063; //波特率SpiaRegs.SPIFFTX.all=0xC028; //使能FIFO, 设置TX FIFO level为8SpiaRegs.SPIFFRX.all=0x0028; //设置RX FIFO level为8SpiaRegs.SPIFFCT.all=0x00;SpiaRegs.SPIPRI.all=0x0010;SpiaRegs.SPICCR.bit.SPISWRESET=1; //使能SPI SpiaRegs.SPIFFTX.bit.TXFIFO=1;SpiaRegs.SPIFFRX.bit.RXFIFORESET=1;}//SPI发送中断服务程序interrupt void spiTxFifoIsr(void){Uint16 i;for(i=0;i<8;i++){SpiaRegs.SPITXBUF=sdata[i]; //发送数据}for(i=0;i<8;i++) //每一次循环数据都加1{sdata[i]++;}SpiaRegs.SPIFFTX.bit.TXFFINTCLR=1; //清除中断标志位PieCtrlRegs.PIEACK.all|=0x20;}//SPI 接收中断服务程序interrupt void spiRxFifoIsr(void){Uint16 i;for(i=0;i<8;i++){rdata[i]=SpiaRegs.SPIRXBUF; //读数据}for(i=0;i<8;i++) //检测接收到的数据{if(rdata[i] != rdata_point+i) error();}rdata_point++;SpiaRegs.SPIFFRX.bit.RXFFOVFCLR=1; //清除溢出标志位SpiaRegs.SPIFFRX.bit.RXFFINTCLR=1; //清除中断标志位PieCtrlRegs.PIEACK.all|=0x20;}。

_TMS320F2812_CPU 定时器

_TMS320F2812_CPU 定时器

定时器的初始化和配置
void ConfigCpuTimer(struct CPUTIMER_VARS *Timer, float Freq, float Period) { Uint32 temp;
// 定时器周期初始化 // 将后两个实参的乘积作为定时器的周期值存入定时器周期寄存器 Timer->CPUFreqInMHz = Freq; Timer->PeriodInUSec = Period; temp = (long) (Freq * Period); Timer->RegsAddr->PRD.all = temp;
TMS320 F2812上的CPU 定时器
SYSCLKOUT为系统的工作时钟,一旦定时器被使能,则预 定标计数器PSC递减计数,预定标计数器产生下溢后向定时器 的32位计数器借位,最后定时器计数器产生溢出使定时器向 CPU发送中断。每次预定标PSC产生溢出后,使用TDDR中的 值重新装载,同样PRD为32位计数器提供重新装载值。
知识背景:C语言基础-结构体和联合(共用)体
结构指针 结构指针对结构成员的访问表示为: 结构指针名->结构成员 例如要给上面定义的结构中age赋值, 可以用下面语句: student->age=18; 实际上, student-> age就是(*student). age的缩写形式。 需要指出的是结构指针是指向结构的一个指针, 即结构中 第一个成员的首地址, 因此在使用之前应该对结构指针初 始化, 即分配整个结构长度的字节空间。
外设位域结构体

TMS320F2812头文件与C语言编程
知识背景:C语言基础-结构体和联合(共用)体
结构体 结构体也是一种数据类型, 可以使用结构体变量, 在使用 结构体变量时要先对其定义。定义结构体变量的一般格 式为: struct 结构名 { 类型 变量名; 类型 变量名; ... } 结构变量; 结构名是结构的标识符不是变量名。 类型可以 整型、浮点型、字符型、指针型和无值型。

TMS320F2812开发板软件调试说明书

TMS320F2812开发板软件调试说明书

TMS320F2812开发板软件调试说明书2812开发学习板的测试程序包括下面几个方面:测试存储系统,包括SRAM和外扩FLASH测试BOOT过程测试所有F2812的外设测试LCD接口测试网络接口测试音频输入输出测试以太网接收和发送注意:测试程序的调式工具是以本公司的USB仿真器下,为了方便起见,建议用户用本公司USB仿真器,如果使用其它类型的仿真器,请参考有关资料真确安装驱动。

第一章 如何开始DSP编程第一步:安装CCS,可参考其他书籍,主要提醒一点,如果不使用仿真器,CCS的运行环境要设置成一个模拟仿真器。

第二步:运行CCS,则进入CCS开发环境,如下图所示新建一个工程,如下图第四步:选择路径,输入工程项目名,并确定,则如下图所示添加源文件,添加CMD文件,添加库文件,如下图所示:添加CMD文件和库文件跟添加源文件的方法相似,在这里不在赘述。

添加完成后整个工程如下所示:第六步:设置BUILDING OPTIONS主要是Linker选项:Output Module: absolute executableAutoinit Mode: run-time AutoinitializeStack Size: 200h (可以设置,也可以不设置,可在CMD中包含)Code Entry Point: main这是默认设置。

第七步:编译,生成 *.out文件,如图下图所示:如果程序有错误,必须修改正确。

直到编译没错误。

第八步:LOAD程序,如下图所示(注意:*.out文件在工程目录中的DEBUG文件夹中)第九步:单步运行程序,把光标摆在 main()函数中第一条语句,按“执行到光标处”图标,如下图所示:第十步:单步跟踪或全速运行,观看结果,具体操作根据具体情况,在此不在赘述。

第二章 2812开发学习套件演示程序测试注意:所有演示程序必须拷到硬盘,并且去掉其“只读属性”。

1.TIMER0测试F2812上有3个32位的CPU定时器,本程序主要对CPU定时器0进行操作,100MS产生1次中断,在中断中让 2812开发板上的L1—L8发光二极管闪烁,实现跑马灯的效果。

第4章_TMS320F2812系统控制及中断

第4章_TMS320F2812系统控制及中断

4.2 时钟及系统控制
华东交通大学电气学院
4.3 振荡器及锁相环模块
2812 基于 PLL 的时钟模块可以采用两种模式,一种是 PLL 未被禁止的情况下(旁路 或使能), 使用外部晶振给 2812 提供时钟信号,使用 X1/CLKIN 引脚和 X2 引脚;另外 一种 PLL 被禁止的情况下,旁 路片内振荡器,由外部时钟源提供时钟信号,即将外部振
PIEIERx。每个寄存器的低 8 位对应于 8 个外设中断,高 8 位保留。例如 T1PINT对应于PIEIFR2 的第 4 位和 PIEIER2 的第 4 位。
因为 PIE 模块是多路复用的,那么每一组同一时间应该只能是一个中断被响应,
PIE 是怎么做到的呢?PIE 除了每组具有 刚才的 PIEIERx,PIEIFRx 寄存器 之外,还有一个 PIEACK 寄存器,它的低 12 位分别对应着 12 个组,即 INT1INT12,高位保留。假如 T1 的周期中断被响应了,则 PIEACK 寄存器的第 2 位(对应于 INT2)就会被置位,并且一直保持直到手动清除这个标志位。当 CPU 在响应 T1PNT 的时候,PIEACK 的第 2 位一直是 1, 这时候如果 PIE2 组内发生其他的外设中断,则暂时不会被 PIE 响应送给 CPU,必须等到 PIEACK 的第 2 位被复位之后,如果该中断请求还存在,那么立马由 PIE 控制 块将中断请求送至 CPU。所以,每个外设中断被响应之后,一定要对 PIEACK 的相关位进行手动服务,否则同组内的其他中断都不会被响应。
时钟频率具体的计算如下面所示。 晶振为 30M,
PLLCR 的 DIV 位被设置成 1010 时的时钟频率
CLKIN=(OSCLKIN*10)/2=(XCLKIN*10)/2=(30M*10)/2=150M Hz

TMS320F2812应用程序开发过程

TMS320F2812应用程序开发过程

CCS集成开发环境的应用3.3.1 CCS(Code Composer Studio)集成开发环境简介TI公司为推广其DSPs芯片而开发了DSPs调试和软件工具:CCS(Code Composer Studio)集成开发环境。

它提供了环境配置、源文件编辑、程序调试、跟踪与分析等工具,帮助用户在软件环境下完成编辑、编译、链接、调试和数据分析等工作。

与TI公司早期提供的开发工具相比,利用CCS能够加快系统的开发过,提高工作效率。

CCS可以工作在两种模式:软件仿真(Simulator)模式和硬件仿真(Emulator)模式。

前者不需要在DSPs芯片运行,在计算机上就可以模拟DSPs指令集与工作机制,主要用于前期算法仿真与调试。

后者实时运行在DSPs芯片上,可以在线编制及调试应用程序。

CCS主要有以下特性和功能: 集成可视化代码编辑界面,可以直接编写C/C++、汇编、头文件及CMD文件等。

集成图形显示工具,可绘制时域、频域波形等。

集成调试工具,可以完成执行代码的装入、寄存器和存储器的查看、反汇编器、变量窗口的显示等功能,同时还支持C源代码级的调试。

集成代码生成工具,包括汇编器、C/C++编译器和链接器等。

支持多DSPs调试。

集成断点工具,包括设置硬件断点、数据空间读/写断点、条件断点等。

集成探针工具,可用于算法仿真、数据监视等。

提供代码分析工具,可用于计算某段代码的执行时间,从而能对代码的执行效率做出评估。

支持通过GEL来扩展CCS的功能,可以实现用户自定义的控制面板、菜单、自动修改变量或配置参数的功能。

支持RTDX技术,可在不暂停目标系统运行的情况下,实现DSPs与其他应用程序的数据交换。

提供开放的plug-ins技术,支持第三方的ActiveX插件,支持包括软件仿真在内的各种仿真器(需要安装相应的驱动程序)。

提供DSP/BIOS工具,增强了对代码的实时分析能力,如分析代码的执行效率、调度程序执行的优先级、方便对系统资源的管理或使用(代码/数据空间的分配、中断服务程序的调用、定时器的使用等),减小了开发人员对DSPs硬件知识的依赖程度,从而缩短了软件系统的开发进程。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档