mcbsp54.h

来自「DSP 5409 plc应用程序,调试通过,是用在电力线通讯上的演示程序.」· C头文件 代码 · 共 418 行 · 第 1/2 页

H
418
字号
#define __INLINE static inline
#else
#define __INLINE
#endif

/********* Function Definitions ***********************************/
// 
// 
// __INLINE void mcbsp_init(unsigned short port_no, 
// 				 unsigned int spcr1_ctrl, unsigned int spcr2_ctrl,
//                          unsigned int rcr1_ctrl,  unsigned int rcr2_ctrl,
//                          unsigned int xcr1_ctrl,  unsigned int xcr2_ctrl,
//                          unsigned int srgr1_ctrl, unsigned int srgr2_ctrl,
//                          unsigned int mcr1_ctrl,  unsigned int mcr2_ctrl,
//                          unsigned int rcera_ctrl, unsigned int rcerb_ctrl,
//                          unsigned int xcera_ctrl, unsigned int xcerb_ctrl,
//                          unsigned int pcr_ctrl);
// 
// 
// #ifdef _INLINE
// /******************************************************************/
// /* mcbsp_init - initialize and start serial port operation        */
// /*                                                                */
// /******************************************************************/
// static inline void mcbsp_init(unsigned short port_no, 
// 							 unsigned int spcr1_ctrl, unsigned int spcr2_ctrl,
//                              unsigned int rcr1_ctrl,  unsigned int rcr2_ctrl,
//                              unsigned int xcr1_ctrl,  unsigned int xcr2_ctrl,
//                              unsigned int srgr1_ctrl, unsigned int srgr2_ctrl,
//                              unsigned int mcr1_ctrl,  unsigned int mcr2_ctrl,
//                              unsigned int rcera_ctrl, unsigned int rcerb_ctrl,
//                              unsigned int xcera_ctrl, unsigned int xcerb_ctrl,
//                              unsigned int pcr_ctrl)
// {
//    /****************************************************************/
//    /* Place port in reset - setting XRST & RRST to 0               */
//    /****************************************************************/
//    MCBSP_SUBREG_BITWRITE(port_no, SPCR1_SUBADDR, RRST, RRST_SZ, 0);
//    MCBSP_SUBREG_BITWRITE(port_no, SPCR2_SUBADDR, XRST, XRST_SZ, 0);
//     
//    /****************************************************************/
//    /* Set values of all control registers                          */
//    /****************************************************************/
//    MCBSP_SUBREG_WRITE(port_no, RCR1_SUBADDR, rcr1_ctrl);
//    MCBSP_SUBREG_WRITE(port_no, RCR2_SUBADDR, rcr2_ctrl);
//    MCBSP_SUBREG_WRITE(port_no, XCR1_SUBADDR, xcr1_ctrl);
//    MCBSP_SUBREG_WRITE(port_no, XCR2_SUBADDR, xcr2_ctrl);
//    MCBSP_SUBREG_WRITE(port_no, SRGR1_SUBADDR, srgr1_ctrl);
//    MCBSP_SUBREG_WRITE(port_no, SRGR2_SUBADDR, srgr2_ctrl);
//    MCBSP_SUBREG_WRITE(port_no, MCR1_SUBADDR, mcr1_ctrl);
//    MCBSP_SUBREG_WRITE(port_no, MCR2_SUBADDR, mcr2_ctrl);
//    MCBSP_SUBREG_WRITE(port_no, RCERA_SUBADDR, rcera_ctrl);
//    MCBSP_SUBREG_WRITE(port_no, RCERB_SUBADDR, rcerb_ctrl);
//    MCBSP_SUBREG_WRITE(port_no, XCERA_SUBADDR, xcera_ctrl);
//    MCBSP_SUBREG_WRITE(port_no, XCERB_SUBADDR, xcerb_ctrl);
//    MCBSP_SUBREG_WRITE(port_no, PCR_SUBADDR, pcr_ctrl); 
//    
//    MCBSP_SUBREG_BITWRITE(port_no, SPCR1_SUBADDR, RRST, RRST_SZ, 1);
//    MCBSP_SUBREG_BITWRITE(port_no, SPCR2_SUBADDR, XRST, XRST_SZ, 1);
// }
//     
// #endif
// 
// 

/********* Macro Definitions **************************************/


/******************************************************************/
/* MCBSP_BYTES_PER_WORD - return # of bytes required to hold #    */
/*                        of bits indicated by wdlen              */
/******************************************************************/
#define MCBSP_BYTES_PER_WORD(wdlen) \
        ((int)((wdlen) + 1) / 2)

/******************************************************************/
/* MCBSP_ENABLE(unsigned short port_no, unsigned short type) -    */
/*            starts serial port receive and/or transmit          */
/*            type= 1 rx, type= 2 tx, type= 3 both                */
/******************************************************************/
#define MCBSP_ENABLE(port_no,mode) \
         REG_WRITE(SPCR1_ADDR(port_no), \
          (MCBSP_SUBREG_READ(port_no, SPCR1_SUBADDR) | (mode & 1))); \
         REG_WRITE(SPCR2_ADDR(port_no), \
          (MCBSP_SUBREG_READ(port_no, SPCR2_SUBADDR) | ((mode >> 1) & 1)))

