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

📄 modbus_reg.h.svn-base

📁 给MOTO 360 单片机 开发的MODBUS协议 直流奥特寻协议。。要用SDS编译
💻 SVN-BASE
📖 第 1 页 / 共 4 页
字号:
    unsigned RPM:   2;    //RPM - Receiver Parity Mode (bits 3-2)
    //00 = Odd Parity.
    //01 = Low Parity.
    //10 = Even Parity.
    //11 = High Parity.

    unsigned TPM:   2;    //TPM - Transmitter Parity Mode (bits 1-0)
    //00 = Odd Parity.
    //01 = Low Parity.
    //10 = Even Parity.
    //11 = High Parity.
};

typedef struct SCCE{
    unsigned :     3;
    unsigned GLr:  1;  //GLr - Glitch on RX (bit 12)
    //A clock glitch was detected by this SCC on the receive clock.

    unsigned GLt:  1;  //GLt - Glitch on TX (bit 11)
    //A clock glitch was detected by this SCC on the transmit clock.

    unsigned :     2;
    unsigned IDL:  1;  //IDL - Idles Sequence Status Changed (bit 8)
    //A change in the status of the serial line was detected on the PROFIBUS
    //channel. The real-time status of the line may be read in SCCS. Idle is
    //entered when one character of all ones is received. It is exited when a
    //single zero is received.

    unsigned :     5;
    unsigned BSY:  1;  //BSY - Busy Condition (bit 2)
    //A character was received and discarded due to lack of buffers.
    unsigned TX:   1;  //TX - TX Buffer (bit 1)
    //A buffer has been transmitted over the PROFIBUS channel.
    unsigned RX:   1;  //RX - RX Buffer (bit 0)
    //A buffer has been received over the PROFIBUS channel.
};
typedef struct PBDATA{                      
    unsigned :      14;
    unsigned :      12;	
    unsigned pb5:   1;
    unsigned :      4;
    unsigned pb0:   1;	
};

#define WDI	  (((struct PBDATA *)(REGB+0x06c4))->pb0)
#define READY	(((struct PBDATA *)(REGB+0x06c4))->pb5)

#define	SCC1_TX_READY	(((struct TX_BD_ST*)(DPRBASE+0x420))->Ready)
#define	SCC2_TX_READY	(((struct TX_BD_ST*)(DPRBASE+0x460))->Ready)
#define	SCC3_TX_READY	(((struct TX_BD_ST*)(DPRBASE+0x4a0))->Ready)
#define	SCC4_TX_READY	(((struct TX_BD_ST*)(DPRBASE+0x4e0))->Ready)
//******************************************************************************************
//...scc1...
//******************************************************************************************
//******************************************************************************************
//...general registers of scc1...
//******************************************************************************************

//---------------------------------------------------------------------------------------------------------
//改为数组方式2008.2.14 by hqz
#define GSMR_L1_ADDR (REGB+0x0600)   //GSMR_L:scc general mode register
//---------------------------------------------------------------------------------------------------------
#define GSMR_L1 (*(volatile DWORD  *)GSMR_L1_ADDR)   //GSMR_L:scc general mode register
#define GSMR_H1 (*((volatile DWORD  *)(REGB+0x0604)))   //GSMR_H:scc general mode register
#define PSMR1   (*((volatile WORD *)(REGB+0x0608)))  //PSMR:scc protocol-specific(ProfiBus) mode register
#define TODR1   (*((volatile WORD *)(REGB+0x060c)))  //TODR:scc transmit on demand
#define DSR1    (*((volatile WORD *)(REGB+0x060e)))  //DSR:scc data sync. register
#define SCCE1   (*((volatile WORD *)(REGB+0x0610)))  //SCCE:scc event register
#define SCCM1   (*((volatile WORD *)(REGB+0x0614)))  //SCCM:scc mask register
#define SCCS1   (*((volatile BYTE  *)(REGB+0x0617)))   //SCCS:scc status register

