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

发布者:CyborgDreamer最新更新时间:2011-12-28 关键字:单片机  跳频  SPI  数字信号处理  ATmega103 手机看文章 扫描二维码
随时随地手机看文章

ATmega103单片机是ATMEL公司推出的精简指令集(RISC)AVR(ADVANCE RISC)系列单片机产品,这是一种增强型RISC结构,采用了CMOS技术的8位微控制器?该结构能有效支持高级语言以及密集度极大的汇编器代码程序。

跳频系统(FH)是指载波频率按某种跳频图案(跳频序列)在很宽的频带范围内跳变的通信系统,由于该系统具有抗干扰、抗多径和抗衰落性等能力,故在军用和民用领域都得到了广泛的应用。本系统方案中,信号处理模块主要完成跳频模式(FH)下有关数字信号的处理,包括话音编解码、话音组织及与同步有关的操作等,这些技术目前是跳频系统的关键技术之一。

本文介绍ATmega103单片机的特点及其在FH系统数字信号处理模块中的使用方法,同时详细介绍SPI(Serial Peripheral Interface)的特点和应用。

1 ATmega103单片机概述

ATmega103是基于AVR RISC结构的8-bit低功耗CMOS微处理器,它吸取了PIC系列及8051系列单片机的优点,并作了重大改进,其特点如下:

●供电电压为2.7~6V,主频最高可达12MHz;

●具有120条指令,大多数指令执行时间为单个时钟周期;

●带有128k字节片内可下载的Flash存储器(SPI串行下载1000次寿命)和4k字节的片内RAM以及4k字节的片内EEPROM;

●有32条可编程I/O线、8条输入线和8条输出线;

●具有32个8位通用寄存器;

●内含2个8位定时器和1个16位定时器;

●带有可编程串行UART+SPI接口;

●具有内部中断源和8个外部中断源;

●带有8通道10位A/D转换器、片内模拟比较器以及看门狗等电路;

●可在线编程。

    ATmega103因其上述特点使其成为一种适合于多功能、快速,且具有高度灵活性和高性价比的微控制器。

2 跳频信号处理对单片机的要求

跳频信号处理模块是FH电台的关键部分之一,主要用于完成电台的同步及有关数据处理组织等任务。单片机是该模块的核心,模块的许多功能都是在单片机的直接或间接参与下完成的。综合考虑,单片机在该模块中的作用大致如下:

(1)完成大量数据交换,因为电台在工作时需要接收或传送大量其它单片机以及模块内部的有关参数数据;

(2)完成快速实时处理功能,因为模块对许多信息要求立即处理,例如TOD(Time of Day)信息、话音数据、实时工作频率计算等。

(3)用于数据交换,包括单片机接口、TOD、同步信息、控制状态参数数据接口等。

(4)完成大量运算。一般电台在FH工作方式时,每跳都需要计算TOD、工作频率、接收或发送数据的重新组织。

(5)通过足够的I/O口来提供多种控制状态线,以供电台及模块内部使用。

(6)通过片内大量数据来存储区存取运算过程中产生的大量中间数据。

3 设计思路

根据电台FH信号处理模块对单片机的要求,如果选用89C5X系列单片机,不但在实现功能上比较困难(如运算速度、I/O口数量等),而且所需的外围扩展电路也必须增加(如RAM,通信口等)。而选用ATmega103单片机则能较好地满足设计要求,因此,本设计选用ATmega103单片机来实现信号处理模块的功能。图1所示是其硬件原理图。

此外,在实际使用中,还需注意软件设计。为了便于调试、维护及功能扩展,该系统采用模块化程序设计方案;而且考虑到软件的可靠性,还增加了容错和冗余设计;同时,针对数据接口多的特点,程序中还设计了简明、通用性的接口通信协议。

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时钟空闲时为低电平,在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系列单片机在资源和功能上都有很大的提高,不但控制更加简单、灵活,而且能够节省不少外围电路,因此具有成本和体积上的优势,可完全满足跳频信号处理模块的功能要求。

关键字:单片机  跳频  SPI  数字信号处理  ATmega103 引用地址:AVR单片机在跳频系统数字信号处理中的应用

上一篇:Atmega128单片机的RC5和RC6算法比较与改进
下一篇:基于TMP04的PIC单片机测温设计

推荐阅读最新更新时间:2024-03-16 12:49