/******************************************************************/
/* MCBSP_TX_RESET() - reset transmit side of serial port          */
/*                                                                */
/******************************************************************/
#define MCBSP_TX_RESET(port_no)\
        MCBSP_SUBREG_BITWRITE(port_no, SPCR2_SUBADDR, XRST, XRST_SZ, 0);
  

/******************************************************************/
/* MCBSP_RX_RESET() - reset receive side of serial port           */
/*                                                                */
/******************************************************************/
#define MCBSP_RX_RESET(port_no)\
	  MCBSP_SUBREG_BITWRITE(port_no, SPCR1_SUBADDR, RRST, RRST_SZ, 0);
  

/******************************************************************/
/* MCBSP_DRR1_READ() - read data value from serial port           */
/******************************************************************/
/* use instead: MCBSP_SUBREG_READ(... , DRR1_SUBADDR, ... )*/
  

/******************************************************************/
/* MCBSP_DRR2_READ() - read data value from serial port           */
/******************************************************************/
/* use instead: MCBSP_SUBREG_READ(... , DRR2_SUBADDR, ... )*/

                       

/******************************************************************/
/* MCBSP_DRR12_READ() - read data value from serial port          */
/*                      return value as unsigned long             */
/******************************************************************/
#define MCBSP_DRR12_READ(port_no)\
     (((*(volatile unsigned long* DRR2_ADDR(port_no)))<<16) &\
      (REG_READ(DRR1_ADDR(port_no)))
                            

/******************************************************************/
/* MCBSP_DXR12_WRITE() - write data value to serial port          */
/******************************************************************/
#define MCBSP_DXR12_WRITE(port_no, value)\
     (REG_WRITE(DXR2_ADDR(port_no), (unsigned int) (value >> 16)),\
      (REG_WRITE(DXR1_ADDR(port_no), (unsigned int) value)) )
     

/******************************************************************/
/* MCBSP_IO_ENABLE() - place port in general purpose I/O mode     */
/******************************************************************/
#define MCBSP_IO_ENABLE(port_no) \
        { MCBSP_TX_RESET(port_no); MCBSP_RX_RESET(port_no); \
          MCBSP_SUBREG_BITWRITE(port_no, PCR_SUBADDR, RIOEN, 2, 0x0003) } 


/******************************************************************/
/* MCBSP_IO_DISABLE() - take port out of general purpose I/O mode */
/******************************************************************/
#define MCBSP_IO_DISABLE(port_no) \
        MCBSP_SUBREG_BITWRITE(port_no, PCR_SUBADDR, RIOEN, 2, 0x0000)


/******************************************************************/
/* MCBSP_FRAME_SYNC_ENABLE - sets FRST bit in SPCR                */
/******************************************************************/
#define MCBSP_FRAME_SYNC_ENABLE(port_no) \
        MCBSP_SUBREG_BITWRITE(port_no, SPCR2_SUBADDR, FRST, FRST_SZ, 0x0001)


/******************************************************************/
/* MCBSP_FRAME_SYNC_RESET - clrs FRST bit in SPCR                 */
/******************************************************************/
#define MCBSP_FRAME_SYNC_RESET(port_no) \
        MCBSP_SUBREG_BITWRITE(port_no, SPCR2_SUBADDR, FRST, FRST_SZ, 0x0000)


/******************************************************************/
/* MCBSP_SAMPLE_RATE_ENABLE - sets GRST bit in SPCR               */
/******************************************************************/
#define MCBSP_SAMPLE_RATE_ENABLE(port_no) \
        MCBSP_SUBREG_BITWRITE(port_no, SPCR2_SUBADDR, GRST, GRST_SZ, 0x0001)


/******************************************************************/
/* MCBSP_SAMPLE_RATE_RESET - clrs GRST bit in SPCR                */
/******************************************************************/
#define MCBSP_SAMPLE_RATE_RESET(port_no) \
        MCBSP_SUBREG_BITWRITE(port_no, SPCR2_SUBADDR, GRST, GRST_SZ, 0x0000)


/******************************************************************/
/* MCBSP_RRDY - returns selected ports RRDY                       */
/******************************************************************/
#define MCBSP_RRDY(port_no) \
        MCBSP_SUBREG_BITREAD(port_no, SPCR1_SUBADDR, RRDY, RRDY_SZ)


/******************************************************************/
/* MCBSP_XRDY - returns selected ports XRDY                       */
/******************************************************************/
#define MCBSP_XRDY(port_no) \
        MCBSP_SUBREG_BITREAD(port_no, SPCR2_SUBADDR, XRDY, XRDY_SZ)


/******************************************************************/
/* MCBSP_LOOPBACK_ENABLE - places selected port in loopback       */
/******************************************************************/
#define MCBSP_LOOPBACK_ENABLE(port_no) \
        MCBSP_SUBREG_BITWRITE(port_no, SPCR1_SUBADDR, DLB, DLB_SZ, 0x0001)


/******************************************************************/
/* MCBSP_LOOPBACK_DISABLE - takes port out of DLB                 */
/******************************************************************/
#define MCBSP_LOOPBACK_DISABLE(port_no) \
        MCBSP_SUBREG_BITWRITE(port_no, SPCR1_SUBADDR, DLB, DLB_SZ, 0x0000)


#ifdef __INLINE
#undef __INLINE
#endif

#endif /*_MCBSP_H_*/

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?