DSP最小系统设计按键加流水灯.docx
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 最小 系统 设计 按键 流水
- 资源描述:
-
DSP最小系统设计报告 一、系统设计原理 本次设计采用TI公司生产的DSP芯片TMS320F2812和键盘扫描电路进行按键。TMS320F2812系列DSP(数字信号处理器)是TI公司最新推出的数字信号处理器,该系列处理器是基于TMS320C2xx内核的定点数字信号处理器。器件上集成了多种先进的外设,为电机及其他运动控制领域应用的实现提供了良好的平台。同时代码和指令与F24x系列数字信号处理器完全兼容,从而保证了项目或产品设计的可延续性。与F24x系列数字信号处理器相比,F2812系列数字信号处理器提高了运算的精度(32位)和系统的处理能力(达到150MIPS)。该系列数字信号处理器还集成了128KB的Flash存储器,4KB的引导ROM,数字运算表以及2KB的OTP ROM,从而大大改善了应用的灵活性。两个事件管理器模块EVA、EVB为电机及功率变换控制提供了良好的控制功能。16通道高性能12位ADC单元提供了两个采样保持电路,可以实现双通道信号同步采样。 TMS320F2812系列DSP有以下特点:TMS320F2812有3个独立的片选信号,并且读/写时序可编程,兼容不同速率的外设扩展;通过配置外部接口寄存器,TMS320F2812在访问外部设备时不必额外增加延时等待,既提高了程序的实时性又减少了代码量。 TMS320F2812是TI公司2000系列中功能最为强大的DSP芯片。它是一种32位DSP,片内有128K的FLASH,18K的SRAM, DART. 56 个I/0,12MAD+l6路输入,指令处理速度高达150MPIS。TMS320F2812的时钟频率是150MHz,即时钟周期是6.67ns。有众多的外设接口,GPIO, SPI, SCIA, SCIB, McBSP, eCAN, SRAM. FLASH, EVA,EVB, ADC。这些外设模块使TMS320F2812很适用于控制领域。 二、设计思路 最小系统加上外设电路,外设电路中包含16盏LED灯和2个按键。通过按键来控制LED亮灯的左移和右移。 三、最小系统电路模块 2.1 电源电路 TMS320F2812芯片工作时需要的电压有两个部分:+3.3V的Flash电压和+1.8V的内核电压。TMS320F2812对电源很敏感,所以在此可以用电压精度比较搞得电源芯片TPS767D301或者TPS767D319。TPS767D301输入电压为+5V,芯片起震,正常工作之后,能够产生3.3V和1.8V两种电压工DSP使用。 2.2 晶振电路 DSP的时钟使用内部振荡器,在X1/XCLKIN和X2两个引脚之间连接一个石英晶体。 2.4 TMS320F2812 四、外设电路 3.1 按键电路 S1按键接GPIOB0,S2按键接GPIOB1。S1亮灯右移,S2亮灯左移。 3.2 流水灯电路 流水灯电路接GPIOA。 五、部分程序 /******SRAM.cmd*****/ MEMORY { PAGE 0 : PRAMH0 : origin = 0x3f8000, length = 0x001000 PAGE 1 : /* SARAM */ RAMM0 : origin = 0x000000, length = 0x000400 RAMM1 : origin = 0x000400, length = 0x000400 /* Peripheral Frame 0: */ DEV_EMU : origin = 0x000880, length = 0x000180 FLASH_REGS : origin = 0x000A80, length = 0x000060 CSM : origin = 0x000AE0, length = 0x000010 XINTF : origin = 0x000B20, length = 0x000020 CPU_TIMER0 : origin = 0x000C00, length = 0x000008 CPU_TIMER1 : origin = 0x000C08, length = 0x000008 CPU_TIMER2 : origin = 0x000C10, length = 0x000008 PIE_CTRL : origin = 0x000CE0, length = 0x000020 PIE_VECT : origin = 0x000D00, length = 0x000100 /* Peripheral Frame 1: */ ECAN_A : origin = 0x006000, length = 0x000100 ECAN_AMBOX : origin = 0x006100, length = 0x000100 /* Peripheral Frame 2: */ SYSTEM : origin = 0x007010, length = 0x000020 SPI_A : origin = 0x007040, length = 0x000010 SCI_A : origin = 0x007050, length = 0x000010 XINTRUPT : origin = 0x007070, length = 0x000010 GPIOMUX : origin = 0x0070C0, length = 0x000020 GPIODAT : origin = 0x0070E0, length = 0x000020 ADC : origin = 0x007100, length = 0x000020 EV_A : origin = 0x007400, length = 0x000040 EV_B : origin = 0x007500, length = 0x000040 SPI_B : origin = 0x007740, length = 0x000010 SCI_B : origin = 0x007750, length = 0x000010 MCBSP_A : origin = 0x007800, length = 0x000040 /* CSM Password Locations */ CSM_PWL : origin = 0x3F7FF8, length = 0x000008 /* SARAM */ DRAMH0 : origin = 0x3f9000, length = 0x001000 } SECTIONS { /* Allocate program areas: */ .reset : > PRAMH0, PAGE = 0 .text : > PRAMH0, PAGE = 0 .cinit : > PRAMH0, PAGE = 0 /* Allocate data areas: */ .stack : > RAMM1, PAGE = 1 .bss : > DRAMH0, PAGE = 1 .ebss : > DRAMH0, PAGE = 1 .const : > DRAMH0, PAGE = 1 .econst : > DRAMH0, PAGE = 1 .sysmem : > DRAMH0, PAGE = 1 /* Allocate Peripheral Frame 0 Register Structures: */ DevEmuRegsFile : > DEV_EMU, PAGE = 1 FlashRegsFile : > FLASH_REGS, PAGE = 1 CsmRegsFile : > CSM, PAGE = 1 XintfRegsFile : > XINTF, PAGE = 1 CpuTimer0RegsFile : > CPU_TIMER0, PAGE = 1 CpuTimer1RegsFile : > CPU_TIMER1, PAGE = 1 CpuTimer2RegsFile : > CPU_TIMER2, PAGE = 1 PieCtrlRegsFile : > PIE_CTRL, PAGE = 1 PieVectTable : > PIE_VECT, PAGE = 1 /* Allocate Peripheral Frame 2 Register Structures: */ ECanaRegsFile : > ECAN_A, PAGE = 1 ECanaMboxesFile : > ECAN_AMBOX PAGE = 1 /* Allocate Peripheral Frame 1 Register Structures: */ SysCtrlRegsFile : > SYSTEM, PAGE = 1 SpiaRegsFile : > SPI_A, PAGE = 1 SciaRegsFile : > SCI_A, PAGE = 1 XIntruptRegsFile : > XINTRUPT, PAGE = 1 GpioMuxRegsFile : > GPIOMUX, PAGE = 1 GpioDataRegsFile : > GPIODAT PAGE = 1 AdcRegsFile : > ADC, PAGE = 1 EvaRegsFile : > EV_A, PAGE = 1 EvbRegsFile : > EV_B, PAGE = 1 ScibRegsFile : > SCI_B, PAGE = 1 McbspaRegsFile : > MCBSP_A, PAGE = 1 /* CSM Password Locations */ CsmPwlFile : > CSM_PWL, PAGE = 1 } /**************************************************************************** * *文件名:DSP28_SysCtrl.c * *功 能:对2812的系统控制模块进行初始化 * ****************************************************************************/ #include "DSP28_Device.h" /**************************************************************************** * *名 称:InitSysCtrl() * *功 能:该函数对2812的系统控制寄存器进行初始化 * ****************************************************************************/ void InitSysCtrl(void) { Uint16 i; EALLOW; SysCtrlRegs.WDCR= 0x0068; // 禁止看门狗模块 // 初始化PLL模块,如果外部晶振为30M,则SYSCLKOUT=30*10/2=150MHz SysCtrlRegs.PLLCR = 0xA; for(i= 0; i< 5000; i++){} // 延时,使得PLL模块能够完成初始化操作 // 高速时钟预定标器和低速时钟预定标器,产生高速外设时钟HSPCLK和低速外设时钟LSPCLK SysCtrlRegs.HISPCP.all = 0x0001; // HSPCLK=150/2=75MHz SysCtrlRegs.LOSPCP.all = 0x0002; // LSPCLK=150/4=37.5MHz EDIS; } /**************************************************************************** * *文件名:DSP28_Gpio.c * *功 能:2812通用输入输出口GPIO的初始化函数 * ****************************************************************************/ #include "DSP28_Device.h" /**************************************************************************** * *名 称:InitGpio() * *功 能:初始化引脚。 * ****************************************************************************/ void InitGpio(void) { EALLOW; GpioMuxRegs.GPAMUX.all=0x0000; //将GPIOA引脚设置位I/O口 GpioMuxRegs.GPADIR.all=0xFFFF; //引脚方向为输出 GpioMuxRegs.GPBMUX.bit.GPIOB0=0; //将GPIOB0引脚设置位I/O口 GpioMuxRegs.GPBMUX.bit.GPIOB1=0; //将GPIOB0引脚设置位I/O口 GpioMuxRegs.GPBDIR.bit.GPIOB0=0; //引脚方向为输入 GpioMuxRegs.GPBDIR.bit.GPIOB1=0; //引脚方向为输入 GpioDataRegs.GPADAT.all=0x0001; //引脚初始化为GPIOA0为高电平,D1亮 EDIS; } /**************************************************************************** * *文件名:Gpio_LED_KEY.c * *功 能:通过按键对LED灯进行控制,按S1亮灯右移,按S2亮灯左移。 * ****************************************************************************/ #include "DSP28_Device.h" /**************************************************************************** * *名 称:main() * *功 能:通过GPIOB1和B0来获取键值,通过GPIOA来控制LED亮灯移动。 * ****************************************************************************/ unsigned int led=0x0001; void main(void) { InitSysCtrl(); //初始化系统 DINT; //关中断 IER = 0x0000; IFR = 0x0000; InitPieCtrl(); //初始化PIE InitPieVectTable(); //初始化PIE中断矢量表 InitPeripherals(); //初始化外设 InitGpio(); //初始化GPIO EALLOW; EDIS; EINT; // Enable INTM ERTM; // Enable DBGM while(1) { if(GpioDataRegs.GPBDAT.bit.GPIOB0==1) //检测按键S1按下,亮灯右移 { delay(50000); if(led=0xffff) then led=0x0000; else led<<1; } if(GpioDataRegs.GPBDAT.bit.GPIOB1==1) //检测按键S2按下,亮灯左移 { delayms(50000); if(led=0x0000) then led=0xffff; else led>>1; } GpioDataRegs.GPADAT.all=led; } } void delay(unsigned int t) { while(t>0) { t--; } }展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




DSP最小系统设计按键加流水灯.docx



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/5918258.html