AVR单片机教程——蜂鸣器
引子 定时/计数器(简称定时器)是单片机编程中至关重要的一部分,再简单的单片机也会带有定时器。 也许你会觉得我们已经在delay函数中接触过定时器了,然而并不是,它只是软件地通过“浪费时间”来实现延时。我们接触定时器在数码管中,segment_auto函数可以自动完成动态扫描,好像在main函数背后又开了一个线程,两者并行执行一样。这就用到了定时器中断。 中断是一种必要的程序流程控制方法,但这两讲我们先聚焦于利用定时器来输出波形。 本讲中,我们用定时器来输出一定频率的方波,让蜂鸣器发出声音。 定时/计数器 ATmega324PA提供了3个定时器:定时器0、定时器1、定时器2。其中,定时器0和2都是8位的,定时器1是
[单片机]
使用LabVIEW和FPGA来创建一个自动化的微控制器测试系统
对于之前的应用程序测试平台,我们使用公司内部开发的控制器板,但该板需要一套单独的兼容工具链来下载这些应用程序。此外,我们还很难对这些工具链的用户界面进行导航,不得不使用额外的测试和测量设备。 有了虚拟仪器,我们可以使用同一套软件和模块化硬件执行以下测试: 测试常见的协议(SPI, ASC, I2C) 测试 PWM ,ICU 测试 模拟 /数字 转换器 测试控制器区域网络(CAN) 测试时钟和门控 测试多模块同时运行系统 对于需要测试的应用来说,使用FPGA的可重编程功能,它和LabVIEW之间的自动化接口 以及CAN分析仪功能,我们可以很容易地开发我们的系统。 在整个框架上,我们节省了大量的时间和成本。在此之
[测试测量]
Silicon Labs其8位及32位微处理器(MCU)助力智能家居发展
Silicon Labs (亦称“芯科科技”,NASDAQ:SLAB)宣布其8位及32位微处理器(MCU)再获创新的智能设备和云服务提供商及小米生态成员企业云丁科技选用,被应用于该公司最新的智能锁系列产品之中。两家物联网(IoT)公司一直携手为中国的公寓管理及家用市场开发智能锁产品。此外,Silicon Labs、云丁科技及多家领先公司亦宣布共建智能锁安全实验室,将进一步扩展其在相关领域内的合作。 云丁网络技术(北京)有限公司(简称云丁科技)成立于2014年,目前已发展成为领先的智能锁产品开发商及相关云服务提供商,旗下拥有Loock.鹿客、云丁两大品牌,分别针对家用市场和公寓市场。到目前为止,云丁科技的智能锁发货量已超过
[物联网]
Silicon Labs其8位及32位微处理器(<font color='red'>MCU</font>)助力智能家居发展
MCS-51单片机的串行口应用的程序设计举例
1.实验设计 定时中断程序,串行口P3.0、P3.1输出,用74LS164移位寄存器驱动发光二极管 ; 定时器0于方式1,16位,10ms中断一次 ; 40H 10ms定时计数单元 ; 41H 初值为01101101B ; 位地址 00H=1 ; 定时方式1为10MS:THX=0ECH,TLX=78H ; 串行口以方式0工作,不需初始化 2.参考程序 LPOUT EQU 41H ;输出缓冲区 DISP EQU 0DE00H ;显示子程序入口 ; ORG 0000H START: AJMP MAIN ; ORG 000BH ;定时器0中断服 AJMP TINT0 ;务
[单片机]
51单片机入门—共阳数码管的静态显示
共阳数码管的原理图 数码管的类型 CT107D单片机综合实训平台上使用的数码管是F3461BH,倒数第2个字母是“B”,说明这个数码管是共阳类型的,如果该字母为“A”则为共阴类型。不同类型的数据管,其段码数组是截然不同的。 数码管中的位选和段选 F3461BH是一个4位8段的数码管,其中a、b、c、d、e、f、g、dp引脚分别对应8个段码,该8个引脚通过74HC573锁存器与单片机的P0端口相连。另外有com1~com4四个公共控制脚 138译码器和74HC573锁存器 在操控数码管显示的过程中也离不开74HC138译码器和74HC573锁存器(138译码器的作用主要决定使用哪个锁存器) 代码: #include
[单片机]
51<font color='red'>单片机</font>入门—共阳数码管的静态显示
基于51单片机的智能小车系统设计
原理图: 程序运行图: 部分程序: /******************************************************************************* * 文件名称:main.c * 说明:本文件为小车控制的主函数 * 功能:1.看门狗定时器初始化 2.调用函数,进行小车直流电机的开环控制 *******************************************************************************/ #include AT89X52.h #include kongzhi.h /********************
[单片机]
PIC单片机开发之面包板上组装电路
  我们如果想在面包板上组装电路,一般需要参考两种方法,一种是物理接线图,另一种是电子电路图。但是,原始电路图和面包板布线之间都没有对应关系。单片机开发工程师建议,对新手来说,想要在面包板上完成组装,需再次检查PIC单片机和PICKit的引脚号,以防接错,烧毁电子元件和调试器。   首先,我们先来查看实际接线图。如下:      单片机开发工程师提醒,实际的组装顺序没有绝对规则,但是在这里我们将按照以下顺序进行组装。      下图中已经完成了电源的接线,面包板两侧连接电源线是为了更好的布局。这种电源的接线方式已简化,但实际上,在面包板上接线要更复杂一些。所以,在开始在面包板上构建电路之前,可以使用物理接线图来更好
[单片机]
PIC<font color='red'>单片机</font>开发之面包板上组装电路
NEC电子推出支持智能电表的8位MCU及解决方案
NEC电子近日完成了4款用于家用多功能智能电表的8位微控制器的开发,并将从即日起开始发售样品。 该4款新产品中,“78K0/LE3-M”的两款产品主要面向中国等国家常用的单相2线式电表,外部引脚为64根;另外两款“78K0/LG3-M” 产品主要面向日本、北美等国家常用的单相3线式电表,外部引脚为100根。样品价格因内置的存储器的容量的不同而有所差异,其中集成了60KB闪存、2KBRAM的“μPD78F8055”的单个样品售价为800日元。预计将于2010年6月开始批量生产,到2011年,4款产品的生产单月生产规模共计将达到150万个。 目前,在全球范围内,使用的电表数量达到25亿台,其中大多数
[单片机]
NEC电子推出支持智能电表的8位<font color='red'>MCU</font>及解决方案
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved