<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 手機(jī)與無(wú)線通信 > 設(shè)計(jì)應(yīng)用 > 一種基于MAX3232的TMS320F2812異步串行通信系統(tǒng)研究和實(shí)現(xiàn)

          一種基于MAX3232的TMS320F2812異步串行通信系統(tǒng)研究和實(shí)現(xiàn)

          作者: 時(shí)間:2012-03-07 來(lái)源:網(wǎng)絡(luò) 收藏

          3 軟件設(shè)計(jì)
          3.1 SCI模塊的初始化
          對(duì)DSP芯片的控制是通過(guò)對(duì)它的寄存器的讀寫來(lái)完成的,的SCI模塊包括13個(gè)寄存器。要使SCI模塊能夠正常工作,必須對(duì)它進(jìn)行初始化。其中設(shè)置主要包括:運(yùn)行模式、協(xié)議、波特率、字符長(zhǎng)度、奇/偶校驗(yàn)、停止位個(gè)數(shù)、中斷使能及級(jí)別確定等。下面為本設(shè)計(jì)中對(duì)SCI模塊的初始化程序:
          void InitSciA ()
          {
          //配置SCITXD和SCIRXD
          EALLOW:
          GpioMuxRegs.CPFMUX.bit.SCITXDA_GPIOF4=1;
          GpioMuxRegs.CPFMUX.bit.SCIRXDA_GPIOF5=1;
          EDIS:
          //軟件復(fù)位SCI
          SciaRegs.SCIGTL1.bit.SWRESET=0;
          //設(shè)置字符格式、協(xié)議、模式
          SciaRegs.SCICCR. bit. SCICHAR=7;
          SciaRegs.SCICCR.bit.PARITYENA=0;
          SciaRegs.SCICCR.bit.LOOPBKENA=0;
          SciaRegs.SCICCR.bit.STOPBITS=0;
          SciaRegs.SCICCR. bit.ADDRIDLE. MODE=0;
          //設(shè)置波特率為9600,LSPCLK=30MHz
          SciaRegs.SCIHBAUD=0x0001;
          SciaRegs.SCILBAUD=0x0085;
          //使能發(fā)送和接收器
          SciaRegs.SCICTL1.bit.TXENA=1;
          SciaRegs.SCICTL1.bit.RXENA=1;
          //使能中斷
          PieCtrl.PIEIER9. bit.INTx1=1;
          PieCtrl.PIEIER9. bit.INTx2=1;
          //退出復(fù)位狀態(tài)
          SciaRegs.SCICTL1.bit.SWRESET=1;
          }
          3.2 SCI模塊發(fā)送和接收數(shù)據(jù)的機(jī)制
          SCI模塊發(fā)送和接收數(shù)據(jù)有兩種方式:一種是查詢方式,另一種是中斷方式。
          查詢方式:就是程序不斷去查詢各自的狀態(tài)標(biāo)志位。對(duì)于發(fā)送數(shù)據(jù),需要查詢的是TXRDY位,如果該位為1,說(shuō)明SCITXBUF已經(jīng)準(zhǔn)備好接收下一個(gè)發(fā)送數(shù)據(jù)。當(dāng)數(shù)據(jù)寫入SCITXBUF后,該位會(huì)自動(dòng)清零,此時(shí)如果TXENA=1,發(fā)送移位寄存器就會(huì)將SCITXBUF中的數(shù)據(jù)發(fā)送出去。而接收數(shù)據(jù)時(shí)需要查詢RXRDY位,當(dāng)SCIRXBUF已經(jīng)準(zhǔn)備好一個(gè)等待CPU讀取的數(shù)據(jù)時(shí),就會(huì)將該位置1,當(dāng)數(shù)據(jù)被CPU讀走后,RXRDY會(huì)自動(dòng)清零。
          中斷方式:在該種方式下,需要我們首先使能外設(shè)級(jí)、PIE級(jí)和CPU級(jí)中斷。此時(shí)TXRDY和RXRDY變成了中斷標(biāo)志位,當(dāng)TXRDY為1時(shí),就會(huì)產(chǎn)生中斷事件,如果各級(jí)中斷都已經(jīng)使能,則程序會(huì)進(jìn)入相應(yīng)的中斷處理函數(shù),完成數(shù)據(jù)的發(fā)送。而當(dāng)RXRDY置位時(shí),就會(huì)產(chǎn)生接收中斷,如果各級(jí)中斷都已經(jīng)使能,則程序進(jìn)入相應(yīng)的中斷處理函數(shù),完成數(shù)據(jù)的接收。這里值得注意的是,2812的外設(shè)的中斷標(biāo)志位一定要手動(dòng)復(fù)位,但是SCI模塊是個(gè)例外,它的中斷標(biāo)志位會(huì)在響應(yīng)中斷后自動(dòng)復(fù)位。
          通過(guò)對(duì)查詢和中斷方式程序的分析可以看出,查詢函數(shù)位于主函數(shù)的for循環(huán)內(nèi),通過(guò)for循環(huán)不斷查詢TXRDY和RXRDY的狀態(tài),因此,程序的運(yùn)行效率比較低,但是程序比較簡(jiǎn)單,易于。對(duì)于中斷方式,只要相應(yīng)的中斷標(biāo)志位置位,并且所有中斷級(jí)都已被使能,就能直接進(jìn)入中斷處理函數(shù),相應(yīng)的功能。因此,程序的運(yùn)行效率高,但程序比較復(fù)雜。綜合考慮,最終選取數(shù)據(jù)接收采用中斷方式,數(shù)據(jù)發(fā)送采用查詢方式。圖2和圖3分別為查詢方式和中斷方式的程序流程圖。

          本文引用地址:http://www.ex-cimer.com/article/155198.htm

          b.jpg c.jpg




          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();