新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > DSP与PC机串行通讯的设计

DSP与PC机串行通讯的设计

作者: 时间:2016-12-20 来源:网络 收藏

  5 DSP软件设计

  5.1 串口初始化

  首先对寄存器地址、波特率、数据位、停止位、奇偶校验位进行设置。

  void Set()

  {

  *SCICCR=0x7; //8 位字符,1 停止位,无校验

  *SCICTL1=0X13; //使能发送和接受

  *SCICTL2=0x03; //使能接受和发送中断

  *SCIHBAUD=0x02; //波特率=208h,40MHZ

  *SCILBAUD=0x08; //208h=40*106/(9600*8)-1

  *SCICTL1=0x33; //使能发送和接受,复位

  *SCIPRI=0X60; //SCI 中断(接受和发送中断)为低优先级中断

  }

  5.2 中断初始化

  a)禁止总中断子程序

  void inline disable()

  {

  asm("setc INTM");

  asm("setc SXM");

  }

  b)使能总中断子程序

  void inline enable()

  {

  asm("clrc INTM") ;

  }

  c)中断服务程序

  void interrupt uarttr(){

  switch (*PVIR){

  //根据中断向量寄存器PVIR 的值区别是接收还是发送中断

  case 6:UartRec();

  //如果PVIR=6,则发生了接受中断,执行接受中断服务程序

  }

  }

  d)当由于干扰而引起其它中断时,中断进入此程序直接返回主程序

  void interrupt nothing(){

  return; }

  5.3中断处理

  void UartRec(){

  unsigned int uwork;

  int I, k;

  k=0;

  while(1) {

  do{

  uwork=(*SCIRXST);

  }while((uwork&0x40= =0));

  cReceive=(*SCIRXBUF);

  cBuffer[k]= cReceive;

  if(cReceive= =’。’) {

  cBuffer[k+1]=’’;

  nlen=k+1;

  Set();

  Break;

  }

  k++; k%=16;

  }

  }

  5.4程序初始化

  # include "2407c.h"

  //初始化子程序

  Initial(){

  *IFR=0xFFFF; //清除中断标志

  *WDCR=0Xe8; //不使能看门狗

  *SCSR1=0x81FE; //CLKIN=6M, CLKOUT=24M

  *MCRA=0x3; //use SCITXD, SCIRXD

  *PADATDIR=0x100; //设置ADIR 为输出口

  }

  5.5主程序

  Main(){

  Set();

  Disable(); //屏蔽所有中断

  Initial(); //系统初始化

  Enable(); //使能总中断

  While(1) {

  unsigned int uwork;

  For (intI=0;I《10;I++){

  Do{

  Uwork=(*SCICTL2);

  }while (uwork&0x0c0!=0x0c0);

  (*SCITXBUF)=cAnswer[i];

  *IFR=0x0010;

  Enable();

  }

  Do{

  Uwork=(*SCICTL2);

  }while (uwork&0x0c0!=0x0c0);

  (*SCITXBUF)=‘“’;

  }

  For(;;){

  :

  }

  }

  6结束语

  本文作者创新点:利用DSP 的串行通信接口(SCI)和功能强大的开发环境CCS,可以方便地实现DSP 与PC 机间的单机或多机串行通信。通过实际运行表明,利用TMS320 的SCI 模块实现DSP 之间或与PC 机的通信,与传统的C51 单片机相比,其电路简单、设置灵活、运行速度快,性能可靠稳定。


上一页 1 2 下一页

评论


技术专区

关闭