//******************************************************************************************
//...scc1 parameter RAM common to ALL protocols...
//******************************************************************************************
#define RBASE1 (*((volatile WORD *)(SCC1_BASE+0x00)))  //Rx BD base address
#define TBASE1 (*((volatile WORD *)(SCC1_BASE+0x02)))  //Tx BD base address

#define RFCR1  (*((volatile BYTE  *)(SCC1_BASE+0x04)))    //Rx function code
#define TFCR1  (*((volatile BYTE  *)(SCC1_BASE+0x05)))    //Tx function code

#define MRBLR1 (*((volatile WORD *)(SCC1_BASE+0x06)))   //Maximum receive buffer length

#define RSTATE1 (*((volatile DWORD  *)(SCC1_BASE + 0x08))) //RCV State information about channel
#define R_PTR1  (*((volatile DWORD  *)(SCC1_BASE + 0x0C))) //Pointer to next memory write location
#define RBPTR1  (*((volatile WORD *)(SCC1_BASE + 0x10))) //Pointer to current/next BD location
#define R_CNT1  (*((volatile WORD *)(SCC1_BASE + 0x12))) //Down count to end of frame or Buffer

#define TSTATE1 (*((volatile DWORD  *)(SCC1_BASE + 0x18))) // TX State information about channel
#define T_PTR1  (*((volatile DWORD  *)(SCC1_BASE + 0x1C))) //Pointer to next memory read location
#define TBPTR1  (*((volatile WORD *)(SCC1_BASE + 0x20))) //Porinter to current/next BD location
#define T_CNT1  (*((volatile WORD *)(SCC1_BASE + 0x22))) //Down count to end of Buffer

//******************************************************************************************
//...UART specific parameters of scc1...
//******************************************************************************************
#define MAX_IDL1 (*((volatile unsigned short *)(SCC1_BASE+0x38)))  //Maximum Idle Characters
#define IDLC1    (*((volatile unsigned short *)(SCC1_BASE+0x3a)))  //Temporary Idle Counter

#define BRKCR1   (*((volatile unsigned short *)(SCC1_BASE+0x3C)))  //Break Counter Register(tx)
#define PAREC1   (*((volatile unsigned short *)(SCC1_BASE+0x3E)))  //Receive Parity Error
#define FRMEC1   (*((volatile unsigned short *)(SCC1_BASE+0x40)))  //Receive Framing Error
#define NOSEC1   (*((volatile unsigned short *)(SCC1_BASE+0x42)))  //Receive Noise Counter
#define BRKEC1   (*((volatile unsigned short *)(SCC1_BASE+0x44)))  //Receive Break Condition Counter

#define UADDR11  (*((volatile unsigned short *)(SCC1_BASE+0x48)))  //Uart address character 1
#define UADDR12  (*((volatile unsigned short *)(SCC1_BASE+0x4A)))  //Uart address character 2
#define TOSEQ1   (*((volatile unsigned short *)(SCC1_BASE+0x4e)))  //Transmit out of sequence character
#define CHARACTER11  (*((volatile unsigned short *)(SCC1_BASE+0x50)))  
#define CHARACTER12  (*((volatile unsigned short *)(SCC1_BASE+0x52))) 
#define CHARACTER13  (*((volatile unsigned short *)(SCC1_BASE+0x54))) 
#define CHARACTER14  (*((volatile unsigned short *)(SCC1_BASE+0x56))) 
#define CHARACTER15  (*((volatile unsigned short *)(SCC1_BASE+0x58))) 
#define CHARACTER16  (*((volatile unsigned short *)(SCC1_BASE+0x5a))) 
#define CHARACTER17  (*((volatile unsigned short *)(SCC1_BASE+0x5c))) 
#define CHARACTER18  (*((volatile unsigned short *)(SCC1_BASE+0x5e))) 
#define RCCM1        (*((volatile unsigned short *)(SCC1_BASE+0x60)))  //Receive control character mask

