基于dsp微控制器定时器设计(编辑修改稿)内容摘要:

断没有被使能,也就是中断使能位的值为 0,那么外设就不会向 PIE 控制器提出中断请求。 但在本系统中,定时器 0 内部的 计数 寄存器一旦递减到零,就会向 PIE 产生一个中断请求 TINT, 而 无需经过外设内部的中断位置位。 第 8 页 级 PIE 模块的 8 个外设中断和外部引脚中断复用一个 CPU 中断,这些中断被分为 12 组, 即 一组中的中断复用一个 CPU 中断。 对于复用的中断源, PIE 模块中的每个中断组都有一个中断标志寄存器( PIEIFR(x,y))和中断使能寄存器( PIEIER(x,y)),其中 x=PIE 组 1~PIE 组 12,y 表示一组中的 8 个复用中断 ,这样, PIEIFRx,y 和 PIEIERx,y 将对应 PIE 组 x( x=1~12)中的中断 y(y=1~8),即代表相应的中断标志位和中断使能位。 另外,每一个 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 时, PIE 的 PIEIFR( 1,7)会置位,如果 PIEIER( 1,7)置位 且 PIEACK1 被清除,则此中断才会被传送到 CPU 级中 级 当中断请求被发送到 CPU。 相应的 CPU 中断标志位置 1, 当中断标志锁存到标志寄存器后。 相应的中断服务程序没有被执行,直到 CPU 中断使能寄存器( IER)或调试中断寄存器( DBGIER)和全局中断屏蔽位( INTM)被使能后才能执行。 由于定时器 0 占用的是 PIE 第一组的第七个中断线。 所以在 CPU 级中,定时器 0 的中断是经过 CPU 的第一条中断线 INT1 进行传输的。 当定时器 0 的中断传输到 CPU 级后, IFR1 会被置位,如果 IER 和 INTM 都被使能,那么定时器 0 的中断服务子程序才会被执行。 数码管显示电路 本系统的数码管显示电路主要由 SPI、 74HC164 和 4 位共阳数码管组成三部分组成。 其中 SPI 串行通信接口负责把数码管需要的数据一位一位的传送给74HC164 芯片,再由 74HC164 将数码管所需的段码并行输出给数码管,这样数码管就可以显示数据了。 第 9 页 图 24 显示系统电路原理图 数码管显示系统的电路连接原理图如上图所示。 首先,数据要利用 SPI 在 DSP 和 74HC164 之间进行通信。 由于 74HC164有两个输入端 A 和 B,而 本系统只用到了一个输入,所以把这两个输入端都接上 SPI 的主出从入线, 74HC164 的时钟信号端自然是接 SPI 的 SCLK 线,因为通信过程中的时钟信号始终是由主机提供的,而 74HC164 只是从机。 其次 74HC164 还有 8 个输出 QA~QH,其中 QA 是高位, QH 是低位, 所以QA 接数码管的小数点 DP 位, QB~QH 分别接数码管的 g~a 位。 最后,四位数码管的四条位选线分别接三极管的发射极。 三极管的 集电极接 +5V 电源, 基极 分别接 DSP 的四个 GPIO 口 5 5 54 和 55。 数码管通过动态扫描的方式进行轮流点亮。 SPI 串行 外设接口 SPI 是 Serial Peripheral Interface 的缩写,翻译成中文就是串行外围设备接口。 SPI 最早是由 Freescale(原 Motorola)公司在其 MC68 HCxx 系列处理器上定义的一种高速同步串行通信接口。 SPI 通常用 于 DSP 和外设及其他处理器之间的通信。 典型的应用包括扩展 I/O,还可以通过移动寄存器,显示驱动器、模拟转换器等器件所做的外设扩展。 SPI 支持主 /从模式的多机通信。 F28335 系列DSP 还支持一个 16 级深度的接受发送 FIFO、用来减少 CPU 的开销 [5]。 SPI 的通信原理。 SPI 以主从方式进行工作,这种模式的通信系统中通常有一个主设备和多个从设备。 其中, CS 信号是用来控制从机的芯片是否被选中的。 系统内如果有一个主设备 M1 和两个从设备 S1 和 S2。 当 SI 的片选信号 第 10 页 为低电平时, S1 被选中, Ml 通过 MOSI 引脚 发送数据, S1 通过 MOSI 引脚接收数据,或者 S1 通过 MISO 引脚发送数据,而 M1 通过 MISO 引脚接收数据。 同样的,当 S2 的片选信号 CS 为低电平时, S2 被选中, M1 通过 MOSI 引脚发送数据 ,S2 通过 MOSI 引脚接收数据,或者 s2 通过 MISO 引脚发送数据,而 M1通过 MISO 引脚接收数据。 从机只有通过 CS 信号被选中之后,对此从机的操作才一会有效,可见片选信号的存在使得允许在同一总线上连接多个 SPI 设备成为可能。 当从机被选中,和主机建立连接之后,接下来起作用的就是负责通信的 3根线了。 通信时通过进行数据交换 来完成,这里首先要知道 SPI 采用的是串行通信协议,也就是说通信时数据是一位一位进行传输的。 这也是 SCK 时钟信号存在的原因,传输时,由 SCK 提供时钟脉冲, MOSI 和 MISO 引脚则是基于此脉冲完成数据的发送或者接收。 当 M1 给 S1 发送数据时,数据在时钟脉冲的上升沿或者下降沿时通过 MI 的 MOSI 引脚发送,在紧接着的下降沿或者上升沿时通过 S1 的 MOSI 引脚接收 [6]。 当 S1 给 M1 发送数据时,原理是一样的,只不过通过 MISO 引脚来完成。 值得注意的是, SCK 信号只由主设备控制,从设备不能控制时钟信号线。 因此,在 一个基于 SPI 的系统中,必须至少有一个主控设备,其向整个 SPI 系统提供时钟信号,系统内所有的设备都基于这个时钟脉冲进行数据的接收或者发送,所以 SPI 是同步串行通信接口。 在点对点的通信中, SPI 接口不需要寻址操作,且为全双工通信,因此显得简单高效。 SPI 模块介绍。 图 25 SPI 模块内部结构图 1)4 个外部引脚 SPISOMI:SPI 从输出 /主输入引脚; 第 11 页 SPISIMO:SPI 从输入 /主输出引脚 SPISTE:SPI 从传送使能引脚; SPICLK:SPI 串行时钟引脚。 2)有两种工作模式可以选择 :主工作模式和从工作模式。 3)波特率 :具有 125 种可编程的波特率。 能够使用的最大波特率受到 I/O 缓冲器最大缓存速度的限制,这些缓冲器是使用在 SPI 引脚上的 I/O 缓冲器,而最高的波特率不能超过 LSPCLK/4。 4)依次发送的数据字的长度为 1~~16s 位,可以通过寄存器设定。 5)能选择的 4 种脉冲时钟配置方案 . 6)接收和发送可以同步操作,也就是说可以实现全双工通信。 当然,发送功能可以通过 SPICTL,寄存器的 TALK 位禁止或者使能。 7)与 SCI 相同,发送和接收都能通过查询或者中断方式来实现。 8)具有 6 个控制寄存器、 3 个数据寄存器和 3 个 FIFO 寄存器。 值得注意的是, SPI 所有的控制寄存器都是 8 位,当寄存器被访问时,数据位于低 8 位,而高 8 位为 0,因此把数据写人 SPI 这 6 个控制寄存器的高 8 位是无效的。 但是,3 个数据寄存器 SPIRXBUF , SPITXBUF 和 SPIDAT 都是 16 位的。 3 个 FIFO 寄存器也是 16 位。 SPI 的主从工作方式 图 26 SPI 主从通信原理图 图示的是典型的 SPI 工作于主机模式,系统中 有两个处理器,处理器 1 的SPI 工作于主机模式,而处理器 2 的 SPI 工作于从机模式。 SPI 工作控制寄存器SPICTL 的 MASTER/SLAVE 位决定了 SPI 工作于何种模式,当 第 12 页 MASTER/SLAVE=1 时, SPI 工作于主机模式,而当 MASTER/SLAVE=0 时, SPI工作于从机模式。 从图中也可以看到,时钟信号 SPICLK 是由主机提供给从机的,主机和从机在 SPICLK 的协调下同步进行数据的发送或者接收,数据在时钟脉冲信号的上升沿或者下降沿进行发送或者读取。 当然,主机和从机之间进行通信的前提是从机片选信号 SPISTE 为低电平,将 SPI 从机选中,也就是将处理器 2 选中。 主机和从机之间可以同时实现数据的发 送和接收,也就是说可以工作于全双工模式。 本定时器系统使用的是主控制器模式,在主控制器模式下, SPI 通过 SPICLK引脚为整个串行通信网络提供串行时钟。 数据是从 SPISIMO 引脚输出,并将锁存 SPISOMI 引脚输入的数据。 SPIBRR(波特率寄存器)可以配置 126 种不同的位传输率,该寄存器决定了整个串行通信网络发送和接受数据的位传输率。 写入 SPIDAT(串行数据寄存器)或 SPITXBUF(串行输出缓冲寄存器)的书籍启动 SPISOMI 引脚的数据发送,数据的最高位( MSB)最先发送。 与此同时,接受的数据通过 SPISOMI 引脚移入 SPIDAT 的最低有效位( LSB)。 当设定的位发送完毕后。 已接受的数据移入 SPIRXBUF 供 CPU 读取。 数据以右对齐的方式存储于 SPIRXBUF 寄存器中。 波特率的设置 SPI 通过对寄存器 SPIIBRR 的配置,可以实现 125 种不同的波特率,计算公式如下 : 当 SPIBRR = 0、 2 时 : SPIBaudRate=LSPCLK/4 (21) 当 SPIBRR = 3127 时 : SPIBaudRate=LSPCLK/(SPIBRR+1) (22) 式 (21)和式 (22)中的 LSPCLK 为 DSP 的低速外设时钟频率。 从上面的波特率计算公式可以看出, SPI 模块最大的波特率为 LSPCLK/4。 从式 (22)可以看出,当SPIBRR 为奇数时, (SPIBRR+1)为偶数, SPICLK 信号高电平与低电平在一个周期内保持对称 ; 当 SPIBRR 为偶数时, (SPIBRR+1)为奇数, SPICLK 信号高电平和低电平在一个周期内不对称 [7]。 当时钟 极性位被清零时, SPILCK 的低电平比高电平多一个系统时钟周期。 当时钟极性被置位时, SPICLK 的高电平比低电平多一个系统时钟周期。 74HC164 74HC164 是 8 位串入、并出移位寄存器,主要用于数字电路和 LED 显示控制电路应用。 第 13 页 74HC164 串行输入数据,然后并行输出。 数据通过两个输入端( DSA 或 DSB)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。 两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不要悬空 ,所以在本系统中,本设计 将两个输入端 A 和 B 连接在一起都接在 SPI的输出口上。 时钟 (CP) 每次由低变高时,数据右移一位,输入到 Q0, Q0 是两个数据输入端( DSA 和 DSB)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。 主复位 (MR) 输入端上的一个低电平将使其它所有输入端都无效,同时非同步地清除寄存器,强制所有的输出为低电平。 图 27 74HC164 引脚图 表 21 74HC164 引脚说明 符号 管脚名称 管脚号 描述 A,B 数据输入 1,2 该管脚为与门输入 QA~QH 数据输出 3,4,5,6,10,11,12,13 并行输出口 CLK 时钟输入 8 在上升沿读取串行数据 CLR 复位 9 端口输入为低时,所有输入无效,所有输出清零,端口为高时,输出数据 VDD 逻辑电源 15 电源 GND 逻辑地 7 系统地 数码管 数码管是一种半导体发光器件,其基本单元是发光二极管,是 常用的一种显示输出 元件。 按能显示多少个 “ 8” 可分为 1 位、 2 位、 4 位等等数码管;按 第 14 页 发光二极管单元连接方式分为共阳极数码管和共阴极数码管。 共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极 (COM)的数码管 ,其 在应用时应将公共极 COM 接到 +5V,当某一字段发光二极管 的阴极为低电平时,相应字段就点亮;当某一字段的阴极为高电平时,相应字段就不亮。 共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极 (COM)的数码管,其 在应用时应将公共极 COM 接到地线 GND 上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮; 当某一字段的阳极为低电平时,相应字段就不亮。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。