乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      DSP2812 SCI FIFO模式調(diào)試心得

       夢竹軒 2012-08-21

      1、SCI通信格式中數(shù)據(jù)位數(shù)1~8與FIFO深度1~16

      SCI通信格式中的數(shù)據(jù)位數(shù)是指采用SCI傳輸數(shù)據(jù)時一幀數(shù)據(jù)的位數(shù),一幀傳輸1~8位,則兩幀傳輸2~16位;FIFO深度是指有多少數(shù)據(jù)存入到FIFO中時會產(chǎn)生中斷請求事件,F(xiàn)IFO的深度設(shè)定時當(dāng)然要大于所定義的數(shù)據(jù)格式的位數(shù),數(shù)據(jù)位數(shù)一定的情況下,深度越大所發(fā)生的中斷請求頻率越低。

      2、實(shí)際測試

      當(dāng)波特率設(shè)定為19200時,以串口調(diào)試軟件“xfcom21.exe”測試數(shù)據(jù)位分別為1~8,深度分別為1~16。

      串口調(diào)試軟件截圖

      結(jié)果為:

      數(shù)據(jù)位<7位時,無論FIFO深度為多少,傳輸均錯誤,數(shù)據(jù)位為7或8位時,F(xiàn)IFO深度在大于數(shù)據(jù)位的情況下,傳輸均正確;且當(dāng)數(shù)據(jù)位=深度時,傳輸?shù)臄?shù)據(jù)在自行設(shè)定的buffer數(shù)組中各位始終保持不變,穩(wěn)定傳輸,當(dāng)數(shù)據(jù)位小于8位時,buffer數(shù)組中各位輪流變換傳輸,且變換與FIFO深度與數(shù)據(jù)位數(shù)有關(guān)系。

      說明對于FIFO堆棧深度的設(shè)定只影響中斷產(chǎn)生事件的頻率,SCI串口傳輸時設(shè)定數(shù)據(jù)位數(shù)為7或8位傳輸較為穩(wěn)定。

      3、測試所用程序

      void InitSci(void)
      {
       SciaRegs.SCICCR.bit.STOPBITS=0;        //1位停止位
       SciaRegs.SCICCR.bit.PARITYENA=0;       //禁止極性功能
       SciaRegs.SCICCR.bit.LOOPBKENA=0;       //禁止回送測試模式功能
       SciaRegs.SCICCR.bit.ADDRIDLE_MODE=0;   //空閑線模式
       SciaRegs.SCICCR.bit.SCICHAR=7;         //8位數(shù)據(jù)位
       
       SciaRegs.SCICTL1.bit.TXENA=1;          //SCIA模塊的發(fā)送使能
       SciaRegs.SCICTL1.bit.RXENA=1;          //SCIA模塊的接收使能
       
       SciaRegs.SCIHBAUD=0;
       SciaRegs.SCILBAUD=0xC2;                //波特率為19200 

       SciaRegs.SCIFFTX.bit.TXFIFOXRESET=1; //重新使能發(fā)送FIFO的操作
       SciaRegs.SCIFFTX.bit.SCIFFENA=1;     //使能SCI FIFO的功能
       SciaRegs.SCIFFTX.bit.TXFFST=0;       //發(fā)送FIFO隊(duì)列為空
       SciaRegs.SCIFFTX.bit.TXFFINT=0;      //沒有產(chǎn)生發(fā)送FIFO中斷
       SciaRegs.SCIFFTX.bit.TXINTCLR=0;     //沒有清除TXFFINT的標(biāo)志位
       SciaRegs.SCIFFTX.bit.TXFFIENA=1;     //使能發(fā)送FIFO中斷
       SciaRegs.SCIFFTX.bit.TXFFILIL=0;     //發(fā)送中斷級別為0,也就是當(dāng)發(fā)送FIFO為空時發(fā)生中斷

       SciaRegs.SCIFFRX.bit.RXFFOVF=0;      //接收FIFO沒有溢出
       SciaRegs.SCIFFRX.bit.RXOVF_CLR=1;    //對RXFFOVF標(biāo)志位沒有影響
       SciaRegs.SCIFFRX.bit.RXFIFORESET=1;  //重新使能接收FIFO的操作
       SciaRegs.SCIFFRX.bit.RXFIFST=0;      //接收FIFO隊(duì)列為空
       SciaRegs.SCIFFRX.bit.RXFFINT=0;      //沒有產(chǎn)生接收中斷
       SciaRegs.SCIFFRX.bit.RXFFINTCLR=1;   //清除接收中斷標(biāo)志位
       SciaRegs.SCIFFRX.bit.RXFFIENA=1;     //使能FIFO接收中斷
       SciaRegs.SCIFFRX.bit.RXFFIL=8;       //FIFO接收中斷級別為8.也就是說當(dāng)接收FIFO中有8個字符時發(fā)生中斷

       SciaRegs.SCICTL1.bit.SWRESET=1;        //重啟SCI

      }

      DSP28_DefaultIsr.c文件下相應(yīng)中斷函數(shù)處:

      interrupt void SCIRXINTA_ISR(void)     // SCI-A接收中斷函數(shù)
      {
          int i;

          for(i=0;i<8;i++)
          {
           buffer[i] = SciaRegs.SCIRXBUF.all; //接收數(shù)據(jù) 
       } 
       
      // if(strncmp(buffer,"hellodsp",8)==0)
      // {
             SciaRegs.SCIFFTX.bit.TXINTCLR=1; //清除發(fā)送中斷標(biāo)志位,使其響應(yīng)新的中斷
      // }
         
          SciaRegs.SCIFFRX.bit.RXFIFORESET=0;
          SciaRegs.SCIFFRX.bit.RXFIFORESET=1;
       SciaRegs.SCIFFRX.bit.RXFFINTCLR=1;
          PieCtrl.PIEACK.all=0x0100;  //使得同組其他中斷能夠得到響應(yīng)
          EINT;  //開全局中斷vcc

      }

      interrupt void SCITXINTA_ISR(void)     // SCI-A發(fā)送中斷函數(shù)
      {
          int i;

       for(i=0;i<8;i++)
       {
           SciaRegs.SCITXBUF=buffer[i]; //發(fā)送數(shù)據(jù)
       }

          PieCtrl.PIEACK.all=0x0100;  //使得同組其他中斷能夠得到響應(yīng)
          EINT;  //開全局中斷

      }

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多