论文首页哲学论文经济论文法学论文教育论文文学论文历史论文理学论文工学论文医学论文管理论文艺术论文 |
此外,在实际使用中,还需注意软件设计。为了便于调试、维护及功能扩展,该系统采用模块化程序设计方案;而且考虑到软件的可靠性,还增加了容错和冗余设计;同时,针对数据接口多的特点,程序中还设计了简明、通用性的接口通信协议。
4 Atmega103的SPI在FH中的应用
由上述描述可知,SPI在设计中占有重要的地位,模块内部的主要控制和数据交换都由其完成,下面详细介绍SPI在模块中的设计方法。
4.1 SPI的工作原理
ATmega103和外设之间可通过SPI进行高速同步数据传输。主从CPU的SPI连接见图2所示。其中,SCK为主机的时钟输出和从机的时钟输入。把数据写入主机SPI数据寄存器的操作将启动SPI时钟产生器,此时,数据将从主机的MOSI移出,并从从机的MOSI移入,移完一个字节后,SPI时钟停止,并设置发送结束标志。此时如果SPCR的SPIE(SPI中断使能)置位,则引发中断。选择某器件为从机时,可将从机选择输入端SS拉低。主从机的移位寄存器可以看成是一个分布式的16 位循环移位寄存器。当数据从主机移向从机的同时,数据也将从从机移向主机,从而在移位过程中实现主从机的数据交换。
SPI的主要寄存器包括控制寄存器SPCR、状态寄存器SPSR、数据寄存器SPDR。其中SPCR用于设置SPI的中断使能、数据传输顺序、主从机选择、时钟相位和时钟速率等;SPSR为SPI中断标志,用于标志写冲突。SPDR寄存器用于在寄存器文件和SPI移位寄存器之间传递数据。写该寄存器时,将先对数据传送进行初始化,读该寄存器时,读到的将是移位寄存器接收缓冲区的值。
4.2 SPI的程序设计
在该FH信号处理模块中,单片机通过SPI与FPGA交换数据。FPGA选用Xinlix公司的XCV100。下面具体介绍几个主要的子程序:
(1)SPI的初始化
程序在复位时,通常都要对SPI口进行初始化。单片机设置若为主机。SPI的数据顺序为LSB煹臀唬犜谇啊#樱茫耸敝涌障惺蔽低电平,在SCK的下降沿采样数据;时钟为系统时钟的1/128。那么,具体的初始化程序如下:
reset:ldi rx,$0