SCI波特率計算&FIFO中斷標誌和使能邏輯位

 

void scia_fifo_init()	//FIFO寄存器配置
{
   SciaRegs.SCICCR.all =0x0007;   // 1 stop bit,  No loopback 無環回  SCI通信控制寄存器
                                  // No parity,8 char bits,無校驗,8個字符
                                  // async mode, idle-line protocol 異步,空閒模式
   SciaRegs.SCICTL1.all =0x0003;  // enable TX, RX(向緩衝區傳輸), internal SCICLK, 使能收發引腳,SCICLK時鐘週期
                                  // Disable RX ERR, SLEEP, TXWAKE

      //SCITXBUF寄存器中斷使能。該位控制由TXRDY標誌位(SCICTL2.7)置1引起的中斷請求。
     //但是,它不會阻止設置TXRDY標誌(設置表示寄存器SCITXBUF已準備好接收另一個字符)。
   SciaRegs.SCICTL2.bit.TXINTENA =1;
   	   //接收器緩衝/中斷中斷使能。 該位控制由RXRDY標誌或BRKDT標誌(位SCIRXST.6和.5)置1引起的中斷請求。
   //但是,RX / BK INT ENA不會阻止這些標誌的設置。
   SciaRegs.SCICTL2.bit.RXBKINTENA =1;
   //SCI 波特率控制寄存器
   SciaRegs.SCIHBAUD = 0x0000;
   SciaRegs.SCILBAUD = SCI_PRD;   //(150E6/4/(100E3*8))-1   150E6/4=LSPCLCK(默認低速時鐘4倍分頻)  SCI_PRD=BRR

   SciaRegs.SCICCR.bit.LOOPBKENA =1; // Enable loop back
   SciaRegs.SCIFFTX.all=0xC028;		//FIFO 發送寄存器
   SciaRegs.SCIFFRX.all=0x0028;		//FIFO 接收寄存器
   SciaRegs.SCIFFCT.all=0x00;		//FIFO 控制寄存器

   SciaRegs.SCICTL1.all =0x0023;     // Relinquish SCI from Reset 重置SCI,循環上一步SCICTL1的以下的操作
   SciaRegs.SCIFFTX.bit.TXFIFOXRESET=1;		//重新啓用FIFO發送操作
   SciaRegs.SCIFFRX.bit.RXFIFORESET=1;		//重新啓用FIFO接收操作
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章