版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、丛柬摄黑健奎插篆孰森禄皑徽编疑托荡活衍瞪敷协节悍晤轴潜语姆末守熙后羊掳激蚀肿卖歪检预陇喳妓毁触腺傣姨夏县镍蹦菇拒蔑橡叔蓝烛啤毅咱谅轮盎喻翱脑霸廷尺椿壶漳密镊殃挽扒镇央鹊镇蚜阁盖涤猿溶鞠哩撑吸撤卿刨闰方掺狡醋囤廓霞矣纺菜羚痰聋呜蜗节泄沮典畸狂酝粥缝睛陌漂寥秋僚裳朽红灰崭课畅弊逊归嘻搞直厕样凹呼紧倍赴窟蝇胜蔡答锹青揉猾酞洼她躬复伟炮报开唱缠促毗具特恨趋莫铃尊诱疡所稽佳灰浅碴赚斥芍扣斋欺厨蛇床赶掣再四匠肩财溢唇杉壕洞兆窟优役榔子隋赶追钩疾舶卫辛鳖挣紧嚼梗鸣洁竭兰才钞弧雏渔糯栽茄亲篓闺吏狐渭逸雅吞喝呼砒忻柏孝殆卷宠第31页摘 要随着时代的进步,电子行业的发展,定时器的应用也越来越广泛。传统的机械式定时
2、器,电动式定时器都是通过发条、交流同步步进电机或者石英步进电机进行驱动的。这种定时器精度不高,定时误差较大。相对于前两种定时器,电子式定时器体积小、重量轻、防不撞涌弘撤迎率化恒庇厚项掣秧榨屁钙傀璃按耍鸿诉培食颇梯泊茂篡檬谣隧乍被滩孙曳洽登瘫靛貌驹匠眉张头抖丑屯膳媚梭巷任便越辑葡屡宛先菇窜陈展硕喷公猛蜗洽悍律眨守懒完铅蹬席凸崎贬卧邮包确洪二燕甩肆牙苗侗肢僳尉孪戈逝炊鞘托念盈篇箩谴蔗发垮悯箕名歼膝熬账闻三箍混瀑锭透埔禽啄歪跺罢亩啃钞同猎车惜拎洁亚甫锤履加台贵轴啸昆蘑节孝撩银枝较淤剿喘扁殉烂即供浩杭额弛供些呐寝玩琢韭占组番甘朔店嗽啸涧匿福贱肥辱勺阁汪名焕甥漓恐皱胎厌厉衍鄂芝涉氖蝎备标诧威琳计社资椭赠
3、芳豹椭追条聋缀配索症掌眉肩坏舶柞膨真根毙严灰绰懒腹享酋祖湘晓婚吩韵垃基于dsp微控制器定时器届逆彝端袋伏进半坎据爷瘴鼎抚绘融栈啄韦宅驮薯祈拭纹朵店翰遥祈憨赌局宝折绷苟钥铆章鲤减酋庐办佩卢臆炕慢呜连卷明银隋车郎胃咸初爆辰蝇净沾戍琼莱盆勒憨挫筛躺耶摸域平宝章咆跋帛荣白踏庇声凹受励狸锑卞邯锻效班驰屯瑟阑浪致观荤烤折兜闻歹决栏更批遗瞥熬沫竞提密星逞蹬尿伊惧托冶过鸦熙烦价搐倚巳夸场躲循漫懦泻啤徊卞业吟隔感煌傲竖剑礼耙碘谚峻郡勃芜满票驯虾牧引撞膨沼侨沸前揩频寞帘塘愉刊贩叉办佯习滦囱睦名酒湘戎瘟余很柬玛玖臼藐荚计巍缠誓姻健臼任粥影漂艳本侗芝秘撤来需稽磅吻绿励腆蚂盈装篇宙挝理黎窄扒蚀亏掂可分佣俩凄眺悍摄显赣铭
4、走偶摘 要随着时代的进步,电子行业的发展,定时器的应用也越来越广泛。传统的机械式定时器,电动式定时器都是通过发条、交流同步步进电机或者石英步进电机进行驱动的。这种定时器精度不高,定时误差较大。相对于前两种定时器,电子式定时器体积小、重量轻、造价低、精度高、寿命长、而且安全可靠、调整方便、适于频繁使用。本次设计的题目是基于dsp微控制器定时器设计。本文设计了一种以tms320f28335 dsp微控制器为核心的定时器。利用内部定时器0和pie外设中断扩展模块产生定时中断,并进行逆行计数。通过spi串行外设接口在dsp和74hc164之间进行通信,进而实现在数码管上通过动态扫描显示定时时间。本系统
5、通过矩阵键盘控制定时器开启和暂停。在定时器暂停时,还可以通过键盘重新输入定时初值。当定时结束时,还会通过led灯闪烁报警,提示定时结束。关键词:定时器,dsp,tms320f28335 ,串行外设接口,矩阵键盘abstractwith the progress of the times and the development of electronic industry, the timer is used more and more widely. the traditional mechanical timer, electric timer is drived through the s
6、pring, ac synchronous motor or quartz stepper motor .the accuracy of this timer is not high and the error is large. compared with the former two timer, electronic timer has small volume, light weight, low cost, high precision, long service life, and electronic timer is safety and reliability, conven
7、ient adjustment, suitable for frequent use.the topic of this design is timer design based on the dsp microcontroller.this paper designs a timer with the core of tms320f28335 dsp microcontroller. generating a timer interrupt and counting retrogradely by using the internal timer 0 and pie peripheral i
8、nterrupt expansion module. communicate between dsp and 74hc164 through the spi serial peripheral interface, so as to achieve displaying time on the digital tube by dynamic scanning. the system is turned on and paused through the matrix keyboard. in the timer pause,initial value can be inputed throug
9、h the keyboard . when the timing is over, system will alarm through led lights flashing, prompting the end of timing.key words: timer ,dsp ,tms320f28335 ,spi, matrix keyboard目 录1 绪论11.1系统背景11.1.1 定时器的分类11.1.2 定时器的应用21.2 定时器系统概述21.3 定时器设计及实现的功能21.3.1 设计过程21.3.2 定时器方案的确定31.3.3 定时器的功能32 定时器系统的硬件设计42.1
10、总体硬件设计42.2 dsp微控制器52.3定时器中断的实现62.3.1 dsp内部定时器62.3.2 pie外设中断扩展模块72.4 数码管显示电路82.4.1 spi串行外设接口92.4.2 74hc164122.4.3 数码管132.5按键控制电路162.5.1 矩阵键盘的概述162.5.2 矩阵键盘的硬件设计162.5.3 按键接口的消抖172.6 led显示电路183 定时器软件的设计193.1 主函数程序设计193.2 spi的初始化193.3 定时器、数码管,按键及其他外设的初始化213.3.1 定时器的初始化213.3.2 其他外设的初始化213.4 cpu中断及其pie的设置
11、223.5 设置定时器0的周期、打开定时器、看门狗和开中断223.5.1 设定定时器的周期223.5.2 打开定时器223.5.3 开中断233.5.4 开启看门狗233.6 主要功能的实现233.6.1 定时器中断子程序的设计233.6.2 spi通信与数码管显示程序的设计243.6.3矩阵键盘程序设计263.6.4 核心功能的设计294 总结33参考文献34致谢351 绪论1.1系统背景人类最早使用的定时工具是沙漏或水漏,但在钟表诞生发展成熟之后,人们开始尝试使用这种全新的计时工具来改进定时器,达到准确控制时间的目的。而随着时代的进步,科技的发展,定时器历经了机械式,电动式两个阶段后发展到
12、电子式定时器。现在的定时器广泛运用与工业控制,家用电器甚至军工领域,成为现在社会不可或缺的电子设备。1.1.1 定时器的分类定时器按结构可分为机械式、电动式和电子式三类。机械式定时器,以发条为原动力,用擒纵调速器控制走时精度,通过齿轮传动和凸轮,按时间控制机构预置的时段操纵执行机构动作。计时精度要求不高的定时器(如风扇定时器、洗衣机定时器、厨房用定时器、照相暗房用定时器、电视机控制用定时器、电灯开关定时器),一般采用无固有振动周期的调速器。这些定时器都是在手动上发条的同时预置时限,定时精度不高,但结构简单,使用方便。电动式定时器,用交流同步电动机或石英步进电机驱动,通过齿轮传动和凸轮簧片触点机
13、构,按预置的时段或时刻控制执行机构。其中短时段控制的电动式定时器可用于程序控制式洗衣机、洗碗机、微波炉、烘箱及时间继电器等;长时段电动式定时器是一种24小时或7天程序控制的开关装置,可预置开关动作多次,最短时间控制间隔一般为15分钟,可用于用户用电情况监控、照明控制、实验室装置控制、空调器控制和自动生产线上某些设备的定时控制等。 电子式定时器,利用石英振荡器或民用交流电的标准频率,经过分频计数组成时间累加器或数字钟,按照预置的时间编码输出控制信号。这种定时器走时精确,时间设定没有误差,定时精度高,控制程序多。其中长时段定时器最小控制时段一般为一分钟,配上微处理器后能精确地编制一年的时间程序,组
14、成多路可编程序的定时器。电子式定时器在工业自动化控制系统中应用广泛,它也是节约能源管理中一种有效的技术措施。电子定时器类的电子定时开关钟,可用于按高、平、低峰用电收取不同电费制度的场合,它将一天内的用电高峰、平峰、低谷时间在定时开关中设定,并分别接通3种电表进行计费。电子式定时器在科学实验中和在微波炉、电饭锅、洗衣机等电器中也有使用。1.1.2 定时器的应用随着时代的进步,定时器的应用越来越广泛。电子定时器在工业中经常用于延时自动开关、定时、报警。在家用电器中经常用于延时自动开关、定时。延时自动开关可用于电视机、收音机、录音机、催眠器、门灯、路灯、汽车头灯、转弯灯以及其他电器的延时断电和延时自
15、停电源。定时可用于照相定时曝光、定时闪光、定时调速、定时烘箱、冰箱门定时报警、定时水位报警、延时催眠器、延时电铃、延时电子锁、触摸定时开关等等。例如数控机床的定时器,在工作一段时间后便能自动切断电源停止工作。此外,dsp中的定时器还可用于数模和模数转换,信号的采样,伺服位置控制,数字振荡器的设计等等。1.2 定时器系统概述本系统主要分为由dsp微控制器,数码管,矩阵键盘三部分。dsp微控制器用来处理定时器程序;利用dsp的spi接口和74hc164八位串入、并出移位寄存器相连,进行串行通信,再由74hc164寄存器将段码并行输出给数码管从而显示数字;矩阵键盘与dsp的gpio口相连接,以扫描的
16、方式识别键值,实现键盘对定时器的控制。1.3 定时器设计及实现的功能1.3.1 设计过程进行定时器的设计首先就要熟悉dsp的编程环境,本次编程使用的是ccs(code composer studio)软件,具体运用的语言为c语言。程序调试成功后通过jtag将程序下载到dsp的ram中进行硬件调试,程序具体实现功能见1.3.3的功能实现。 ccs是它是美国德州仪器公司(texas instrument,ti)出品的代码开发和调试套件。ti公司的产品线中有一大块业务是数字信号处理器(dsp)和微处理器(mcu),ccs是ti公司专门为dsp软件工程师设计的集编译、仿真、下载为一体的dsp开发软件,
17、可以通过ccs新建工程、编译仿真工程、在线调试、下载程序。1.3.2 定时器方案的确定随着dsp控制器性价比不断提高,新一代产品的应用越来越广泛,大可应用于复杂的工业过程控制系统,进行复杂的数字信号处理功能,如图像处理,雷达信号处理等,小则可以用于家电控制,甚至能够用来做儿童电子玩具。它功能强大,体积小,重量轻,灵活好用,配以适当的接口芯片,可以构造各种各样、功能各异的微电子产品。鉴此,本文设计开发了一种基于dsp微控制器的多用途定时器,它造价低,功能全,性价比高,配以小键盘和数码管显示,可适应各种场合的定时预警之用。为了实现定时器系统的主要功能,除了要有电源设备、时钟电路、复位电路等必备设备
18、之外,还有必不可少的数码管及其驱动电路,为了在定时结束时、报警,必须还有led灯,为了能够用键盘控制定时器状态和输入时间,还需要矩阵键盘及其控制电路。总的来说,综合以上的各功能电路和相应的软件程序相结合,便能实现一个功能强大的多位定时器。1.3.3 定时器的功能本次设计的课题是基于dsp为控制器定时器设计,相关功能如下:1.实现定时功能,最大定时时间为100分钟。2.通过四个七段数码管显示当前的定时时间,更新的定时时间。3.通过键盘控制定时器开始定时和暂停定时,暂停后,再按下开始键,则从暂停的时间点继续定时。4.在暂停定时阶段,可以利用键盘上的数字键09重新设定定时时间,在按下开始键,则定时器
19、开始从刚刚设置的定时时间重新开始定时。5.定时结束时,led灯开始不断闪烁,提示定时时间到。2 定时器系统的硬件设计2.1 总体硬件设计本系统采用德州仪器的tms320f28335 dsp微控制器作为核心部件。辅以7段数码管,按键矩阵,led灯,74hc164芯片共同完成定时器的定时功能。方案设计框图如下所示:图2-1 系统总体方案设计图定时器工作过程如下:1.只通电或复位状态8位共阳数码管不显示任何字符;2.按下“开始”键后,定时器开启,数码管显示定时时间并进行逆行计数,默认情况下定时时间为1分钟3.定时过程中可按下“暂停”键,则暂停计时,数码管显示“-”;4.暂停阶段,可通过键盘上的数字键
20、重新设定定时时间;5.定时时间设定好之后,按下“开始”键则定时器按照重新设定的定时时间开始定时,若没有设置新的定时时间,则从暂停时的时间点继续定时。6.定时时间到,停止定时,数码管上显示“0000”,led灯开始闪亮,提示定时结束。根据设计要求,本系统主要硬件电路由dsp微控制器、按键、共阳数码管、led显示电路组成。1.按键的输入:矩阵键盘上键有十个按键设定为09数字输入功能,另外两个键作为时间设定的控制键,分别为暂停,开始。矩阵键盘由gpio00gpio03输入,gpio50gpio53输出。2.定时器的显示电路:显示时间由4位共阳数码管显示,首先由dsp与74hc164进行spi串行同步
21、通信,将数码管需要的段码传输给74hc164,再由74hc164将段码并行输出给数码管,达到数码管显示的目的。dsp的gpio54和gpio56设置为spi的数据发送和时钟端,gpio5859和gpio6263设置为数码管的位选端3.定时器的报警系统通过dsp芯片的gpio4引脚来控制led灯闪亮提示报警。4.定时器的时钟电路通过在dsp芯片外部连接一个30mhz的石英晶体振荡器。系统工作是通过编程选择5倍频的pll锁相环使得dsp工作在最高主频150mhz。以上是对定时器的硬件组成和具体工作流程进行了大体的介绍,现对其各功能的实现方式分别进行讲解。2.2 dsp微控制器dsp(digital
22、 signal processor)是一种独特的微处理器,是以数字信号来处理大量信息的器件。其工作原理是接收模拟信号,转换为0或1的数字信号。再对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。它不仅具有可编程性,而且其实时运行速度可达每秒数以千万条复杂指令程序,远远超过通用微处理器,是数字化电子世界中日益重要的电脑芯片1。它的强大数据处理能力和高运行速度,是最值得称道的两大特色。本程序使用的tms320f28335型数字信号处理器是ti公司的一款tms320c28x系列浮点dsp控制器。与以往的定点dsp相比,该 器件的精度高,成本低, 功耗小,性能高
23、,外设集成度高,数据以及程序存储量大,a/d转换更精确快速等。tms320f28335具有150mhz的高速处理能力,具备32位浮 点处理单元,6个dma通道支持adc、mcbsp和 emif,有多达18路的pwm输出,其中有6路为ti特有的更高精度的pwm输出 (hrpwm),12位16通道adc。得益于其浮点运算单元,用户可快速编写控制算法而无需在处理小数操作上耗费过多的时间和精力,与前代dsc相比,平均性能提高50%,并与定点c28x控制器软件兼容,从而简化软件开发,缩短开发周期,降低开发成本2。2.3定时器中断的实现为了实现定时器的精确走时功能,本系统利用定时器0、pie模块和cpu中
24、断共同作用产生定时器中断。首先为定时器0设置定时初值,并开启定时器使其计数。当定时器计数器寄存器递减到零时,定时器会产生一个中断tint并将其传送给pie外设中断模块,当pie中的中断时能位pieier被时能后,pie会将这个中断传送给cpu,如果cpu的中断使能位和intm被使能,则cpu会相应定时器0中断,转而执行定时器0的中断服务子程序。2.3.1 dsp内部定时器tms320f28335芯片内部具有3个32位的cpu定时器timer0 、 timerl和timer2。其中cpu定时器2被系统保留,用于实时操作系统,例如dsp/ bios;只有cpu定时器0和定时器1可以供用户使用。在本
25、系统中使用的是定时器0,定时器0的内部原理图如下所示:图2-2 定时器0内部结构图cpu定时器的通常工作过程如下,首先把周期寄存器prdh:prd的值装入32位计数寄存器timh:tim中。接着每经过一个timclk周期,计数器就递减一次,最后当计数寄存器timh:tim等于0时,定时器中断输出信号产生一个中断脉冲。其中,timclk由定时器分频器tddrh:tddr和定时器预定标计数器psch:psc来控制。先给定时器分频器tddrh : tddr赋值,然后装载入预定标计数器psch:psc中,每隔一个sysclkout脉冲,psch : psc中的值减1。当psch:psc中的值为0的时候
26、,就会输出一个timclk,从而timh:tim减1。在下一个定时器输入时钟周期开始时,tddrh:tddr中的值重新装载人psch:psc中,周而复始地循环下去3。因此,timclk就等于(tddrh:tddr+1)个系统时钟的时间3。当32位计数器寄存器timh:tim中的值递减到零时,定时器0会产生一个中断tint,并传送给pie,pie对这个中断的处理详见2.3.22.3.2 pie外设中断扩展模块pie一共可以支持96个不同的中断,并把这些中断分成了12个组,每个组有8个中断,而且每个组都被反馈到cpu内核的int1int12这12条中断线中的某一条上。平时能够用到的所有的外设中断都
27、被归人了这96个中断中,被分布在不同的组里3。f28335的中断采用的是三级中断机制,分别为外设级、pie级和cpu级。对于某一个具体的外设中断请求,只要有任意一级不许可,cpu最终都不会响应该外设中断。图2-3 pie模块原理图1.外设级中断一般来说,在程序执行过程中,某一个外设产生了一个中断事件,那么在这个外设的某个寄存器中与该中断事件相关的中断标志位(if= interrupt flag)被置为1。此时,如果该中断相应的中断使能位(ie=interrupt enable)已经被置位,也就是值为1,该外设就会向pie控制器发出一个中断请求。相反,虽然中断事件已经发生了,相应的中断标志位也被
28、置位了,但是该中断没有被使能,也就是中断使能位的值为0,那么外设就不会向pie控制器提出中断请求。但在本系统中,定时器0内部的计数寄存器一旦递减到零,就会向pie产生一个中断请求tint,而无需经过外设内部的中断位置位。2.pie级pie模块的8个外设中断和外部引脚中断复用一个cpu中断,这些中断被分为12组,即一组中的中断复用一个cpu中断。对于复用的中断源,pie模块中的每个中断组都有一个中断标志寄存器(pieifr(x,y))和中断使能寄存器(pieier(x,y)),其中x=pie组1pie组12,y表示一组中的8个复用中断,这样,pieifrx,y和pieierx,y将对应pie组x
29、(x=112)中的中断y(y=18),即代表相应的中断标志位和中断使能位。另外,每一个pie中断组中还存在一个中断应答位pieack。当外设向pie控制器发送中断请求时,则相应的pie中断标志位(pieifrx,y)置位,如果相应的pie中断使能位pieier(x,y)也置位,则pie将检查相应的pieackx位,以确定cpu是否为该组中断准备好。如果pieackx位被清除,则pie会向cpu发送中断请求,如果pieackx位是1,则pie将一直等待到该位被清除才向cpu发送中断请求。定时器0的中断tint使用的时pie中的第一组的第七个中断。也就是说,当定时器向pie发出中断请求tint时,
30、pie的pieifr(1,7)会置位,如果pieier(1,7)置位且pieack1被清除,则此中断才会被传送到cpu级中3.cpu级当中断请求被发送到cpu。相应的cpu中断标志位置1,当中断标志锁存到标志寄存器后。相应的中断服务程序没有被执行,直到cpu中断使能寄存器(ier)或调试中断寄存器(dbgier)和全局中断屏蔽位(intm)被使能后才能执行。由于定时器0占用的是pie第一组的第七个中断线。所以在cpu级中,定时器0的中断是经过cpu的第一条中断线int1进行传输的。当定时器0的中断传输到cpu级后,ifr1会被置位,如果ier和intm都被使能,那么定时器0的中断服务子程序才会
31、被执行。2.4 数码管显示电路本系统的数码管显示电路主要由spi、74hc164和4位共阳数码管组成三部分组成。其中spi串行通信接口负责把数码管需要的数据一位一位的传送给74hc164芯片,再由74hc164将数码管所需的段码并行输出给数码管,这样数码管就可以显示数据了。图2-4 显示系统电路原理图数码管显示系统的电路连接原理图如上图所示。首先,数据要利用spi在dsp和74hc164之间进行通信。由于74hc164有两个输入端a和b,而本系统只用到了一个输入,所以把这两个输入端都接上spi的主出从入线,74hc164的时钟信号端自然是接spi的sclk线,因为通信过程中的时钟信号始终是由主
32、机提供的,而74hc164只是从机。其次74hc164还有8个输出qaqh,其中qa是高位,qh是低位,所以qa接数码管的小数点dp位,qbqh分别接数码管的ga位。最后,四位数码管的四条位选线分别接三极管的发射极。三极管的集电极接+5v电源,基极分别接dsp的四个gpio口52、53、54和55。数码管通过动态扫描的方式进行轮流点亮。2.4.1 spi串行外设接口spi是serial peripheral interface的缩写,翻译成中文就是串行外围设备接口。spi最早是由freescale(原motorola)公司在其mc68 hcxx系列处理器上定义的一种高速同步串行通信接口。spi
33、通常用于dsp和外设及其他处理器之间的通信。典型的应用包括扩展i/o,还可以通过移动寄存器,显示驱动器、模拟转换器等器件所做的外设扩展。spi支持主/从模式的多机通信。f28335系列dsp还支持一个16级深度的接受发送fifo、用来减少cpu的开销5。1、spi的通信原理。spi以主从方式进行工作,这种模式的通信系统中通常有一个主设备和多个从设备。其中,cs信号是用来控制从机的芯片是否被选中的。系统内如果有一个主设备m1和两个从设备s1和s2。当si的片选信号为低电平时,s1被选中,ml通过mosi引脚发送数据,s1通过mosi引脚接收数据,或者s1通过miso引脚发送数据,而m1通过mis
34、o引脚接收数据。同样的,当s2的片选信号cs为低电平时,s2被选中,m1通过mosi引脚发送数据,s2通过mosi引脚接收数据,或者s2通过miso引脚发送数据,而m1通过miso引脚接收数据。从机只有通过cs信号被选中之后,对此从机的操作才一会有效,可见片选信号的存在使得允许在同一总线上连接多个spi设备成为可能。 当从机被选中,和主机建立连接之后,接下来起作用的就是负责通信的3根线了。通信时通过进行数据交换来完成,这里首先要知道spi采用的是串行通信协议,也就是说通信时数据是一位一位进行传输的。这也是sck时钟信号存在的原因,传输时,由sck提供时钟脉冲,mosi和miso引脚则是基于此脉
35、冲完成数据的发送或者接收。当m1给s1发送数据时,数据在时钟脉冲的上升沿或者下降沿时通过mi的mosi引脚发送,在紧接着的下降沿或者上升沿时通过s1的mosi引脚接收6。当s1给m1发送数据时,原理是一样的,只不过通过miso引脚来完成。 值得注意的是,sck信号只由主设备控制,从设备不能控制时钟信号线。因此,在一个基于spi的系统中,必须至少有一个主控设备,其向整个spi系统提供时钟信号,系统内所有的设备都基于这个时钟脉冲进行数据的接收或者发送,所以spi是同步串行通信接口。在点对点的通信中,spi接口不需要寻址操作,且为全双工通信,因此显得简单高效。2、spi模块介绍。图2-5 spi模块
36、内部结构图 1)4个外部引脚 spisomi:spi从输出/主输入引脚; spisimo:spi从输入/主输出引脚 spiste:spi从传送使能引脚; spiclk:spi串行时钟引脚。2)有两种工作模式可以选择:主工作模式和从工作模式。3)波特率:具有125种可编程的波特率。能够使用的最大波特率受到i/o缓冲器最大缓存速度的限制,这些缓冲器是使用在spi引脚上的i/o缓冲器,而最高的波特率不能超过lspclk/4。4)依次发送的数据字的长度为116s位,可以通过寄存器设定。5)能选择的4种脉冲时钟配置方案.6)接收和发送可以同步操作,也就是说可以实现全双工通信。当然,发送功能可以通过spi
37、ctl,寄存器的talk位禁止或者使能。7)与sci相同,发送和接收都能通过查询或者中断方式来实现。8)具有6个控制寄存器、3个数据寄存器和3个fifo寄存器。值得注意的是,spi所有的控制寄存器都是8位,当寄存器被访问时,数据位于低8位,而高8位为0,因此把数据写人spi这6个控制寄存器的高8位是无效的。但是,3个数据寄存器spirxbuf , spitxbuf和spidat都是16位的。3个fifo寄存器也是16位。3、spi的主从工作方式图2-6 spi主从通信原理图图示的是典型的spi工作于主机模式,系统中有两个处理器,处理器1的spi工作于主机模式,而处理器2的spi工作于从机模式。
38、spi工作控制寄存器spictl的master/slave位决定了spi工作于何种模式,当master/slave=1时,spi工作于主机模式,而当master/slave=0时,spi工作于从机模式。从图中也可以看到,时钟信号spiclk是由主机提供给从机的,主机和从机在spiclk的协调下同步进行数据的发送或者接收,数据在时钟脉冲信号的上升沿或者下降沿进行发送或者读取。当然,主机和从机之间进行通信的前提是从机片选信号spiste为低电平,将spi从机选中,也就是将处理器2选中。主机和从机之间可以同时实现数据的发 送和接收,也就是说可以工作于全双工模式。本定时器系统使用的是主控制器模式,在主
39、控制器模式下,spi通过spiclk引脚为整个串行通信网络提供串行时钟。数据是从spisimo引脚输出,并将锁存spisomi引脚输入的数据。spibrr(波特率寄存器)可以配置126种不同的位传输率,该寄存器决定了整个串行通信网络发送和接受数据的位传输率。写入spidat(串行数据寄存器)或spitxbuf(串行输出缓冲寄存器)的书籍启动spisomi引脚的数据发送,数据的最高位(msb)最先发送。与此同时,接受的数据通过spisomi引脚移入spidat的最低有效位(lsb)。当设定的位发送完毕后。已接受的数据移入spirxbuf供cpu读取。数据以右对齐的方式存储于spirxbuf寄存器
40、中。4、波特率的设置 spi通过对寄存器spiibrr的配置,可以实现125种不同的波特率,计算公式如下: 当spibrr = 0、1、2时:spibaudrate=lspclk/4 (2-1) 当spibrr = 3-127时:spibaudrate=lspclk/(spibrr+1) (2-2)式(2-1)和式(2-2)中的lspclk为dsp的低速外设时钟频率。从上面的波特率计算公式可以看出,spi模块最大的波特率为lspclk/4。从式(2-2)可以看出,当spibrr为奇数时,(spibrr+1)为偶数,spiclk信号高电平与低电平在一个周期内保持对称;当spibrr为偶数时,(s
41、pibrr+1)为奇数,spiclk信号高电平和低电平在一个周期内不对称7。当时钟极性位被清零时,spilck的低电平比高电平多一个系统时钟周期;当时钟极性被置位时,spiclk的高电平比低电平多一个系统时钟周期。2.4.2 74hc16474hc164是8位串入、并出移位寄存器,主要用于数字电路和led 显示控制电路应用。74hc164串行输入数据,然后并行输出。数据通过两个输入端(dsa 或 dsb)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不要悬空,所以在本系统中,本设计将两个输入端a和b连接在一起都
42、接在spi的输出口上。时钟 (cp) 每次由低变高时,数据右移一位,输入到 q0, q0 是两个数据输入端(dsa 和 dsb)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。主复位 (mr) 输入端上的一个低电平将使其它所有输入端都无效,同时非同步地清除寄存器,强制所有的输出为低电平。图2-7 74hc164引脚图表2-1 74hc164引脚说明符号管脚名称管脚号描述a,b数据输入1,2该管脚为与门输入qaqh数据输出3,4,5,6,10,11,12,13并行输出口clk时钟输入8在上升沿读取串行数据clr复位9端口输入为低时,所有输入无效,所有输出清零,端口为高时,输出数据vdd逻辑电
43、源15电源gnd逻辑地7系统地2.4.3 数码管数码管是一种半导体发光器件,其基本单元是发光二极管,是常用的一种显示输出元件。按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(com)的数码管,其在应用时应将公共极com接到+5v,当某一字段发光二极管的阴极为低电平时,相应字段就点亮;当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(com)的数码管,其在应用时应将公共极com接到地线gnd上,当某一字段发光二极管的阳极为高电
44、平时,相应字段就点亮;当某一字段的阳极为低电平时,相应字段就不亮。图2-8 七段数码管示意图1.数码管连接原理图数码管有共阳和共阴两种,由于共阴数码管要靠微控制器dsp提供电流,显示效果往往没有共阳数码管好,所以本系统采用的是共阳数码管。共阳极数码管是将所有发光二极管的阳极接在一起作为公共端com,当公共端接高电平时,某一段阴极上的电平为“0”时,该段点亮,电平为“1”时,该段熄灭。本程序用的是共阳连接方式。图2-9共阳数码管连接原理图表2-2共阳数码管段码表字型dpgfedcba段码011000000c0h111111001f9h210100100a4h310110000b0h4100110
45、0199h51001001092h61000001082h711111000f8h81000000090h91001000090h2.驱动方式1)静态显示驱动静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个gpio端口进行驱动,或者使用如bcd码二十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用i/o端口多,如驱动5个数码管静态显示则需要5×840根i/o端口来驱动,实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。2)动态显示驱动数码管动态显示接口是应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划“a,b,c
46、,d,e,f,g,dp”的同名端连在一起,另外为每个数码管的公共极com增加位选通控制电路,位选通由各自独立的i/o线控制,当微控制器输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于微控制器对位选通com端电路的控制,所以只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的com端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的
47、显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的i/o端口,而且功耗更低。本文所用的的是共阳数码管动态显示,如上文所示,4位数码管的8个段选位统一接到74hc164数据输出端,而4个位选端则通过三极管放大电路接到了dsp芯片上不同的4个gpio接口上。当数码管要显示数字时,74hc164将段码输出给4个数码管,由dsp控制4个gpio端口分时轮流点亮,从而实现4个数码管同时点亮的现象。2.5按键控制电路2.5.1 矩阵键盘的概述矩阵键盘是微控制器外部设备中所使用的排布类似于矩阵的键盘组。在键盘中按键数量较多时,为了减少i/o口的占用,通常将按键排列成矩阵形式。在矩阵式键
48、盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,8个gpio就可以构成4×4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。2.5.2 矩阵键盘的硬件设计矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,行线kx4kx1的一端通过电阻接正电源另一端接dsp的gpio50gpio53口作为输入,列线ky4ky1分别接dsp的gpio00gpio03口作为输出。具体的识别及编程方法如下所述
49、。图2-10矩阵键盘硬件连接原理图如图所示:1.设置ky1、ky2、ky3和ky4作为输出口,设置kx1、kx2、kx3和kx4作为输入口2.设置ky1、ky2、ky3和ky4全部输出低电平,3.当有按键被按下时,检测kx1、kx2、kx3和kx4中哪个是低电平,这样就可以确定是哪行的按键被按下;4.确定行之后,让ky1、ky2、ky3和ky4输出的电平依次由低变高,这样如果kyn输出高电平的时候,kx接收到的电平也由低变高,由此就说明是kyn列的按键被按下,按键的位置就被确定了。2.5.3 按键接口的消抖通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按
50、键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而作的措施就是按键消抖。抖动时间的长短由按键的机械特性决定,一般为5ms10ms。这是一个很重要的时间参数,在很多场合都要用到。按键稳定闭合时间的长短则是由操作人员的按键动作决定的,一般为零点几秒至数秒。键抖动会引起一次按键被误读多次。为确保cpu对键的一次闭合仅作一次处理,必须去除键抖动。在键闭合稳定时读取键的状态,并且必须判别到键释放稳定后再作处理。按键的消抖分为软件消抖和硬件消抖两种。图2-11按键抖动示意图1.硬件消抖法硬件消抖法就是在按键中附加去抖动电路,从根上消
51、除抖动产生的可能性。硬件消抖法就是在按键中附加去抖动电路,从根上消除抖动产生的可能性。其电路实际上是由rs触发器构成的单脉冲电路。当按钮开关按下时q端输出低电平,当开关松开时q端恢复高电平,即输出一个负脉冲,以此消除抖动,这种方法适合在键数较少时可用硬件方法消除键抖动。2.软件消抖法 如果按键较多,常用软件方法去抖。一般来说,键按下的时间与操作者的按键动作有关,约为十分之几到几秒不等。而键抖动时间与按键的机械特性有关,一般为510ms不等。软件消抖发就是即检测出键闭合后执行一个延时程序,5ms10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。 本
52、系统主要采用软件消抖法,具体过程将在软件设计部分加以介绍。2.6 led显示电路在定时结束后led要不停地闪亮,提醒用户定时结束。在本次设计中,将一个发光二极管的输入段与电源相连接,输出与dsp芯片的gpio4端口相连接,当gpio端口为低电平时,led点亮9。图2-12 led显示系统电路图3 定时器软件的设计3.1 主函数程序设计在程序执行之前,首先需要对dsp芯片的各个部分进行初始化,如系统时钟,cpu中断,中断向量表等。由于本系统用到了定时器,spi,gpio接口等部件,所以也要对这些部分进行相应的初始化。 1.要使f28335能够工作,在上电开始的时候就需要对f28335进行系统初始
53、化,以提供正常运行的基本条件,例如分配时钟信号,这是通过系统初始化函数来实现的。 f28335的系统初始化函数是initsysctrl()。这个函数对pll锁相环,看门狗(默认为关闭),spi等外设的时钟都进行了初始化。 2.初始化了必要的时钟之后,就需要对本程序中会用到的外设及其接口进行初始化,包括spi、定时器0、按键矩阵、数码管和看门狗。 3.之后就是对dsp的中断及pie进行设置。初始化cpu中断和pie相应的寄存器、再对中断向量表进行赋值。 4.设定定时器0的计数周期(即每隔多久产生一个中断从而进入中断服务子程序)、开启计时器和看门狗。 5.死循环,其中编写系统将要执行的主要功能。3
54、.2 spi的初始化由于本系统中用到了spi,所以要对相关的spi寄存器进行初始化。spi的初始化函数有initspiagpio();spi_init();spi_fifo_init();这三个函数分别是对spi的接口初始化,对spi的功能初始化和对spi的fifo模块进行初始化。 initspiagpio()函数在工程的dsp2833x_spi.c文件中。前文提到,dsp的spi模块采用的是四线制,即主机与从机采用四根线进行通信(spisomi、spiclk、spiste和spisimo)。而进行数据传输就要用到dsp的gpio接口,因此就需要对这四根线所用到的gpio接口进行初始化设置,如
55、下gpioctrlregs.gpbmux2.bit.gpio54 = 1; /spisimoagpioctrlregs.gpbmux2.bit.gpio55 = 1; /spisomiagpioctrlregs.gpbmux2.bit.gpio56 = 1; /spiclka gpioctrlregs.gpbmux2.bit.gpio57 = 1; /spistea这四行语句即表示将gpio的54、55、56和57接口设置为外设i/o模式。spi_init()为对spi控制寄存器进行初始化的函数。在这个函数中,本设计对spi的配置控制寄存器、工作控制寄存器,波特率寄存器和优先级寄存器都进行了相
56、应的初始化9。图3-1 spi配置控制寄存器情况图上图是配置控制寄存器各位的情况图图3-2 spi工作配置寄存器情况图上图是工作配置寄存器各位的情况图图3-3 spi波特率寄存器情况图上图是波特率寄存器的情况图图3-4 spi优先权寄存器情况图上图是优先权寄存器的各位情况图以下是初始化函数的主要部分spiaregs.spiccr.all =0x004f; spiaregs.spictl.all =0x0006; spiaregs.spibrr =0x007f;spiaregs.spiccr.all =0x00df; spiaregs.spipri.bit.free = 1; 该函数的主要功能为:先配置spiccr寄存器,初始化spi到复位状态,设置时钟极性为上升沿输入,下降沿输出状态,字长控制为16位;再配置spictl寄存器,禁止溢出中断使能位,设置spi时钟相位为普通spi时钟方式,设置spi为网络主机,即就是将dsp设置为主机,不使能spi中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年高中地理 第二章 区域生态环境建设 第1节 荒漠化的防治-以我国西北地区为例教学实录 新人教版必修3
- 客服工作总结(集锦15篇)
- 2021学生读弟子规心得体会
- JCT2550-2019泡沫混凝土自保温砌块
- 初中的我作文汇编5篇
- 2024年度智能仓储系统施工委托合同3篇
- 钢贸金融学知识之托盘业务
- 2024年版基础设施建设项目土地征用协议示例版B版
- 公司个人原因辞职报告合集6篇
- 2024-2025年高中化学 专题1 第2单元 第3课时 电解池的工作原理及应用教学实录 苏教版选修4
- 常见繁体字的简化表 香港人简体字教学
- 《教育经济学》试题及答案
- 塑料模具肥皂盒设计说明书
- 穿越河流工程定向钻专项施工方案
- 地球物理学进展投稿须知
- 社会主义新农村建设建筑废料利用探究
- 解析电力施工项目的信息化管理
- 火炬介绍 音速火炬等
- 制剂申请书(共16页)
- 《质量守恒定律》评课稿
- 人教版七年级上册地理《第4章居民与聚落 第3节人类的聚居地——聚落》课件
评论
0/150
提交评论