积分规则 网站地图 帮助中心    
嵌入式软件 单 片 机 DSP 存储器 传感控制 光电显示
嵌入式硬件 CPLD/FPGA SOPC AD/DA 接口电路 模拟设计
I C设计 通信产品 汽车电子 电源产品 消费电子 数控系统
工业控制 军工/航天 安防产品 医疗电子 计算机外设 测试测量
供应 I C
求购 公司库

  IC 求购 销售 公司 论文 DATASHEET 参考设计 论坛
当前位置: 电子技术 >> DSP >> ADI DSP
  相关分类: 应用论文 | TI DSP | 新产品 | 算法 | 下载 | DSP代码示例 | ADI DSP | freescale DSP |
基于ADSP-BF561的控制信号处理系统
 
作者:彭燕   来源:21IC中国电子网    点击数:353   更新时间:2007-9-12
您可以添加到网摘 让更多人关注此文章:

        在某控制信号处理系统中,选用ADSP-BF561作为主控机,外接键盘,LCD显示屏,标准RS232接口,实时时钟等,通过DSP编程来实现对各个功能模块的控制,同时产生多路的数字IO信号。该控制系统还包括电源、时钟、CPLD、FLASH,JTAG调试器、复位电路等基本组成部分,系统框图如图1所示。

                  图1 基于ADSP-BF561的控制信号处理系统框图

    系统电源模块选用TPS54350来实现,外围电路不同的RC值,可以构成不同的输出电压,这里需要产生的是5V、3.3V、1.25V三种电压。时钟电路由48MHz的晶振电路来实现,其输出作为DSP的外围时钟和CPLD的时钟。FLASH用于存储用户的应用程序,JTAG调试口在DSP电路设计中也是必不可少的。后面对各个部分一一介绍,特别是对复位电路,数字IO信号的产生,以及RS232接口进行详细的介绍。

1. 键盘

    键盘选用的是4×4的扫描键盘,如图1所示,由Blackfin的GPIO接口PF5~PF12来实现。其中,KEY_GP3~KEY_GP0为行线输入端,初始化为带上拉电阻的输入口,中断使能(下降沿触发);KEY_GP7~KEY_GP4为列线输出端,初始化为输出低电平。键盘扫描方法同常规的扫描键盘方法相同。

          
                         图 1   扫描键盘结构图

2. LCD显示屏

    LCD显示屏采用320x240的LCD液晶模块。320x240液晶模块配用sed1335驱动接口板,sed1335驱动接口板上配用32K的RAM。LCD除了读写信号线由Blackfin的读写信号来控制以外, 8位数据线由Blackfin的低8位数据线锁存输出,以及其使能信号由Blackfin的AMS3控制,LCD地址分配为0x2C000000。电路连接如图2所示。在对LCD进行控制时,除了要建立在LCD上显示的汉字和英文的字库以外,还要编写对sed1335的底层驱动程序。这可以在LCD自带的驱动程序的基础上,进行代码移植,把它改写成适合BF561的DSP程序。  

              
                           图 2  LCD连接示意图 

3.实时时钟

    控制系统的实时时钟选用了芯片DS1337来实现。DS1337是一个低功耗的串行实时时钟芯片,它有24h/12h制两种模式,它可以输出年、月、日、分、时、秒的形式。它采用I2C协议,Blackfin的PF0和PF1作为I2C的CLK和DATA,而PF3作为实时时钟的中断FLAG,其电路连接示意图如图3所示。

         
                     图3  实时时钟电路连接示意图

4.复位电路

    为了保证DSP在上电或按下复位键时能可靠的复位,一般加一个复位延时电路,选用MAX708S来完成,如图4所示。 

 
                

                               图4 复位电路

    在上电过程中,RESET信号会在VCC达到稳定电压后的一段时间内(约200ms)保持为高,然后再变低。 信号为RESET的“NOT”,即 会相对VCC延时一段时间后再变高,如图5所示。这样,在DSP的各电源电压已稳定的情况下,DSP的复位信号仍为低有效,就可以保证DSP的正常复位。
           
                        图5 上电过程中的 信号

    在上电以后,如果手动按下开关,使得MR上的信号由高→低→高,产生一个低脉冲,这时, 管脚上也会输出一个低脉冲,只是其低电平持续的时间比MR上低电平的持续时间长200ms左右,以保证DSP的复位可靠完成,如图6所示。

          
                       图6 手动复位时的 信号

5.   数字IO信号的产生

    在该控制系统中,要求产生8路数字IO信号。如果把这8路数字IO信号看成一个8bit的数,则需产生一个有限长度的非方波的编码信号,如下图所示。在T0时刻需要产生的数字IO信号为STAT0,比如说10010101;在在T1时刻需要产生STAT1,…,在Tn时刻需要产生STATn,而且T0可能不等于T1或Tn,STAT的状态也各不相同。


                              图7 数字IO信号的状态

    这里选用BF561的看门狗定时器(Watchdog Timer)来实现。在看门狗定时器的操作中,先将计数值写入寄存器WDOG_CNT中,然后看门狗定时器自动将WDOG_CNT的值写入寄存器WDOG_STAT。接着通过寄存器WDOG_CTL使能Watchdog Timer,看门狗定时器开始计数,逐次减小WDOG_STAT的值,直至为0,这时预先编写的程序事件就会发生。要想输出一个8bit的数据,只需往某地址单元写数,对应的数据线就会写出该数据。为了把该数据保持一段时间(Tx的长度),还需使用锁存器将该数据锁住。所以在BF561的DSP程序中先定义了数字IO信号对应的中断事件,且中断优先级较高,这是为了保证定时的精确度,防止别的事件干扰。

            register_handler(ik_ivg9, DIO_WDOGA_ISR);

       然后在中断事件里,把当前要写入的数据写到某地址单元上,然后使能Watchdog Timer,再将定时器的值写入WDOG_CNT中。定时器的计数是以sclk为基准的,程序代码如下:

