《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 基于DSP的图文输入系统
基于DSP的图文输入系统
黎泽清,王明泉,李 博,厚 琳
摘要: 介绍了一种基于DSP+UART实现串行通信的方法,并运用在图文输入系统中。实验表明,该方法能够可靠地实现TMS320C6713与图文输入系统之间的通信。
关键词: DSP UART C6713 TI
Abstract:
Key words :
title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">title="">

  摘  要: 介绍了一种基于DSP+UART实现串行通信的方法,并运用在图文输入系统中。实验表明,该方法能够可靠地实现TMS320C6713与图文输入系统之间的通信。
  关键词: 数字信号处理器;异步串行通信;TL16C752B

   异步串口由于采用RS-232电平,传输距离长、连线简单,因而得到了广泛应用。图文声并现的多媒体电话机的输入部分是图文输入系统,该系统使用TI公司的TMS320C6713 DSP, DSP中有同步高速串口,但没有异步串口,无法与低速设备进行通信。因此如果DSP能通过RS-232/485串口与其他外部设备进行通信,将会为图文输入系统提供极大的方便。图文输入系统采用手写板作为输入设备,方便人们在电话交流中的使用。手写板通过电磁感应产生电信号,并通过RS-232接口输出。但是,TI公司生产的TMS320C6000系列的数字信号处理器不具有异步串口,故实现异步通信功能的设计方法一般有2种:一种基于软件编程来实现,通过编程将DSP的多通道缓冲串行接口(McBSP)改为异步通信串口;另一种基于硬件来实现。采用硬件方法来实现不占用多通道缓冲串行接口,而且可以根据外部设备的需要灵活地设置波特率。 因此,本文采用TI公司的专用异步串行芯片TL16C752B来实现串行通信。
1 TMS320C6713 DSP和手写板简介
  TMS320C6713是高性能的32位浮点DSP,适用于专业音频信号处理,其主频高达300 MHz,处理速度高达2400 MIPS/1800 MFLOPS。采用改进哈佛结构、片上共有264 K×8位存储器,其中4 K×8位一级程序缓存、4 K×8位一级级数据缓存、256 K×8位二级缓存,并且具有丰富的片上外设资源,其中就包括2个同步串口McBSP。此外,TMS320C6713还有32位的EMIP总线、有4个空间,每个空间均可与SDRAM、SBSRAM和异步外设实现无缝接口[1]。本文将异步外设TL16C752B映射在EMIP的CE1空间,所以DSP在访问TL16C752B上的寄存器时只需要将基地址加上偏移量就可以了。
  手写板可分为2大类:手触式与电磁感应式。手触板是利用笔触及到基板时,基板上的电容及电阻发生作用的变化来起作用。因此,所谓“笔”,可以是任何会改变电阻或电容的任何物件,例如手指或塑料棒。由于笔必须接触到基板才能起作用,因此,当笔提起后,将不会产生作用,用起来比较不自然。制造时,由于电阻值与电容值很难做到均匀与精确,所以手触板有一些先天上的限制。电磁感应笔的工作原理:电磁感应笔会放出电磁波,由基板感应到后,计算出笔的位置,由于电磁波能隔空传导,所以笔即使不接触到基板,基板也能感应到。本系统选用电磁感应式手写板,采用接口为RS-232。
2 TL16C752B的组成及结构特点
    TL16C752B采用8位异步并行存储器接口(D7~D0),可与TMS320C6713的外部存储器接口(EMIF)直接相连,具有2个异步串行转换通道(UART-A和UART-B),当使用48 MHz的输入时钟时,波特率最高可以达到3 Mb/s。每个通道包含18个寄存器,通过地址线A2~A0对寄存器进行寻址,并且分别具有64 B的发送FIFO和64 B的接收FIFO。UART-A和UART-B分别由片选信号/CSA和/CSB选通。TL16C752B还提供2个中断请求信号INTA和INTB,分别用于通道A和B申请C6713的中断。其功能模块图如图1所示。

 

 

  TL16C752B的各个寄存器的映射地址[2]如表1所示,其中黑体部分的寄存器为二次寻址的寄存器。

 

  TL16C752B有2种工作流控制模式: 硬件流控制和软件流控制。使用前者通过请求发送引脚RTS和允许发送引脚CTS的硬件连接可自动控制串行数据流,从而提高系统的有效性;后者则通过使用可编程的Xon/ Xoff 字符来自动控制数据传输。本文采用硬件流控制的方式进行电路连接。
