新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > DSP與PC機串行通訊的設(shè)計

        DSP與PC機串行通訊的設(shè)計

        作者: 時間:2016-12-20 來源:網(wǎng)絡(luò) 收藏

          5 DSP軟件設(shè)計

          5.1 串口初始化

          首先對寄存器地址、波特率、數(shù)據(jù)位、停止位、奇偶校驗位進行設(shè)置。

          void Set()

          {

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

          *SCICTL1=0X13; //使能發(fā)送和接受

          *SCICTL2=0x03; //使能接受和發(fā)送中斷

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

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

          *SCICTL1=0x33; //使能發(fā)送和接受,復(fù)位

          *SCIPRI=0X60; //SCI 中斷(接受和發(fā)送中斷)為低優(yōu)先級中斷

          }

          5.2 中斷初始化

          a)禁止總中斷子程序

          void inline disable()

          {

          asm("setc INTM");

          asm("setc SXM");

          }

          b)使能總中斷子程序

          void inline enable()

          {

          asm("clrc INTM") ;

          }

          c)中斷服務(wù)程序

          void interrupt uarttr(){

          switch (*PVIR){

          //根據(jù)中斷向量寄存器PVIR 的值區(qū)別是接收還是發(fā)送中斷

          case 6:UartRec();

          //如果PVIR=6,則發(fā)生了接受中斷,執(zhí)行接受中斷服務(wù)程序

          }

          }

          d)當(dāng)由于干擾而引起其它中斷時,中斷進入此程序直接返回主程序

          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; //清除中斷標(biāo)志

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

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

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

          *PADATDIR=0x100; //設(shè)置ADIR 為輸出口

          }

          5.5主程序

          Main(){

          Set();

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

          Initial(); //系統(tǒng)初始化

          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結(jié)束語

          本文作者創(chuàng)新點:利用DSP 的串行通信接口(SCI)和功能強大的開發(fā)環(huán)境CCS,可以方便地實現(xiàn)DSP 與PC 機間的單機或多機串行通信。通過實際運行表明,利用TMS320 的SCI 模塊實現(xiàn)DSP 之間或與PC 機的通信,與傳統(tǒng)的C51 單片機相比,其電路簡單、設(shè)置靈活、運行速度快,性能可靠穩(wěn)定。


        上一頁 1 2 下一頁

        關(guān)鍵詞: DSPPC機串行通訊RS48

        評論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 梨树县| 巴彦淖尔市| 清徐县| 菏泽市| 灵璧县| 祁阳县| 兴义市| 正宁县| 乡城县| 济南市| 靖宇县| 乌苏市| 潮安县| 元氏县| 清新县| 连城县| 秦皇岛市| 安塞县| 霍邱县| 雷山县| 吉林市| 临沭县| 云龙县| 高清| 祁门县| 渝中区| 任丘市| 长丰县| 河源市| 化州市| 永靖县| 石河子市| 包头市| 鄂托克前旗| 龙口市| 天长市| 平乡县| 榆林市| 始兴县| 杭州市| 上虞市|