Microprocessor/DSP (TMS320F28x) TR28335 ๊ฐœ๋ฐœ KIT SCI ํ†ต์‹ 
  • 728x90
    ๋ฐ˜์‘ํ˜•

     

     

     

    TR28335 SCI ํ†ต์‹  Loop-Back

    SCI(Serial Communications Interface) ํ†ต์‹ 

    ๐Ÿ“Œ SCI ๋Š” ์ง๋ ฌํ†ต์‹ ์€ ์ง๋ ฌํ†ต์‹ ์œผ๋กœ ์ผ๋ฐ˜์ ์œผ๋กœ๋Š” UART(Universal Asynchronous Receiver/Transmitter) ๋ฒ”์šฉ ๋น„๋™๊ธฐ ํ†ต์‹ ๊ธฐ๋กœ ์•Œ๋ ค์ ธ ์žˆ๋‹ค. ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ง๋ ฌ ํ†ต์‹  ๋ฐฉ๋ฒ•์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, RS-232C๋ฅผ ์ง€์›ํ•˜๋ฏ€๋กœ PC์™€์˜ ์ธํ„ฐํŽ˜์ด์Šค์— ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค. ๋…ธ์ด์ฆˆ์— ๊ฐ•ํ•˜๋ฉฐ, ์žฅ๊ฑฐ๋ฆฌ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. TMS320C/F281X DSP๋ฅผ 150MHz๋กœ ๊ตฌ๋™ํ•  ๋•Œ, ์ง€์› ๊ฐ€๋Šฅํ•œ ์ตœ๊ณ  ์†๋„๋Š” 9.37Mbps์ด๋‹ค. ๊ฐ„๋‹จํžˆ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ตฌ์กฐ์ด๋‹ค.

     

     

     

    SCI ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„ ๊ตฌ์กฐ

    ์œ„ ๊ทธ๋ฆผ์„ ๋ณด๋ฉด SCI์˜ ๊ฒฝ์šฐ Idle-line ๋ชจ๋“œ์™€ Address bit ๋ชจ๋“œ ๋‘๊ฐ€์ง€ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๊ฐ€ ์žˆ๋‹ค. ์ด์ค‘ Idle-line ๋ชจ๋“œ๋Š” RS-232C์™€ ๊ฑฐ์˜ ๋™์ผํ•˜๋‹ค. ์‹ค์ œ๋กœ RS-232๋ฅผ ์‚ฌ์šฉํ•˜๋Š” PC์˜ ์‹œ๋ฆฌ์–ผ ํฌํŠธ์™€์˜ ํ†ต์‹ ์€ SCI์˜ Idle-line ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ๊ฐ€๋Šฅํ•œ๋‹ค.

     

    Address-bit ๋ชจ๋“œ์˜ ๊ฒฝ์šฐ๋Š” ๋Œ€๋ถ€๋ถ„ ๋น„์Šทํ•˜์ง€๋งŒ ํ•œ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์ ์ด ์žˆ๋‹ค. ๋ฐ”๋กœ Address bit์˜ ์กด์žฌ์ด๋‹ค. ์ด Address-bit์˜ ์กด์žฌ๋กœ ์ธํ•ด์„œ SCI๋Š” ๋ฉ€ํ‹ฐ๋“œ๋กญ(multi-drop: ํ•˜๋‚˜์˜ ์žฅ์น˜์— ์—ฌ๋Ÿฌ ์žฅ์น˜ ์—ฐ๊ฒฐ)์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค. RS-232C์˜ ๊ฒฝ์šฐ๋Š” ์ด๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. Idle-line ๋ชจ๋“œ๋„ ๋ฉ€ํ‹ฐ๋“œ๋กญ์ด ๊ฐ€๋Šฅํ•˜๊ธด ํ•˜์ง€๋งŒ address-bit๋ชจ๋“œ์— ๋น„ํ•˜์—ฌ ๋ถˆ๋ฆฌํ•œ ๋ฉด์ด ์žˆ๋‹ค.

     

     

    SOURCE TR28335_Sci.h

    /*=======================================================
     *
     * FILE  : TR28335_Sci.h .2017
     * TITLE : TR28335 SCI (Serial Communications Interface)
     *
     *=======================================================*/ 
    #ifndef __TR28335_SCI_H__
    #define __TR28335_SCI_H__
    #ifdef _cplusplus
    extern "C" {
    #endif
    #include <main.h>
    
    void InitSciA(void);
    void SciLpb(void);
    
    #ifdef _cplusplus
    }
    #endif  /* extern "C"        */
    #endif  /* __TR28335_SCI_H__ */

     

    SOURCE TR28335_Sci.c

    /*=======================================================
     *
     * FILE  : TR28335_Sci.c .2017
     * TITLE : TR28335 SCI (Serial Communications Interface)
     *
     *=======================================================*/ 
    #include <TR28335_Sci.h>
    
    Uint16 gSciTxBuf[16];
    Uint16 gSciRxBuf[16];
    Uint16 gSciRxFlag;
    
    static interrupt void scia_txFifo_isr(void);
    static interrupt void scia_rxFifo_isr(void);
    
    /*=======================================
    *
    * Name        : InitSciA
    * Type        : Fucntion
    * Description : SCI Initialization
    *
    =========================================*/
    void InitSciA(void)
    {
        Uint32 i;
        
        /* Vector Remapping */
        EALLOW;
        PieVectTable.SCITXINTA = &scia_txFifo_isr;
        PieVectTable.SCIRXINTA = &scia_rxFifo_isr;
        EDIS;
    
        /* SCI Setting */
        InitSciaGpio();
    
        /* SCI ์ฃผ์š” ์„ค์ • */
        SciaRegs.SCICTL1.bit.SWRESET = 0;       /* SCI ์†Œํ”„ํŠธ์›จ์–ด ๋ฆฌ์…‹ */
    
        SciaRegs.SCICCR.bit.SCICHAR = 7;        /* SCI ์†ก์ˆ˜์‹  Charcter-length ์„ค์ • : 8bit */
        SciaRegs.SCICCR.bit.LOOPBKENA = 0;      /* SCI ๋ฃจํ”„๋ฐฑ ํ…Œ์ŠคํŠธ ๋ชจ๋“œ Enable          */
        SciaRegs.SCICTL1.bit.RXENA = 1;         /* SCI ์ˆ˜์‹ ๊ธฐ๋Šฅ Enable                    */
        SciaRegs.SCICTL1.bit.TXENA = 1;         /* SCI ์†ก์‹ ๊ธฐ๋Šฅ Enable                    */
        SciaRegs.SCIHBAUD = 0x00;               /* SCI Baudrate ์„ค์ •                      */
        SciaRegs.SCILBAUD = 0x79;               /* 38400bps                               */
        SciaRegs.SCIPRI.bit.FREE = 1;           /* SCI ์—๋ฎฌ๋ ˆ์ด์…˜ ํ”„๋ฆฌ ๋ชจ๋“œ               */
    
        /* SCI ์†ก์‹  FIFO ์„ค์ • */
        SciaRegs.SCIFFTX.bit.SCIFFENA = 1;      /* SCI FIFO ์‚ฌ์šฉ ์„ค์ • Enable              */
        SciaRegs.SCIFFTX.bit.TXFFINTCLR = 1;    /* SCI ์†ก์‹  FIFO ์ธํ„ฐ๋ŸฝํŠธ ํ”Œ๋ž˜๊ทธ ํด๋ฆฌ์–ด   */
        SciaRegs.SCIFFTX.bit.TXFIFOXRESET = 1;  /* SCI ์†ก์‹  FIFO RE-enable                */
        SciaRegs.SCIFFTX.bit.TXFFIENA = 1;      /* SCI ์†ก์‹  FIFO ์ธํ„ฐ๋ŸฝํŠธ Enable          */
        SciaRegs.SCIFFTX.bit.TXFFIL = 0;        /* SCI ์†ก์‹  FIFO ์ธํ„ฐ๋ŸฝํŠธ ๋ ˆ๋ฒจ ์„ค์ •       */
    
        /* SCI ์ˆ˜์‹  FIFO ์„ค์ • */
        SciaRegs.SCIFFRX.bit.RXFFINTCLR = 1;    /* SCI ์ˆ˜์‹  FIFO ์ธํ„ฐ๋ŸฝํŠธ ํ”Œ๋ž˜๊ทธ ํด๋ฆฌ์–ด   */
        SciaRegs.SCIFFRX.bit.RXFIFORESET = 1;   /* SCI ์ˆ˜์‹  FIFO RE-Enable                */
        SciaRegs.SCIFFRX.bit.RXFFIENA = 1;      /* SCI ์ˆ˜์‹  FIFO ์ธํ„ฐ๋ŸฝํŠธ Enable          */
        SciaRegs.SCIFFRX.bit.RXFFIL = 16;       /* SCI ์ˆ˜์‹  FIFO ์ธํ„ฐ๋ŸฝํŠธ ๋ ˆ๋ฒจ ์„ค์ •       */
    
        SciaRegs.SCICTL1.bit.SWRESET = 1;       /* SCI ์†Œํ”„ํŠธ์›จ์–ด ๋ฆฌ์…‹ ํ•ด์ œ               */
    
        PieCtrlRegs.PIEIER9.bit.INTx2 = 1;      /* PIE ์ธํ„ฐ๋ŸฝํŠธ (SCITXINTA) : Enable      */
        PieCtrlRegs.PIEIER9.bit.INTx1 = 1;      /* PIE ์ธํ„ฐ๋ŸฝํŠธ (SCIRXINTA) : Enable      */
        IER |= M_INT9;
    
        for (i = 0; i < 16; i++)
            gSciTxBuf[i] = i;
        for (i = 0; i < 16; i++)
            gSciRxBuf[i] = 0;
        gSciRxFlag = 0;
        
        return ;
    }
    
    /*====================================================
    *
    * Name        : scia_txFifo_isr
    * Type        : Interrupt
    * Description : SCI Transmit Interrupt Service Routine 
    *
    ======================================================*/
    static interrupt void scia_txFifo_isr(void)
    {
        Uint32 i;
    
        for (i = 0; i < 16; i++)
            SciaRegs.SCITXBUF = gSciTxBuf[i] & 0x00FF;
        
        SciaRegs.SCIFFTX.bit.TXFFIENA   = 0;
        SciaRegs.SCIFFTX.bit.TXFFINTCLR = 1;        /* Clear Interrupt flag */
    
        PieCtrlRegs.PIEACK.all = PIEACK_GROUP9;     /* Acknowledge interrupt to PIE */
        
        return ;
    }
    
    /*====================================================
    *
    * Name        : scia_rxFifo_isr
    * Type        : Interrupt
    * Description : SCI Receive Interrupt Service Routine 
    *
    ======================================================*/
    static interrupt void scia_rxFifo_isr(void)
    {
        Uint32 i;
    
        for (i = 0; i < 16; i++)
            gSciRxBuf[i] = SciaRegs.SCIRXBUF.bit.RXDT;
    
        gSciRxFlag = 1;
        SciaRegs.SCIFFRX.bit.RXFFOVRCLR = 1;        /* Clear Overflow flag  */
        SciaRegs.SCIFFRX.bit.RXFFINTCLR = 1;        /* Clear Interrupt flag */
        PieCtrlRegs.PIEACK.all = PIEACK_GROUP9;     /* Acknowledge interrupt to PIE */
        
        return ;
    }
    
    /*=======================================
    *
    * Name        : SciLpb
    * Type        : Fucntion
    * Description : SCI Loop-Back Test
    *
    =========================================*/
    void SciLpb(void)
    {
        Uint32 i;
        
        if (gSciRxFlag == 1) {
            for (i = 0; i < 16; i++)
                gSciTxBuf[i]++;                      /* ๋‹ค์Œ์— ์†ก์‹ ํ•  ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝ   */
            SciaRegs.SCIFFTX.bit.TXFFIENA = 1;      /* SCI ์†ก์‹  FIFO ์ธํ„ฐ๋ŸฝํŠธ Enable */
            gSciRxFlag = 0;
        }
        
        return ;
    }

     

     

    ์ฝ”๋“œ ๋ถ„์„

     

    ๐Ÿ“Œ Step .1 SCITXINTA, SCIRXINTA : PIE Vector Table ์— Interrupt Service Routine ์„ ๋“ฑ๋กํ•œ๋‹ค.

     

     

     

    ๐Ÿ“Œ Step .2 SCICTL1 - SWRESET : ๊ฐ’์ด 0์ผ ๋•Œ, SCI๋ชจ๋“ˆ์˜ ํ”Œ๋ž˜๊ทธ ๊ฐ’๋“ค์„ ๋ชจ๋‘ ์ดˆ๊ธฐํ™” ํ•œ๋‹ค. ์ „์†ก ์†๋„๋‚˜ ๊ธฐํƒ€ ๋‹ค๋ฅธ ์„ค์ •์—๋Š” ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋Š”๋‹ค. 0์ธ ๋™์•ˆ์—๋Š” ํ”Œ๋ž˜๊ทธ ๊ฐ’์ด ์ดˆ๊ธฐํ™” ๋œ ์ฑ„๋กœ ๋ณ€ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๋‹ค์‹œ 1์ด ๋˜์—ˆ์„ ๋•Œ ํ”Œ๋ž˜๊ทธ ๊ฐ’์ด SCI๋ชจ๋“ˆ์˜ ์ƒํƒœ์— ๋”ฐ๋ผ ๋ณ€ํ™”ํ•œ๋‹ค.

     

    • RX_ERR_INT_ENA : ํ†ต์‹ ์— ์—๋Ÿฌ๊ฐ€ ์žˆ์„ ๋•Œ, SCIRXST์˜ 7๋ฒˆ ๋น„ํŠธ RX ERROR ๋น„ํŠธ๊ฐ€ 1๋กœ set๋˜๋Š”๋ฐ ๊ทธ ๋•Œ ์ธํ„ฐ๋ŸฝํŠธ ๊ฐ’์„ ์„ค์ •ํ•œ๋‹ค. ๊ฐ’์ด 1์ผ ๋•Œ ์–ธํ„ฐ๋ŸฝํŠธ ํ—ˆ์šฉ, 0์ผ ๋•Œ ์ธํ„ฐ๋ŸฝํŠธ ๋ถˆํ—ˆ์šฉ.
    • TXWAKE : ๋‹ค์ค‘ ํ”„๋กœ์„ธ์„œ ๊ด€๋ จ.
    • SLEEP : ๋‹ค์ค‘ ํ”„๋กœ์„ธ์„œ ๊ด€๋ จ.
    • TXENA : ์†ก์‹  ์‚ฌ์šฉ ์—ฌ๋ถ€๋ฅผ ์„ค์ •ํ•œ๋‹ค. SCITXEMU ์™€ SCITXBUF๋กœ ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ์„ ์ฐจ๋‹จ(0) ํ•  ๊ฒƒ์ธ์ง€ ๋‚ด๋ณด๋‚ผ(1) ๊ฒƒ์ธ์ง€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค.
    • RXENA : ์ˆ˜์‹  ์‚ฌ์šฉ ์—ฌ๋ถ€๋ฅผ ์„ค์ •ํ•œ๋‹ค. SCIRXMU ์™€ SCIRXBUF๋กœ ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ ์ž…๋ ฅ์„ ์ฐจ๋‹จ(0) ํ•  ๊ฒƒ์ธ์ง€ ๋‚ด๋ณด๋‚ผ(1) ๊ฒƒ์ธ์ง€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค.

     

     

     

     

    ๐Ÿ“Œ Step .3 SCICCR : ๋ชจ๋“  ๋น„ํŠธ ๋‚ด์šฉ์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

    • STOP BITS : ๊ฐ’์ด 0์ด๋ฉด 1์Šคํ†ฑ๋น„ํŠธ 1์ด๋ฉด 2์Šคํ†ฑ๋น„ํŠธ.
    • EVEN/ODD PARITY : ๊ฐ’์ด 0์ด๋ฉด ํ™€์ˆ˜ ํŒจ๋ฆฌํ‹ฐ, 1์ด๋ฉด ์ง์ˆ˜ ํŒจ๋ฆฌํ‹ฐ.
    • PARITY ENABLE : ๊ฐ’์ด 0์ด๋ฉด ํŒจ๋ฆฌํ‹ฐ ๋น„ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
    • LOOPBACK ENA : ๋ฃจํ”„๋ฐฑ ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค. 1 ์€ ๋ฃจํ”„๋ฐฑ๋ชจ๋“œ ์‚ฌ์šฉ, 0์€ ๋ฃจํ”„๋ฐฑ๋ชจ๋“œ ๋ฏธ์‚ฌ์šฉ ์ด๋‹ค.
    • IDLE/ADDR MODE : ๊ฐ’์ด 0์ด๋ฉด idle-line ๋ชจ๋“œ ํ”„๋กœํ† ์ฝœ ์‚ฌ์šฉ. 1์ด๋ฉด address-bit ๋ชจ๋“œ ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•œ๋‹ค. idle-line ๋ชจ๋“œ ํ”„๋กœํ† ์ฝœ์ด ์ผ๋ฐ˜์ ์ธ 1:1 ํ†ต์‹  ํ”„๋กœํ† ์ฝœ์ด๋ฉฐ, Address-bit ๋ชจ๋“œ ํ”„๋กœํ† ์ฝœ์€ ํ•œ ๋น„ํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ด๋ฅผ ์‚ฌ์šฉํ•ด ๋‹ค์ค‘ํ”„๋กœ์„ธ์„œ์™€ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ํ•˜์ง€๋งŒ RS-232ํƒ€์ž…๊ณผ ํ˜ธํ™˜์ด ๋˜์ง€ ์•Š๊ณ  Address-bit๋ชจ๋“œ๋ฅผ ์ง€์›ํ•˜๋Š” ํ”„๋กœ์„ธ์„œ ์‚ฌ์ด์—๋งŒ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
    • SCICHAR2-0 : ์ด ์„ธ๊ฐœ์˜ ๋น„ํŠธ๋กœ 0๋ถ€ํ„ฐ 7๊นŒ์ง€ ์„ ํƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ•œ ํ†ต์‹  ํŒจํ‚ท์— ๋ช‡ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ ๋น„ํŠธ๋ฅผ ๋‹ด์„ ๊ฒƒ์ธ์ง€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค. 0์ผ ๋•Œ 1๊ฐœ์˜ ๋น„ํŠธ 1์ผ ๋•Œ 2๊ฐœ์˜ ๋น„ํŠธ 7์ผ ๋•Œ 8๋น„ํŠธ๋ฅผ ๋‹ด๊ฒ ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. ๋ ˆ์ง€์Šคํ„ฐ์— ์ž…๋ ฅํ•œ ์ˆ˜๋ฅผ N์ด๋ผ๊ณ  ํ–ˆ์„ ๋–„, N+1์ด ๋‹ด๊ณ ์žํ•˜๋Š” ๋ฐ์ดํ„ฐ ๋น„ํŠธ์˜ ์ˆ˜๊ฐ€ ๋œ๋‹ค.

     

     

     

     

    ๐Ÿ“Œ Step .4 SCIHBAUD, SCILBAUD : ํ†ต์‹ ์†๋„๋Š” ์œ„ dataSheet์˜ SCI Asynchronous Baud ๊ณต์‹์— ์˜ํ•ด ๊ฒฐ์ •๋œ๋‹ค. LSPCLK๋Š” PLL ํšŒ๋กœ์—์„œ ๊ฒฐ์ •๋œ ์ฃผ๋ณ€ํšŒ๋กœ ๊ณต๊ธ‰ ํด๋Ÿญ์ด๋‹ค. ๋งŒ์•ฝ ๊ณต์‹์˜ ๋ ˆ์ง€์Šคํ„ฐ ๊ฐ’(16๋น„ํŠธ)์— 0๊ฐ’์„ ๋„ฃ์œผ๋ฉด 1์„ ๋„ฃ์€ ๊ฒƒ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ ๊ฐ’์„ ๊ฐ–๋Š”๋‹ค. ๋ ˆ์ง€์Šคํ„ฐ ๊ฐ’์€ 0๋ถ€ํ„ฐ 65535๊นŒ์ง€ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

     

     

     

     

    ๐Ÿ“Œ Step .5 SCICTL2 : ๋ชจ๋“  ๋น„ํŠธ ๋‚ด์šฉ์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

     

    • TXRDY : ๊ฐ’์ด 1์ผ ๋•Œ, ์†ก์‹  ๋ฒ„ํผ(SCITXBUF)๊ฐ€ ์ค€๋น„๋์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ƒํƒœ๋น„ํŠธ์ด๋‹ค. ์ฆ‰, ์†ก์‹  ๋ฒ„ํผ(SCITXBUF)๊ฐ€ ๋น„์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ „์†กํ•  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ์ž„์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.
    • TX EMPTY : ๊ฐ’์ด 1์ผ ๋•Œ, ์†ก์‹  ๋ฒ„ํผ(SCITXBUF)์™€ ์†ก์‹  ์‹œํ”„ํŠธ ๋ ˆ์ง€์Šคํ„ฐ(TXSHF) ๋ชจ๋‘๊ฐ€ ๋น„์›Œ์ ธ ์žˆ๋Š” ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.
    • RX/BK INT ENA : ๊ฐ’์ด 1์ผ ๋•Œ, ์ˆ˜์‹  ์ธํ„ฐ๋ŸฝํŠธ ํ—ˆ์šฉ
    • TX INT ENA : ๊ฐ’์ด 1์ผ ๋•Œ, ์†ก์‹  ์ธํ„ฐ๋ŸฝํŠธ ํ—ˆ์šฉ

     

     

    ๐Ÿ“Œ Step .6 SCIRXST : ๋ชจ๋“  ๋น„ํŠธ ๋‚ด์šฉ์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

     

    • RX ERROR : ์ˆ˜์‹  ์ƒํƒœ์— ์—๋Ÿฌ๊ฐ€ ์žˆ์Œ์„ ์•Œ๋ ค ์ฃผ๋Š” ํ”Œ๋ž˜๊ทธ์ด๋‹ค. ๋ธŒ๋ ˆ์ดํฌ ๊ฒ€์ถœ, ํ”„๋ ˆ์ด๋ฐ ์—๋Ÿฌ, ์˜ค๋ฒ„๋Ÿฐ ํŒจ๋ฆฌํ‹ฐ ์—๋Ÿฌ ์ค‘ ํ•˜๋‚˜ ์ด์ƒ์ด ๋ฐœ์ƒํ•˜๋ฉด ์ด ๋น„ํŠธ๋Š” 1๋กœ ๋ฐ”๋€๋‹ค.
    • RXRDY : ์ˆ˜์‹  ์™„๋ฃŒ ํ”Œ๋ž˜๊ทธ, ๋ฐ์ดํ„ฐ ํ•œ ํ”„๋ ˆ์ž„์ด ๋ชจ๋‘ ๋„์ฐฉ ํ–ˆ์„ ๋•Œ, ์ด ํ”Œ๋ž˜๊ทธ๊ฐ€ 1๋กœ ๋ฐ”๋€๋‹ค.
    • BRKDT : ๋ธŒ๋ ˆ์ดํฌ ๊ฒ€์ถœ ํ”Œ๋ž˜๊ทธ, ๋ธŒ๋ ˆ์ดํฌ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜๋ฉด ์ด ๋น„ํŠธ๊ฐ€ 1๋กœ ๋ฐ”๋€๋‹ค.
    • FE : ํ”„๋ ˆ์ด๋ฐ ์—๋Ÿฌ ํ”Œ๋ž˜๊ทธ
    • OE : ์˜ค๋ฒ„๋Ÿฐ ์—๋Ÿฌ ํ”Œ๋ž˜๊ทธ
    • PE : ํŒจ๋ฆฌํ‹ฐ ์—๋Ÿฌ ํ”Œ๋ž˜๊ทธ
    • RXWAKE : ์ˆ˜์‹  ์›จ์ดํฌ ์—… ๊ฒ€์ถœ ํ”Œ๋ž˜๊ทธ

     

     

    ๐Ÿ“Œ Step .7 SCIRXBUF : ๋ชจ๋“  ๋น„ํŠธ ๋‚ด์šฉ์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

     

    • SCIFFFE : FIFO ๋ชจ๋“œ์—์„œ ํ”„๋ ˆ์ด๋ฐ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด 1๋กœ ๋ฐ”๋€๋‹ค.
    • SCIFFPE : FIFO ๋ชจ๋“œ์—์„œ ํŽ˜๋ฆฌํ‹ฐ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด 1๋กœ ๋ฐ”๋€๋‹ค.
    • RXDT7~0 : ์ˆ˜์‹ ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ๋‹ค. ์ €์žฅ์ด ์™„๋ฃŒ ๋˜๋ฉด RX/BK INT ํ”Œ๋ž˜์Šค ๋น„ํŠธ๊ฐ€ 1๋กœ ๋ฐ”๋€Œ๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์œผ๋ฉด ํ”Œ๋ž˜๊ทธ๊ฐ€ ๋‹ค์‹œ 0์œผ๋กœ ํด๋ฆฌ์–ด ๋œ๋‹ค.

     

     

    ๐Ÿ“Œ Step .8 SCITXBUF : SCI ๋ชจ๋“ˆ์—์„œ ์ „์†กํ•  ๋ฐ์ดํ„ฐ๋ฅผ ์ง‘์–ด ๋„ฃ๋Š” ๋ ˆ์ง€์Šคํ„ฐ์ด๋‹ค. ์ด ๋ ˆ์ง€์Šคํ„ฐ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ง‘์–ด ๋„ฃ์œผ๋ฉด, TXSHF๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ–์œผ๋กœ ์ „์†ก๋œ๋‹ค.

     

     

     

    ๐Ÿ“Œ Step .9 SCIFFTX : ๋ชจ๋“  ๋น„ํŠธ ๋‚ด์šฉ์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

     

    • SCIRST : ๊ฐ’์ด 0 ์ผ ๋•Œ, ์ˆ˜์‹ /์†ก์‹  FIFO์ฑ„๋„์„ ์ดˆ๊ธฐํ™” ํ•œ๋‹ค. FIFO์„ค์ •์€ ๊ทธ๋Œ€๋กœ ๋‚จ๋Š”๋‹ค. 1์„ ์“ฐ๋ฉด ๋‹ค์‹œ ์žฌ ๊ธฐ๋Šฅ์„ ํ•˜๊ฒŒ ๋œ๋‹ค.
    • SCIFFENA : 1์„ ์“ฐ๋ฉด FIFO ๊ธฐ๋Šฅ์„ ํ™œ์„ฑํ™” ํ•œ๋‹ค.
    • TXFIFO Reset : 1์ผ ๋•Œ, ์†ก์‹  FIFO ํฌ์ธํ„ฐ๋ฅผ ์ดˆ๊ธฐํ™” ํ•˜๊ณ , ๊ทธ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•œ๋‹ค. 0์ผ ๋•Œ, ๋‹ค์‹œ ํ™œ์„ฑํ™” ํ•œ๋‹ค.
    • TXFFST4~0 : ์†ก์‹  FIFO์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋ช‡ BYTE ๋“ค์–ด์™€ ์žˆ๋Š”์ง€๋ฅผ ํ‘œ์‹œํ•ด ์ค€๋‹ค.
    • TXFFINT Flag : TX FIFO ์ธํ„ฐ๋ŸฝํŠธ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํ”Œ๋ž˜๊ทธ ๋น„ํŠธ์ด๋‹ค. 1์ด๋ฉด ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ์š”์ฒญ๋œ ๊ฒƒ์ด๋‹ค.
    • TXFFINT CLR : 1์„ ์“ฐ๋ฉด, TXFFINT Flag๋ฅผ ํด๋ฆฌ์–ด ํ•œ๋‹ค.
    • TXFFIENA : ์†ก์‹  FIFO ์ธํ„ฐ๋ŸฝํŠธ์˜ ์‚ฌ์šฉ ์—ฌ๋ถ€๋ฅผ ์„ค์ •ํ•œ๋‹ค. 1์ด๋ฉด ์ธํ„ฐ๋ŸฝํŠธ ํ—ˆ์šฉ.
    • TXFFIL4~0 : ์†ก์‹  FIFO์— ๋ช‡ ๋ฐ”์ดํŠธ๊ฐ€ ์ฐจ๋ฉด ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ๊ฒƒ์ธ์ง€๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ ˆ์ง€์Šคํ„ฐ์ด๋‹ค. TXFFIL๊ณผ TXFFST์˜ ๊ฐ’์ด ์ผ์น˜ํ•  ๋•Œ, ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

     

     

     

    ๐Ÿ“Œ Step .10 SCIFFRX : ๋ชจ๋“  ๋น„ํŠธ ๋‚ด์šฉ์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

     

    • RXFFOVF : ์ˆ˜์‹  FIFO์— 16๋ฐ”์ดํŠธ๊ฐ€ ๋ชจ๋‘ ์ฐจ๊ณ  1๋ฐ”์ดํŠธ๊ฐ€ ๋” ์ „์†ก๋˜์–ด ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๊ฐ€ ์ผ์–ด๋‚ฌ์„ ๋•Œ, 1๋กœ ์…‹ ๋œ๋‹ค.
    • RXFFOVR CLR : 1์ด๋ฉด, RXFFOVF ๋น„ํŠธ๋ฅผ ํด๋ฆฌ์–ด ์‹œํ‚จ๋‹ค.
    • RXFIFO Reset : 1์ผ ๋•Œ, ์ˆ˜์‹  FIFOํฌ์ธํ„ฐ๋ฅผ ์ดˆ๊ธฐํ™” ํ•˜๊ณ , ๊ทธ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•œ๋‹ค. 1์ผ ๋•Œ, ๋‹ค์‹œ ํ™œ์„ฑํ™” ๋œ๋‹ค.
    • RXFIFST4~0 : ์ˆ˜์‹  FIFO์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋ช‡ BYTE ๋“ค์–ด์™€ ์žˆ๋Š”์ง€๋ฅผ ํ‘œ์‹œํ•ด ์ค€๋‹ค.
    • RXFFINT Flag : ์ˆ˜์‹  FIFO ์ธํ„ฐ๋ŸฝํŠธ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํ”Œ๋ž˜๊ทธ ๋น„ํŠธ์ด๋‹ค. 1์ด๋ฉด ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ์š”์ฒญ๋œ ๊ฒƒ์ด๋‹ค.
    • RXFFINT CLR : 1์„ ์“ฐ๋ฉด, RXFFINT Flag๋ฅผ ํด๋ฆฌ์–ด ํ•œ๋‹ค.
    • RXFFIENA : ์ˆ˜์‹  FIFO ์ธํ„ฐ๋ŸฝํŠธ์˜ ์‚ฌ์šฉ ์—ฌ๋ถ€๋ฅผ ์„ค์ •ํ•œ๋‹ค. 1์ด๋ฉด ์ธํ„ฐ๋ŸฝํŠธ ํ—ˆ์šฉ.
    • RXFFIL4~RXFFIL0 : ์ˆ˜์‹  FIFO์— ๋ช‡ ๋ฐ”์ดํŠธ๊ฐ€ ์ฐจ๋ฉด ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ๊ฒƒ์ธ์ง€๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ ˆ์ง€์Šคํ„ฐ์ด๋‹ค. RXFFIL ๊ณผ RXFFST์˜ ๊ฐ’์ด ์ผ์น˜ํ•  ๋•Œ, ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

     

     

     

    ๐Ÿ“Œ Step .11 SCIFFCT : ๋ชจ๋“  ๋น„ํŠธ ๋‚ด์šฉ์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

    ABD , ABD CLR, CDC : ์ด ์„ธ ๊ฐœ์˜ ๋น„ํŠธ๋Š” Auto-baud detect ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์„ค์ •์œผ๋กœ์จ, ์ž๋™์œผ๋กœ ์™ธ๋ถ€์—์„œ ๋“ค์–ด์˜ค๋Š” ๋ฐ์ดํ„ฐ์˜ ์ „์†ก์†๋„๋ฅผ ์ธก์ •ํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 

     

    1. SCIFFCT์˜ CDC๋น„ํŠธ๋ฅผ 1๋กœ ํ•˜๊ณ , ABD๋น„ํŠธ๋ฅผ 0์œผ๋กœ(ADBCLR ๋น„ํŠธ์— 1์„ ์“ด๋‹ค.) ํ•˜๋ฉด, autobaud-detect ๋ชจ๋“œ๋กœ ๋Œ์ž…ํ•œ๋‹ค.
    2. ๋ณด๋ ˆ์ดํŠธ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ 1์ด๋‚˜ 0์œผ๋กœ ํ•จ์œผ๋กœ์จ ๋ณด๋ ˆ์ดํŠธ๋ฅผ 500Kbps๋กœ ์„ธํŒ…ํ•œ๋‹ค.
    3. RXํ•€์œผ๋กœ ๋ฌธ์ž 'A'๋‚˜ 'a' ๊ฐ€ ์ˆ˜์‹ ๋˜๊ฒŒ๋” ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋‚ด๋ถ€์ ์œผ๋กœ, ์ˆ˜์‹ ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ๋ณด๋ ˆ์ดํŠธ๋ฅผ ๊ณ„์‚ฐํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ABD ๋น„ํŠธ๊ฐ€ 1๋กœ ๋ฐ”๋€๋‹ค.
    4. ์ž๋™์œผ๋กœ ๋ณด๋ ˆ์ดํŠธ ๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ ๊ฐ์ง€๋œ ์†๋„๋กœ ์…‹ํŒ…๋˜๊ณ  ๋˜ํ•œ CPU์— ์ˆ˜์‹  ์™„๋ฃŒ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์š”์ฒญํ•˜๊ฒŒ ๋œ๋‹ค.
    5. ์ธํ„ฐ๋ŸฝํŠธ์—์„œ๋Š” SCIFFCT ๋ ˆ์ง€์Šคํ„ฐ์˜ ABD CLR ๋น„ํŠธ๋ฅผ 1๋กœ ์จ์คŒ์œผ๋กœ์จ, ABD๋น„ํŠธ๋ฅผ 0์œผ๋กœ ํด๋ฆฌ์–ด ํ•ด์ฃผ๊ณ , CDC๋น„ํŠธ๋„ 0์œผ๋กœ ํด๋ฆฌ์–ด ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ์ˆ˜์‹  ๋œ 'A'๋˜๋Š” 'a'๋ฌธ์ž๋ฅผ ์ฝ์–ด ์˜จ๋‹ค. FFTXDLY7~0 : TX FIFO๋ชจ๋“œ์—์„œ TXSHF ๋ ˆ์ง€์Šคํ„ฐ์™€ FIFOTXBUF๋ ˆ์ง€์Šคํ„ฐ ์‚ฌ์ด์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณต์‚ฌ๋˜๋Š” ์ฃผ๊ธฐ(๋”œ๋ ˆ์ด)๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค. TX FIFO๋ชจ๋“œ์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ SCITXBUF๋ ˆ์ง€์Šคํ„ฐ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ง‘์–ด ๋„ฃ์œผ๋ฉด ๊ทธ ๋ฐ์ดํ„ฐ๋Š” ๊ณง๋ฐ”๋กœ FIFOTXBUF์— ๋ณต์‚ฌ๋˜๊ณ , ๋˜ ๊ณง๋ฐ”๋กœ TXSHF๋ ˆ์ง€์Šคํ„ฐ์— ๋ณต์‚ฌ๋˜๋Š”๋ฐ ์—ฌ๊ธฐ์—์„œ FIFOTXBUF์—์„œ TXSHF๋กœ ๋ณต์‚ฌ๋˜๋Š” ์ฃผ๊ธฐ(๋”œ๋ ˆ์ด)๋ฅผ ๊ฒฐ์ •ํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ ๋”œ๋ ˆ์ด ์‹œ๊ฐ„์„ ๊ณ„์‚ฐ ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

     

     

     

    ๐Ÿ“Œ Step .12 SCRI : SCIํ†ต์‹  ์ค‘์— ์—๋ฎฌ๋ ˆ์ดํ„ฐ์— ์˜ํ•ด ๋ธŒ๋ ˆ์ดํฌ๊ฐ€ ๊ฑธ๋ ธ์„ ๊ฒฝ์šฐ, ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•  ๊ฒƒ์ธ๊ฐ€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค.

     

    • 00 : ๊ณง ๋ฐ”๋กœ ๋ฉˆ์ถ˜๋‹ค.
    • 10 : ํ˜„์žฌ์˜ TX๋˜๋Š” RX๋™์ž‘์ด ๋๋‚œ ํ›„์— ๋ฉˆ์ถ˜๋‹ค.
    • X1 : ๋ธŒ๋ ˆ์ดํฌ์™€ ์ƒ๊ด€์—†์ด ๊ณ„์† ๋™์ž‘ํ•œ๋‹ค.

     

     

    ๊ฒฐ๊ณผ

     

    728x90
    ๋ฐ˜์‘ํ˜•
์ƒ๋‹จ์œผ๋กœ