⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mod_regs_sci.h

📁 ecos移植到R8H系列的源码。源码包来自http://www.cetoni.de/develop/develop_ecosh8s_en.html
💻 H
📖 第 1 页 / 共 2 页
字号:

// Baud rate values calculation, depending on peripheral clock (Pf)
// n is CKS setting (0-3)
// N = (Pf/(64*2^(2n-1)*B))-1
// With CYGARC_SCBRR_CKSx providing the values 1, 4, 16, 64 we get
//       N = (Pf/(32*_CKS*B))-1
//
// The CYGARC_SCBRR_OPTIMAL_CKS macro should compute the minimal CKS
// setting for the given baud rate and peripheral clock.
//
// The error of the CKS+count value can be computed by:
//  E(%) = ((Pf/((N+1)*B*(64^(n-1)))-1)*100 
//
#define CYGARC_SCBRR_PRESCALE(_b_) \
((((CYGHWR_HAL_H8S_INTERNAL_MODULE_CLOCK/32/1/(_b_))-1)<256) ? 1 : \
 (((CYGHWR_HAL_H8S_INTERNAL_MODULE_CLOCK/32/4/(_b_))-1)<256) ? 4 : \
 (((CYGHWR_HAL_H8S_INTERNAL_MODULE_CLOCK/32/16/(_b_))-1)<256) ? 16 : 64)

//
// Add half the divisor to reduce rounding errors to .5
//
#define CYGARC_SCBRR_ROUNDING(_b_) \
  16*CYGARC_SCBRR_PRESCALE(_b_)*(_b_)

//
// These two macros provide the static values we need to stuff into the
// registers.
//
#define CYGARC_SCBRR_CKSx(_b_) \
    ((1  == CYGARC_SCBRR_PRESCALE(_b_)) ? 0 : \
     (4  == CYGARC_SCBRR_PRESCALE(_b_)) ? 1 : \
     (16 == CYGARC_SCBRR_PRESCALE(_b_)) ? 2 : 3)
     
#define CYGARC_SCBRR_N(_b_)     \
    (((_b_) < 4800) ? 0 :       \
     ((_b_) > 115200) ? 0 :    \
     (((CYGHWR_HAL_H8S_INTERNAL_MODULE_CLOCK+CYGARC_SCBRR_ROUNDING(_b_))/32/CYGARC_SCBRR_PRESCALE(_b_)/(_b_))-1))


#ifndef __ASSEMBLER__
//==========================================================================
//                         REGISTER STRUCTURE
//==========================================================================
struct st_sci {                                         // struct SCI   
              union {                                   // SMR          
                    unsigned char BYTE;                 //  Byte Access 
                    struct {                            //  Bit  Access 
                           unsigned char CA  :1;        //    C/A       
                           unsigned char CHR :1;        //    CHR       
                           unsigned char _PE :1;        //    PE        
                           unsigned char OE  :1;        //    O/E       
                           unsigned char STOP:1;        //    STOP      
                           unsigned char MP  :1;        //    MP        
                           unsigned char CKS :2;        //    CKS       
                           }      BIT;                  //              
                    }           SMR;                    //              
              unsigned char     BRR;                    // BRR          
              union {                                   // SCR          
                    unsigned char BYTE;                 //  Byte Access 
                    struct {                            //  Bit  Access 
                           unsigned char TIE :1;        //    TIE       
                           unsigned char RIE :1;        //    RIE       
                           unsigned char TE  :1;        //    TE        
                           unsigned char RE  :1;        //    RE        
                           unsigned char MPIE:1;        //    MPIE      
                           unsigned char TEIE:1;        //    TEIE      
                           unsigned char CKE :2;        //    CKE       
                           }      BIT;                  //              
                    }           SCR;                    //              
              unsigned char     TDR;                    // TDR          
              union {                                   // SSR          
                    unsigned char BYTE;                 //  Byte Access 
                    struct {                            //  Bit  Access 
                           unsigned char TDRE:1;        //    TDRE      
                           unsigned char RDRF:1;        //    RDRF      
                           unsigned char ORER:1;        //    ORER      
                           unsigned char FER :1;        //    FER       
                           unsigned char PER :1;        //    PER       
                           unsigned char TEND:1;        //    TEND      
                           unsigned char MPB :1;        //    MPB       
                           unsigned char MPBT:1;        //    MPBT      
                           }      BIT;                  //              
                    }           SSR;                    //              
              unsigned char     RDR;                    // RDR          
              union {                                   // SCMR         
                    unsigned char BYTE;                 //  Byte Access 
                    struct {                            //  Bit  Access 
                           unsigned char     :4;        //              
                           unsigned char SDIR:1;        //    SDIR      
                           unsigned char SINV:1;        //    SINV      
                           unsigned char     :1;        //              
                           unsigned char SMIF:1;        //    SMIF      
                           }      BIT;                  //              
                    }           SCMR;                   //              
};