//******************************************************************************************
//...ProfiBus Buffer Descriptors (BDs)...
//******************************************************************************************
#define SCC1_RX_BD_BASE 0x0400
#define SCC1_TX_BD_BASE 0x0420

//---------------------------------------------------------------------------------------------------------
//改为数组方式2008.2.14 by hqz
#define SCC1_RX_BD0_ST_ADDR (DPRBASE+0x400)
#define SCC1_RX_BD0_LN_ADDR (DPRBASE+0x402)
#define SCC1_RX_BD0_PT_ADDR (DPRBASE+0x404)

#define SCC1_TX_BD0_ST_ADDR (DPRBASE+0x420)
#define SCC1_TX_BD0_LN_ADDR (DPRBASE+0x422)
#define SCC1_TX_BD0_PT_ADDR (DPRBASE+0x424)

//---------------------------------------------------------------------------------------------------------

#define SCC1_RX_BD0_ST (*(volatile WORD *)SCC1_RX_BD0_ST_ADDR)
#define SCC1_RX_BD0_LN (*(volatile WORD *)SCC1_RX_BD0_LN_ADDR)
#define SCC1_RX_BD0_PT (*(volatile DWORD * )SCC1_RX_BD0_PT_ADDR)

#define SCC1_RX_BD1_ST (*((volatile WORD *)(DPRBASE+0x408)))
#define SCC1_RX_BD1_LN (*((volatile WORD *)(DPRBASE+0x40A)))
#define SCC1_RX_BD1_PT (*((volatile DWORD * )(DPRBASE+0x40C)))

#define SCC1_TX_BD0_ST (*(volatile WORD *)SCC1_TX_BD0_ST_ADDR)
#define SCC1_TX_BD0_LN (*(volatile WORD *)SCC1_TX_BD0_LN_ADDR)
#define SCC1_TX_BD0_PT (*(volatile DWORD * )SCC1_TX_BD0_PT_ADDR)

#define SCC1_TX_BD1_ST (*((volatile WORD *)(DPRBASE+0x428)))
#define SCC1_TX_BD1_LN (*((volatile WORD *)(DPRBASE+0x42A)))
#define SCC1_TX_BD1_PT (*((volatile DWORD  *)(DPRBASE+0x42C)))

//******************************************************************************************
//...scc2...
//******************************************************************************************
//******************************************************************************************
//...general registers of scc2...
//******************************************************************************************

//---------------------------------------------------------------------------------------------------------
//改为数组方式2008.2.14 by hqz
#define GSMR_L2_ADDR (REGB+0x0620)   //GSMR_L:scc general mode register
//---------------------------------------------------------------------------------------------------------
#define GSMR_L2 (*(volatile DWORD  *)GSMR_L2_ADDR)   //GSMR_L:scc general mode register
#define GSMR_H2 (*((volatile DWORD  *)(REGB+0x0624)))   //GSMR_H:scc general mode register
#define PSMR2   (*((volatile WORD *)(REGB+0x0628)))  //PSMR:scc protocol-specific(ProfiBus) mode register
#define TODR2   (*((volatile WORD *)(REGB+0x062c)))  //TODR:scc transmit on demand
#define DSR2    (*((volatile WORD *)(REGB+0x062e)))  //DSR:scc data sync. register
#define SCCE2   (*((volatile WORD *)(REGB+0x0630)))  //SCCE:scc event register
#define SCCM2   (*((volatile WORD *)(REGB+0x0634)))  //SCCM:scc mask register
#define SCCS2   (*((volatile BYTE  *)(REGB+0x0637)))   //SCCS:scc status register

//******************************************************************************************
//...scc2 parameter RAM common to ALL protocols...
//******************************************************************************************
#define RBASE2 (*((volatile WORD *)(SCC2_BASE+0x00)))  //Rx BD base address
#define TBASE2 (*((volatile WORD *)(SCC2_BASE+0x02)))  //Tx BD base address

