新聞中心

        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]=’ 主站蜘蛛池模板: 敖汉旗| 丰台区| 新野县| 云南省| 平原县| 思茅市| 西盟| 靖安县| 临湘市| 上林县| 千阳县| 宜宾市| 京山县| 黄冈市| 巴林右旗| 仙居县| 保德县| 青海省| 通河县| 祁连县| 乐业县| 凉城县| 康马县| 宿州市| 商南县| 濉溪县| 澄城县| 鄂托克前旗| 厦门市| 张家川| 鹤岗市| 钟祥市| 布拖县| 神池县| 高密市| 邵阳县| 大英县| 宁南县| 江北区| 西乡县| 河北省|