struct st_smci {                                        // struct SMCI  
               union {                                  // SMR          
                     unsigned char BYTE;                //  Byte Access 
                     struct {                           //  Bit  Access 
                            unsigned char GM :1;        //    GM        
                            unsigned char BLK:1;        //    BLK       
                            unsigned char _PE:1;        //    PE        
                            unsigned char OE :1;        //    O/E       
                            unsigned char BCP:2;        //    BCP       
                            unsigned char CKS:2;        //    CKS       
                            }      BIT;                 //              
                     }          SMR;                    //              
               unsigned char    BRR;                    // BRR          
               union {                                  // SCR          
                     unsigned char BYTE;                //  Byte Access 
                     struct {                           //  Bit  Access 
                            unsigned char TIE :1;       //    TIE       
                            unsigned char RIE :1;       //    RIE       
                            unsigned char TE  :1;       //    TE        
                            unsigned char RE  :1;       //    RE        
                            unsigned char MPIE:1;       //    MPIE      
                            unsigned char TEIE:1;       //    TEIE      
                            unsigned char CKE :2;       //    CKE       
                            }      BIT;                 //              
                     }          SCR;                    //              
               unsigned char    TDR;                    // TDR          
               union {                                  // SSR          
                     unsigned char BYTE;                //  Byte Access 
                     struct {                           //  Bit  Access 
                            unsigned char TDRE:1;       //    TDRE      
                            unsigned char RDRF:1;       //    RDRF      
                            unsigned char ORER:1;       //    ORER      
                            unsigned char ERS :1;       //    ERS       
                            unsigned char PER :1;       //    PER       
                            unsigned char TEND:1;       //    TEND      
                            unsigned char MPB :1;       //    MPB       
                            unsigned char MPBT:1;       //    MPBT      
                            }      BIT;                 //              
                     }          SSR;                    //              
               unsigned char    RDR;                    // RDR          
               union {                                  // SCMR         
                     unsigned char BYTE;                //  Byte Access 
                     struct {                           //  Bit  Access 
                            unsigned char     :4;       //              
                            unsigned char SDIR:1;       //    SDIR      
                            unsigned char SINV:1;       //    SINV      
                            unsigned char     :1;       //              
                            unsigned char SMIF:1;       //    SMIF      
                            }      BIT;                 //              
                     }          SCMR;                   //              
}; 


//==========================================================================
//                      STRUCTURED REGISTER ACCESS
//========================================================================== 
#define HAL_H8S_REG_SCI0   (*(volatile struct st_sci   *)0xFFFF78) // SCI0  Address
#define HAL_H8S_REG_SCI1   (*(volatile struct st_sci   *)0xFFFF80) // SCI1  Address
#define HAL_H8S_REG_SCI2   (*(volatile struct st_sci   *)0xFFFF88) // SCI2  Address
#define HAL_H8S_REG_SMCI0  (*(volatile struct st_smci  *)0xFFFF78) // SMCI0 Address
#define HAL_H8S_REG_SMCI1  (*(volatile struct st_smci  *)0xFFFF80) // SMCI1 Address
#define HAL_H8S_REG_SMCI2  (*(volatile struct st_smci  *)0xFFFF88) // SMCI2 Address


#endif // #ifndef __ASSEMBLER__
//---------------------------------------------------------------------------
#endif  // end of #define CYGONCE_MOD_REGS_SCI_H

⌨️ 快捷键说明

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