新闻中心

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

DSP 与PC 机串行通讯的设计

作者: 时间:2011-01-13 来源:网络 收藏


Code Composer Studio 简称CCS,是TI 公司推出的为开发TMS320 系列 软件的集成开发环境(IDE)。CCS 工作在Windows 操作系统下,类似于VC++的集成开发环境,采用图形接口界面,提供有编辑工具和工程管理工具。在CC 环境下串行通信有两种方式:即同步方式和异步方式,在此仅讨论异步方式中的串行通信。PC 串行口发送器输出端和接收器输入端的数据格式为帧信息格式,与TMS320F240的SCI 口格式相同。通信时,双方必须约定通信数据传输格式、传输速率及各自工作方式等。本文设计,当上位机请求通讯时,先发请求通讯命令,下位机有效接收并判断,确认后向上位机发响应码。上位机在收到响应码后,再发操作命令。双方约定:波特率208h;8 位字符,一位停止位,无校验;传送方式:PC 机采用查询方式接收数据,TMS320F240 采用中断方式接收数据。

5 软件设计

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((uwork0x40= =0));

cReceive=(*SCIRXBUF);

cBuffer[k]= cReceive;

if(cReceive= =’.’) {

cBuffer[k+1]=’’;

nlen=k+1;

Set();

Break;

}

k++; k%=16;

}

}


关键词: DSP

评论


相关推荐

技术专区

关闭