3 硬件接口电路
  C6713也采用双电源供电方式,即内核是1.8 V,接口是3.3 V,因此TL16C752B可以直接与DSP相连,简化了电路。但由于手写板采用RS-232电平,在RS-232C标准中的电压相对地是对称的,逻辑“0”的电平为+3 V~+15 V;逻辑“1”的电平为-3 V~-15 V。实际应用中通常由±12 V电源供电,所以与TTL、CMOS接口需电平转换。本系统采用MAX3160来完成电平转换的工作。
  TL16C752B的数据线D7~D0直接与TMS320C6713的ED7~ED0数据线相连,实现数据的传输。TL16C752B的片内寄存器选择线A2~A0与TMS320C713的地址线EA4~EA2相连。当TL16C752B的片选信号/CSA、/CSB为有效电平时,分别选中A、B通道。通道A映射为DSP的地址空间为0x80000000到0x80000007, 通道B映射为DSP的地址空间为0xC0000000到0xC0000007。DSP 采用中断方式接收从手写板输入的数据,通道A、B分别占用DSP的外部中断6和外部中断7,如图2所示。

 

4 DSP软件编程
  在对TLC752B访问之前要对其进行初始化,TL16C752B的初始化程序主要包括以下几部分:
  (1)波特率的设定。TL16C752B包含一个可编程的波特率寄存器分为高位寄存器(DLH)和低位寄存器(DLL),用来存储分频系数的高8位和低8位,它可以在输入时钟的基础上进行分频(最大分频系数为216-1),分频系数的计算公式如下:
  分频系数=输入时钟频率/(比例系数×16×期望得到的波特率)
  注:当MCR寄存器中的bit7为0时,比例系数为1;当MCR寄存器中的bit7为1时,若比例系数为4。
  因此,在输入时钟频率为30.72 MHz时,若想要获得9.6 kb/s的波特率就需要分别向DLH和DLL写入0x00和0xC8。
  (2)增强功能的使能及设置EFR 的相关位。
  (3)对接收FIFO和发送FIFO 的设定, 通过设置MCR、TCR和TLR这3个寄存器来实现。
  (4) 传输数据格式设定, 包括数据位长度(5位、6位、7位或8位)、停止位长度(1位、1.5位或2位)、DMA 传输模式1或0、奇偶校验、是否使用强制校验模式、暂停控制位等。本文设定数据长度为8位,1个停止位,无奇偶校验位,DMA0模式。
  (5)设置FIFO 控制以及中断控制寄存器。
  TL16C752B 初始化程序如下,程序采用C语言编写,具有可移植性:
  #define baudrate_9k6 0x00c8
  #define  UartWordLen 0x0003   //数据长度为8
  #define  UartStopBits 0x0000   //1个停止位
  #define  UartParity 0       //奇偶校验位
  #define RHR 0x0000<<1
  #define IER 0x0001<<1
  #define FCR 0x0002<<1
  #define LCR 0x0003<<1
  #define MCR 0x0004<<1
  #define LSR 0x0005<<1
  #define MSR 0x0006<<1
  #define DLL 0x0000<<1
  #define DLH 0x0001<<1
  #define EFR 0x0002<<1
  Uint8 baudratel,baudrateh,uartdata;
  UARTA_Handle = UART_open(UART_ A);    //打开UART A通道
                         /* 设置波特率. */
  UART_rset(UARTA_Handle, LCR,0x80);   
  BaudRate = baudrate_9k6;   //将波特率设置为9.6 kb/s
  baudratel = (UartBaud & 0x00ff);
  UART_rset(UARTA_Handle, DLL,baudratel);  /*将波特率的低8位字节赋给DLL寄存器*/
  baudrateh = (UartBaud & 0xff00) >> 8;
  UART_rset(UARTA_Handle, DLH,baudrateh);  /*将波特率的高8位字节赋给DLH寄存器*/
  UART_rset(UARTA_Handle, LCR,0x00);
                      /* Set word length. */
  uartdata = UartWordLen + UartStopBits + UartParity;
  UART_rset(UARTA_Handle, LCR,uartdata); //设置传输格式
                      /* Set FIFO 寄存器. */
  UART_rset(UARTA_Handle, FCR,0x02);   //复位FCR寄存器
  UART_rset(UARTA_Handle, FCR,0x07);   //设置FCR寄存器
  UART_rset(UARTA_Handle, MCR,0x08);   //使能UART中断
                      /*设置接收保持寄存器中断RHR. */
  UART_rset(channel, IER, 0x01);     //设置FIFO 接收中断
  UART_rset(channel, MCR,0x49);
  通过扩展串口完成TMS320C6713与图文输入系统串行通信硬件接口比较简单、数据传送距离远、使用经济。该电路及其软件经与图文输入系统的通信实验证明, 在波特率为9 600 kb/s时, 能够可靠地实现两者之间的通信。
参考文献
[1] Texas Instruments. TMS320C6713, TMS320C6713B Floating-point  digital signal processors.2004.
[2] Texas Instruments. TL16C752B 3. 3 - V Dual UART with 64  B FIFO.2000.

此内容为AET网站原创,未经授权禁止转载。