新闻中心

EEPW首页>嵌入式系统>设计应用> 单片机在跳频系统数字信号处理中的应用

单片机在跳频系统数字信号处理中的应用

作者: 时间:2011-11-05 来源:网络 收藏

4.2 SPI的程序设计

在该FH信号处理模块中,通过SPI与FPGA交换数据。FPGA选用Xinlix公司的XCV100。下面具体介绍几个主要的子程序:

(1)SPI的初始化

程序在复位时,通常都要对SPI口进行初始化。设置若为主机。SPI的数据顺序为LSB?低位?在前。SCK时钟空闲时为低电平,在SCK的下降沿采样数据;时钟为系统时钟的1/128。那么,具体的初始化程序如下:

reset:ldi rx,$0

out spsr,rx ?;清SPI中断标志,写冲突标志

ldi rx,$0f7;

out spcr, rx ?;设置SPI的传输参数

(2) SPI的发送程序单片机在跳频系统数字信号处理中的应用

每次需要把10byte的相关码送给FPGA,因此应将SRAM区的$09c2-$09df段设定为SPI的数据缓冲区,然后由SPI从该缓冲区中取数据直到发送完毕。SPI的发送函数如下:

spi_send:ldi xh,$9

ldi xl,$0c2;

sts spififoo,xl ;将SPI缓冲区的输出地址设为$c2

ldi ry, 10 ?;将10byte相关码存入$9c2开始的地址

s67_2: ld rx, y+ ?;y为相关码存放的地址

st x+, rx

s67_3: dec ry

brne s67_2

sts spififoi,xl ;将SPI缓冲区的输入地址存入spififoi

ldi rx,$0aa ?;将发相关码的标志$aa通过SPI

out spdr,rx ?;送给FPGA

sei ?;开中断

ret

(3) SPI的中断程序

每次SPI发送完一字节,都要产生一个中断,以使程序跳转到SPI的中断程序。由于SPI主从机的移位寄存器可以看成是一个分布式的16 位循环移位寄存器,而且在当数据从主机移向从机的同时,数据也从从机移向主机,故在中断程序中,应首先判断SPDR中的数据是否是需要接收的数据(相关值),然后判断SPI缓冲区中的数据(相关码)是否发完,如没有,则继续发送,直到发完为止。具体程序如下:

spi_int:push xl ?;保存寄存器的值

push xh

in xl,sreg

push xl

lds xl, rcormark ?;判断是否为有效数据,“0”为有效

brne spi_2 ?不等于0,跳

in xl, spdr

sts incorbuf, xl ?;将相关值存入incorbuf

spi_2: lds xl, spififoo ;比较缓冲区的输入,输出指针

lds sprx, spififoi

cp xl. sprx ?;

breq spiend ?;相等,则数据发完,跳

ldi xh,$9 ?;不等,则取下一个字节送入spdr

ld sprx, x+

out spdr, sprx

cpi xl, $0e0 ?;调整spififoo指针

brlo spi_0 ?;未超过缓冲区范围,跳

ldi xl, $0c2 ?;超过,将缓冲区开始地

址给spififoo

spi_0: sts spififoo,xl;

spiend:pop xl

out sreg,xl

pop xh

pop xl

reti

5 结束语

本设计方案已通过软硬件调试,结果表明:AT-mega103单片机较89C5X系列单片机在资源和功能上都有很大的提高,不但控制更加简单、灵活,而且能够节省不少外围电路,因此具有成本和体积上的优势,可完全满足跳频信号处理模块的功能要求。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