ADSP2189M在船舶自动识别系统开发中的应用

发布者:荣耀使者最新更新时间:2012-11-14 来源: 21ic 关键字:ADSP2189M  船舶自动识别系统  同步串口 手机看文章 扫描二维码
随时随地手机看文章

  引言

  AIS系统是海上移动VHF波段采用TDMA技术交换数据的一种避碰系统,产品开发基于国际海事组织颁布的ITU-R M1371协议。在开发中采用ADSP2189M作为其数据处理平台,完成各种数据处理,转换,时隙的划分等主要功能。系统的模式如图1所示。

  由电台在161.975MHz和162.025MHz的两个频点上接收GMSK信号,经GMSK调制解调芯片把模拟数据转换成数字信号,数据流通过上位机完成对正确数据的判定,并且删去数据段的起始、填充和结束位,把数据通过并行口发往DSP,DSP完成对接收到数据的处理与分析,建立整个海域的时隙表,完成TDMA的网络登陆、维护,把相关的数据再以不同格式发送到不同的串口输出,按照ITU-R M.1371协议,以ITDMA(增量时分多址)方式接入网络,以SOTDMA(自控时分多址)方式连续运行,从而达到整个网络的TDMA完整性。因此,信号处理单元在系统中处于重要的位置。

图1 DSP与外部设备接口

  ADSP2189M芯片

  ADSP2189M芯片是一种定点DSP,其指令周期为13.3ns,运行速度可达75MIPS。处理器包括算术/逻辑单元(ALU),乘法/累加器(MAC)和桶状移位器。存储器采用哈佛结构,有48K的PRAM和32K的DRAM。两个SPORT同步串口,一个定时器以及主机接口可以和主机处理器直接相连。DMA接口包括内部DMA接口(IDMA)和字节DMA接口(BDMA)。

  AIS系统中2189M的硬件设计

  部分电路如图2所示。

  ·芯片外接33M的晶体,其内部自动倍频到66M;

  ·一个同步串口SPORT与外部的MCU相连,引脚要接上拉电阻;

  ·把SPORT1设置成第二种工作模式,并用软件把I/O口模拟UART,与MAX232芯片连接,数据送往简易显示;

  ·采用IDMA方式与MCU相连,16条并口线连接,启动模式设置为IDMA方式,其4个MODEA~D设置分别为1,0,1,0;

  ·完成IDMA引导装载的步骤如下;

  PWD、EBR、BR、ERSET四个调试引脚必须外接上拉电阻;

  最后写PM(0X0000)的值,程序开始自动执行。

AIS系统的部分电路图

图2 AIS系统的部分电路图

图3 串口接收时序图