*pDIO_Data_Port  = codes;

         *pWDOGA_CTL  =DISABLE_WDOG; 

            *pWDOGA_CTL  |=WDOG_EXPIRED_BIT;       

            *pWDOGA_CNT  =times;  

            *pWDOGA_CTL  = ENABLE_GPI;   

        codes和times就是当前要产生的数字IO的编码和长度。由于是一系列编码,可以用数组索引的形式,将当前的值写入。而我们事先定义DIO_Data_Port的地址为0x24000000,这对应BF561的AMS1的地址空间,所以用AMS1作为锁存器的使能信号,将数据线上的数据通过锁存器以后再输出,如下图所示 

       
                                       图8   数字IO的锁存器

6.标准RS232接口

    为了让控制系统与计算机之间可以进行数据的相互传递,系统采用MAX3232芯片来实现,如图9所示:

                       图9   BF561与计算机之间的串口通信框图

    BF561的UART遵循异步串行通信协议,包括:5-8个数据位;1、11/2、2个停止位;有/无奇偶检验。而波特率满足

         
    其中,SCLK是DSP系统的时钟频率,Divisor的值介于1~65536,可以由timer寄存器相应的值得到,满足关系式 

           
    在BF561的初始化设置中,将UART设为8bit数据模式,同时将Timer2设置为WDTH_CAP模式,用Timer2去捕获串口的数据变化率,而Timer2位于TMRS8寄存器里,程序初始化代码如下:

*pUART_LCR = WLS(8);

       *pUART_MCR = LOOP_ENA;       

       *pTMRS8_DISABLE = TIMDIS2;

       *pTMRS8_STATUS = TRUN2 | TOVL_ERR2 | TIMIL2;

       *pTIMER2_CONFIG = TIN_SEL | IRQ_ENA | PERIOD_CNT | WDTH_CAP;

       *pTMRS8_ENABLE = TIMEN2;

       *pUART_GCTL = UCEN;

    在程序一开始,就会按照初始化设置进行自动波特率检测。当有字符输入时,timer会测量连续2次下降沿的宽度,并返回到timer所对应的period寄存器里。比如说,如果发送”@”(0x40h)作为自动波特率检测,发送时包括起始位,总共为8bit,如图10所示。


           图10  自动波特率检测字符”@”(0x40h)

    此处period的大小如上图所示,捕获的UART bits为8位,所以得到

     
    再根据波特率的公式,就可以求得波特率的大小。此段程序代码如下:

Period = *pTIMER2_PERIOD;  //返回period的值

Divisor = Period >> 7;         //右移7bit就相当于除以16×8

BaudRate = SYSCLK/16/divisor;  //得到波特率 

 
结论

    整个控制系统是以LCD显示的界面为基础,按提示进行相应的键盘操作。经过测试,该系统各部分工作正常,无相互干扰现象。实时时钟定时精确,可以达到秒级。数字IO输出的波形编码无乱码,定时精度可达毫秒级。RS232接口传输数据时,以高达115200bit/s的波特率传输,误码率小于5%。该控制系统已成功应用于某雷达系统的控制子系统。

[1]



相关文章
没有相关文章
热门评论排行
·VHDL设计中电路简化问题的
·江苏嵌入式Linux教育培训
·锐极LINUX驱动培训班定于
·基于实时操作系统μC/OS-
·ARM嵌入式系统基础教程(N

文章评论
    没有任何评论
*只显示最新10条评论。评论内容只代表网友观点,与本站立场无关。更多评论
发表评论
  * 请先[登陆]再进行评论,谢谢。
评分: 1分 2分 3分 4分 5分
内容: *
发帖须知:
一.所发文章必须遵守《互联网电子公告服务管理规定》;
二.严禁发布供求代理信息,公司介绍,产品信息等广告宣传信息;
三.严禁恶意重复发帖;
四.严禁对个人,实体,民族,国家等进行漫骂,污蔑,诽谤。
 
热点新闻 [更多]
 
华虹NEC的0.13微米嵌入式工艺取
映绿色风潮 奇美电子在日发
尔必达注资力晶半导体新台币35亿-4
WSTS调降近三年IC市场预期&nb
Vishay 推出具有业界
具备革命性数字安全特性的英飞凌SLE
祥硕科技采用一系列 MIP
安森美半导体荣获德尔福苏州E&S优质
赛普拉斯为用于机器视觉与运动分析应用
赛普拉斯针对机器视觉与全息数据存储应
 
热门下载 [更多]
 
[ PCB设计] Protel99教程下载
[ ] 手把手学单片机20个例
[ ] 单片机做的智能台灯
[ ] 单片机入门书
[ ] linux系统移植开发文档
[ ] IC卡的读写程序
[ ] 8051单片机C语言彻底应用
[ 常用软件] 555定时器电路设计软件V1.2
[ 常用软件] 51定时器计算软件
[ ] ARM处理器应用开发4步骤
 
论坛新帖 [更多]
 
硬件工程师面试题及答案(模拟电...
如何在C语言中跳出多重循环?—...
ARM入门开发步骤...
linux学习点滴...
在linux上安装配置samb...
[转帖]WinCE 5 mem...
四折批发各种数码相机,摄相机等...
最低价销售各种品牌手机...
震撼出售各种品牌笔记本电脑等!...
IC design 的流程...

 
赞助商 [更多]
 

ICP许可证号:[粤 05056597]
联系电话:010-82517432 82517615 传真: 010-82517615

版权所有 Copyright © 2006 嵌入式技术网