#define RFCR2  (*((volatile BYTE  *)(SCC2_BASE+0x04)))    //Rx function code
#define TFCR2  (*((volatile BYTE  *)(SCC2_BASE+0x05)))    //Tx function code

#define MRBLR2 (*((volatile WORD *)(SCC2_BASE+0x06)))   //Maximum receive buffer length

#define RSTATE2 (*((volatile DWORD  *)(SCC2_BASE + 0x08))) //RCV State information about channel
#define R_PTR2  (*((volatile DWORD  *)(SCC2_BASE + 0x0C))) //Pointer to next memory write location
#define RBPTR2  (*((volatile WORD *)(SCC2_BASE + 0x10))) //Pointer to current/next BD location
#define R_CNT2  (*((volatile WORD *)(SCC2_BASE + 0x12))) //Down count to end of frame or Buffer

#define TSTATE2 (*((volatile DWORD  *)(SCC2_BASE + 0x18))) // TX State information about channel
#define T_PTR2  (*((volatile DWORD  *)(SCC2_BASE + 0x1C))) //Pointer to next memory read location
#define TBPTR2  (*((volatile WORD *)(SCC2_BASE + 0x20))) //Porinter to current/next BD location
#define T_CNT2  (*((volatile WORD *)(SCC2_BASE + 0x22))) //Down count to end of Buffer

//******************************************************************************************
//...UART specific parameters of scc2...
//******************************************************************************************
#define MAX_IDL2 (*((volatile unsigned short *)(SCC2_BASE+0x38)))  //Maximum Idle Characters
#define IDLC2    (*((volatile unsigned short *)(SCC2_BASE+0x3a)))  //Temporary Idle Counter

#define BRKCR2   (*((volatile unsigned short *)(SCC2_BASE+0x3C)))  //Break Counter Register(tx)
#define PAREC2   (*((volatile unsigned short *)(SCC2_BASE+0x3E)))  //Receive Parity Error
#define FRMEC2   (*((volatile unsigned short *)(SCC2_BASE+0x40)))  //Receive Framing Error
#define NOSEC2   (*((volatile unsigned short *)(SCC2_BASE+0x42)))  //Receive Noise Counter
#define BRKEC2   (*((volatile unsigned short *)(SCC2_BASE+0x44)))  //Receive Break Condition Counter

#define UADDR21  (*((volatile unsigned short *)(SCC2_BASE+0x48)))  //Uart address character 1
#define UADDR22  (*((volatile unsigned short *)(SCC2_BASE+0x4A)))  //Uart address character 2
#define TOSEQ2   (*((volatile unsigned short *)(SCC2_BASE+0x4e)))  //Transmit out of sequence character
#define CHARACTER21  (*((volatile unsigned short *)(SCC2_BASE+0x50)))  
#define CHARACTER22  (*((volatile unsigned short *)(SCC2_BASE+0x52))) 
#define CHARACTER23  (*((volatile unsigned short *)(SCC2_BASE+0x54))) 
#define CHARACTER24  (*((volatile unsigned short *)(SCC2_BASE+0x56))) 
#define CHARACTER25  (*((volatile unsigned short *)(SCC2_BASE+0x58))) 
#define CHARACTER26  (*((volatile unsigned short *)(SCC2_BASE+0x5a))) 
#define CHARACTER27  (*((volatile unsigned short *)(SCC2_BASE+0x5c))) 
#define CHARACTER28  (*((volatile unsigned short *)(SCC2_BASE+0x5e))) 
#define RCCM2        (*((volatile unsigned short *)(SCC2_BASE+0x60)))  //Receive control character mask

//******************************************************************************************
//...ProfiBus Buffer Descriptors (BDs)...
//******************************************************************************************
#define SCC2_RX_BD_BASE 0x0440
#define SCC2_TX_BD_BASE 0x0460

//---------------------------------------------------------------------------------------------------------
//改为数组方式2008.2.14 by hqz
#define SCC2_RX_BD0_ST_ADDR (DPRBASE+0x440)

⌨️ 快捷键说明

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