图4 时隙划分图[page]

  ADSP2189M接口的软件设计

  Sport0的设置

  采用同步串口与MCU通讯

  DM(0X3FF6)—串口控制寄存器设置如表1所示。

  表1中0~3:接收发送字长,我们定义为16位字长,设置为1111。6~7:帧同步信号电平,为0,高电平有效。8~9:帧同步信号源,为1,内部产生帧同步信号。

  10~11:成帧方式,为1,第二成帧方式。12~13:帧同步,为0,发起通讯必须要帧同步信号,以后不再考虑帧同步信号。14:SCLK的产生方式,为1,内部产生串行时钟。

  DM(0X3FF5)—串口时钟分频系数寄存器dm(sclkdiv)

  在ADSP2189芯片中,采样率与分频数之间的关系如下式F(sclk)=f(clkout)/(sclkdiv+1)/2

  其中,F(sclk)表示运行时钟,F(clkout)表示外接晶振的输出时钟,sclkdiv表示分频数,即存储器应该赋予的值。

  当控制寄存器设置好以后,串口接收时序如图3所示,接收到的数据放在接收缓存区,每接收完一组数据,写一次接收标志位,主程序定期检测标志位,当检测到标志位变化时,调用接收处理子程序。

  Sport1和timer的设置

  由于DSP要输出数据到简易显示,通过UART口相连接,因此把Sport1设置为第二种工作模式(如表2所示)。

  DM(0X3FFF)—系统控制寄存器(如表3所示)。

  表3中,12:SPORT0的使能,设置为1。11:SPORT1的使能,设置为1。10:SPOER1的功能选择,设置为0。

  用I/O口模拟UART,以9600波特率采样,内部定时中断产生速率为3×9600,在一个电平跳变中产生3次采样,取中间的采样值有效。

  DM(0X3FFD)—定时周期寄存器

  DM(0X3FFC)—定时计数寄存器

  外接33M晶体,寄存器存放的数值为:

  period=frequence×2/(3×9600)-1=2314

  芯片以28800波特率产生中断,每次中断程序检测UART的标志位,当标志位有变化时,每3次中断设置一次I/O的输出,直到发送数据结束。

  部分代码设置如下:

  ax0 = 2314;    //定时器设置

  dm(0x3ffc) = ax0;

  dm(0x3ffd) = ax0;

  ax0 = 0;

  dm(0x3ffb) = ax0;  //控制寄存器的设置

  ax0 = b#0001100000000000;

  ax0=b#0111111000001111;

  dm(0x3ff6)=ax0;  //sport0设置

  ax0=0x001f;

  dm(0x3ff5)=ax0;  //SCLKDIV0

  mstat = 0x10;  // 乘法器设置

  ifc=b#0000000001100001;  imask=b#0000100001;  //中断开启

  ena timer;

  //开启定时

  主体软件流程

  系统采用自主式时分复用,把时间分成周期性的帧,每一帧再分割成若干时隙(无论帧或时隙都是互不重叠的),每个时隙就是一个通信信道,分配给一个用户。系统根据一定的时隙分配原则,使各个移动台在每帧内只能按指定的时隙向对方发射信号(突发信号),在满足定时和同步的条件下,基站可以在各时隙中接收到各移动台的信号而互不干扰。

  在寄存器中划分两个信道的空间作为海域的时隙表,如图4所示。

  网络登陆采用概率持续算法(当发现一个候选时间段时,台站在0到100之间随机选取一个概率值LME.RTP1,该值与一个0到10的概率LME.RTP2比较,如果LME.RTP1小于或等于LME.RTP2,则选择这个时间段,反之,LME.RTP2加上一个概率增量与下一个候选时间段比较)。在2250个时间段上随机选择一个空闲时隙作为网络的接入点,然后以ITDMA方式接入。这种方式是一种先报告先占用的形式,在当前发射的数据中指明下一个需要发送数据的时隙号,从而达到预先通知其它台站自身所占用的时隙号,确定在60秒中需要占用的空间。在以后的连续阶段,移动台以SOTDMA方式完成网络的维护和时隙的重新划分。由于协议规定的数据格式中最大只能预知到7分钟的占用情况,所以每隔7分钟,需要在一定范围内重新选择一个新的空闲时隙发送,以次类推,一直以这种连续的状态运行下去。当速度发生改变的时候,系统重新以ITDMA的方式完成新的速率下的网络登陆。

  结语

  采用时分复用的算法,进行一个海域内的网络划分和联接功能。这种DSP信号处理与嵌入式操作系统相结合的模式,可以广泛应用于通讯领域,具有广泛的应用前景。

关键字:ADSP2189M  船舶自动识别系统  同步串口 引用地址:ADSP2189M在船舶自动识别系统开发中的应用

上一篇:MB89P475的UART/SIO结构与应用分析
下一篇:基于AD7892SQ和CPLD的数据采集系统的设计

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

嵌入式系统中串口通信帧的同步方法
引 言 串口通信是日前单片机和DSP等嵌入式系统之间,以及嵌入式系统与PC机或无线模块之间的一种非常重要且普遍使用的通信方式。在嵌入式系统的硬件结构中,通常只有一个8位或16位的CPU,不仅要完成主流程的工作,同时还要处理随时发生的各种中断,因而嵌入式系统中的串口通信程序设计与PC机有很大的不同。若嵌入式系统中.中断服务子程序在系统运行过程中占用了较多的时间,就有可能在中断眼务子程序正运行时,又产生一个同类型或其他类型的中断,从而造成主程序得不到执行或后续中断数据丢失。所以,嵌入式系统中的串口通信虽然看似简单,但其中仍有许多问题值得研究,例如串口通信过程中的帧同步问题。本文针对该问题给出了逐次比较、基于FIFO队列和基于状态机的
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

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

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