日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

TMS320F28335——SCI串口

發(fā)布時(shí)間:2024/8/26 综合教程 40 生活家
生活随笔 收集整理的這篇文章主要介紹了 TMS320F28335——SCI串口 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、IO配置

  以SCIA為例:使用的是GPIO35--SCITXDA GPIOA36--SCIRXDA

  使用寄存器:

  GPBPUD :設(shè)置上拉 GPIO32-GPIO63 對(duì)應(yīng)位0 使能上拉

  GPBQSEL1:

  GPBMUX1:IO模式選擇

  代碼如下:

    GpioCtrlRegs.GPBPUD.bit.GPIO36 = 0;    // Enable pull-up for GPIO28 (SCIRXDA)//使能內(nèi)部上拉
    GpioCtrlRegs.GPBPUD.bit.GPIO35 = 0;       // Enable pull-up for GPIO29 (SCITXDA)//使能內(nèi)部上拉
    GpioCtrlRegs.GPBQSEL1.bit.GPIO36 = 3;  // Asynch input GPIO28 (SCIRXDA) //設(shè)置為異步輸入模式

    GpioCtrlRegs.GPBMUX1.bit.GPIO36 = 1;   // Configure GPIO28 for SCIRXDA operation  //配置為外設(shè)模式
    GpioCtrlRegs.GPBMUX1.bit.GPIO35 = 1;   // Configure GPIO29 for SCITXDA operation//配置為外設(shè)模式

設(shè)置FIFO寄存器:

  

void scia_fifo_init()
{
    SciaRegs.SCIFFTX.all=0xE040;//使能FIFO;清除發(fā)送中斷標(biāo)志位;禁止FIFO發(fā)送中斷;
                                //發(fā)送中斷級(jí)別定義為0;
    SciaRegs.SCIFFRX.all=0x204f;//清除FIFO溢出標(biāo)志位;清除溢出接受中斷標(biāo)志位;禁止
                                //FF接受中斷;接受中斷級(jí)別為16;
    SciaRegs.SCIFFCT.all=0x0;//SCITXBUF到移位寄存器傳送不延遲

}

設(shè)置SCI相關(guān)寄存器: 寄存器描述見(jiàn)http://www.ti.com/lit/ug/sprufz5a/sprufz5a.pdf

void scia_echoback_init()
{
    // Note: Clocks were turned on to the SCIA peripheral
    // in the InitSysCtrl() function

     SciaRegs.SCICCR.all =0x0007;   // 1 stop bit,  No loopback
                                   // No parity,8 char bits,
                                   // async mode, idle-line protocol
    SciaRegs.SCICTL1.all =0x0003;  // enable TX, RX, internal SCICLK,
                                   // Disable RX ERR, SLEEP, TXWAKE
    SciaRegs.SCICTL2.all =0x0003;
    SciaRegs.SCICTL2.bit.TXINTENA =1;//開(kāi)啟接收中斷
    SciaRegs.SCICTL2.bit.RXBKINTENA =1;//開(kāi)啟發(fā)送中斷
    #if (CPU_FRQ_150MHZ)
          SciaRegs.SCIHBAUD    =0x0001;  // 9600 baud @LSPCLK = 37.5MHz.
          SciaRegs.SCILBAUD    =0x00E7;
    #endif
    #if (CPU_FRQ_100MHZ)
      SciaRegs.SCIHBAUD    =0x0001;  // 9600 baud @LSPCLK = 20MHz.
      SciaRegs.SCILBAUD    =0x0044;
    #endif
    SciaRegs.SCICTL1.all =0x0023;  // Relinquish SCI from Reset
}

波特率計(jì)算方式:

發(fā)生一個(gè)字節(jié):

  

void scia_xmit(int a)
{
    while (SciaRegs.SCIFFTX.bit.TXFFST != 0) {}
    SciaRegs.SCITXBUF=a;

}

使用SICA 發(fā)送,串口中斷接收:

  配置參數(shù)如下:

  

static void Init_SCI_A(Uint32 Baud)
{
    //Init  IO
    Uint16 BRR=0;
    EALLOW;
     GpioCtrlRegs.GPBPUD.bit.GPIO36 = 0;    // Enable pull-up for GPIO28 (SCIRXDA)
     GpioCtrlRegs.GPBPUD.bit.GPIO35 = 0;       // Enable pull-up for GPIO29 (SCITXDA)
     GpioCtrlRegs.GPBQSEL1.bit.GPIO36 = 3;  // Asynch input GPIO28 (SCIRXDA)
     GpioCtrlRegs.GPBMUX1.bit.GPIO36 = 1;   // Configure GPIO28 for SCIRXDA operation
     GpioCtrlRegs.GPBMUX1.bit.GPIO35 = 1;   // Configure GPIO29 for SCITXDA operation
    EDIS;

    //set RX  interrput function
    EALLOW;
    PieVectTable.SCIRXINTA = &SciaRxIsr;
    EDIS;

   //set SCIA register
   SciaRegs.SCICCR.all =0x0007;   // 1 stop bit,  No loopback
                                  // No parity,8 char bits,
                                  // async mode, idle-line protocol
   SciaRegs.SCICTL1.all =0x0003;  // enable TX, RX, internal SCICLK,
                                  // Disable RX ERR, SLEEP, TXWAKE
   SciaRegs.SCICTL2.bit.TXINTENA =0;//close TX interrput
   SciaRegs.SCICTL2.bit.RXBKINTENA =1;
    //set Baud BRR= LSPCLK/(Baud*8)-1
   BRR = SCI_LSPCLK/(Baud*8)-1;
   SciaRegs.SCIHBAUD    = (BRR>>8);  // 9600 baud @LSPCLK = 37.5MHz.
   SciaRegs.SCILBAUD    = (BRR&0x00ff);
//   SciaRegs.SCIHBAUD    =0x0001;  // 9600 baud @LSPCLK = 37.5MHz.
//   SciaRegs.SCILBAUD    =0x00E7;
   SciaRegs.SCICTL1.all =0x0023;     // Relinquish SCI from Reset

   EALLOW;
   //set SCI interrput Group
    PieCtrlRegs.PIECTRL.bit.ENPIE = 1;   // Enable the PIE block
    PieCtrlRegs.PIEIER9.bit.INTx1=1;     // PIE Group 9, int1  enable SCIA_RX
    //PieCtrlRegs.PIEIER9.bit.INTx2=1;     // PIE Group 9, INT2  enable SCIA_TX
   EDIS;
}

  發(fā)送數(shù)據(jù)代碼:

  

//send one byte data
static void scia_xmit(int a)
{
    while (SciaRegs.SCIFFTX.bit.TXFFST != 0) {}
    SciaRegs.SCITXBUF=a;
}

//send string
void scia_msg(char * msg)
{
    int i;
    i = 0;
    while(msg[i] != '')
    {
        scia_xmit(msg[i]);
        i++;
    }
}

總結(jié)

以上是生活随笔為你收集整理的TMS320F28335——SCI串口的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。