📄 spc3dps2.h
字号:
UBYTE r_din_buf_ptr[3]; /* 0x1f */
UBYTE r_len_ddbout_buf; /* 0x22 */
UBYTE r_ddbout_buf_ptr; /* 0x23 */
UBYTE r_len_diag_buf[2]; /* 0x24 */
UBYTE r_diag_buf_ptr[2]; /* 0x26 */
UBYTE r_len_cntrl_buf[2]; /* 0x28 */
UBYTE r_aux_buf_sel; /* 0x2a */
UBYTE r_aux_buf_ptr[2]; /* 0x2b */
UBYTE r_len_ssa_buf; /* 0x2d */
UBYTE r_ssa_buf_ptr; /* 0x2e */
UBYTE r_len_prm_buf; /* 0x2f */
UBYTE r_prm_buf_ptr; /* 0x30 */
UBYTE r_len_cfg_buf; /* 0x31 */
UBYTE r_cfg_buf_ptr; /* 0x32 */
UBYTE r_len_read_cfg_buf; /* 0x33 */
UBYTE r_read_cfg_buf_ptr; /* 0x34 */
UBYTE r_len_ddb_prm_buf; /* 0x35 */
UBYTE r_ddb_prm_buf_ptr; /* 0x36 */
UBYTE r_score_exp; /* 0x37 */
UBYTE r_score_error; /* 0x38 */
UBYTE r_real_no_add_change; /* 0x39 */
UBYTE r_ident_low; /* 0x3a */
UBYTE r_ident_high; /* 0x3b */
UBYTE r_gc_command; /* 0x3c */
UBYTE r_len_spec_prm_buf; /* 0x3d */
UBYTE reserved_3e_3f[2]; /* 0x3e - 0x3f */
UBYTE user[1472]; /* 0x40: Speicherbereich fuer User */
} SPC3; /*SPC3的1.5K RAM*/
/*--structure for DPS2-Buffer-Initialization--*/
typedef struct {
UWORD din_dout_buf_len; /* total len of I/O data */
UBYTE diag_buf_len; /* len of diagnosticdatabuffer */
UBYTE prm_buf_len; /* len of parameterbuffer */
UBYTE cfg_buf_len; /* len of config-databuffer */
UBYTE ssa_buf_len; /* len of set-slave-address-buffer */
} SPC3_DATA_ATTR DPS2_BUFINIT;
/*============= DPS2-specific Typedefs and Structures =============*/
/*-- structure for I/O-len calculation --*/
typedef struct {
UBYTE inp_data_len;
UBYTE outp_data_len;
} DPS2_IO_DATA_LEN;
/*-- structure for Diagstic-data-telegramms --*/
struct dps_diag_state_def
{
UBYTE state_1;
UBYTE state_2;
UBYTE state_3;
UBYTE master_add;
UBYTE ident_number_high;
UBYTE ident_number_low;
UBYTE first_header_byte;
};
/*-- structure for parameter-telegramms --*/
struct dps_prm_state_def
{
UBYTE state;
UBYTE wd_fact_1;
UBYTE wd_fact_2;
UBYTE t_sdr_min;
UBYTE ident_number_high;
UBYTE ident_number_low;
UBYTE group_ident;
UBYTE first_user_prm_byte;
};
/*-- structure for Set-Slave-Address-telegramms --*/
struct dps_address_data
{
UBYTE new_address;
UBYTE ident_number_high;
UBYTE ident_number_low;
UBYTE no_add_chg;
UBYTE first_rem_data_byte;
};
/*+-------------------------------------------------------------------------+
| L i t e r a l s |
+-------------------------------------------------------------------------+*/
/*--------------------- Mode-Register 0 ----------------------*/
#define DIS_START_CONTROL ((UWORD)0x0001)
#define DIS_STOP_CONTROL ((UWORD)0x0002)
#define EN_FDL_DDB ((UWORD)0x0004)
#define ENABLE_DEF_MINTSDR ((UWORD)0x0008)
#define INT_POL_LOW ((UWORD)0x0000)
#define INT_POL_HIGH ((UWORD)0x0010)
#define EARLY_RDY ((UWORD)0x0020)
#define SYNC_SUPPORTED ((UWORD)0x0040)
#define FREEZE_SUPPORTED ((UWORD)0x0080)
#define DP_MODE ((UWORD)0x0100)
#define EOI_TIMEBASE_1u ((UWORD)0x0000)
#define EOI_TIMEBASE_1m ((UWORD)0x0200)
#define USER_TIMEBASE_1m ((UWORD)0x0000)
#define USER_TIMEBASE_10m ((UWORD)0x0400)
#define SPEC_PRM_BUF ((UWORD)0x1000)
#define SPEC_CLEAR ((UWORD)0x2000)
/*--------------------- Mode-Register 1 ----------------------*/
#define START_SPC3 0x01
#define EOI_SPC3 0x02
#define GO_OFFLINE_SPC3 0x04
#define USER_LEAVE_MASTER 0x08
#define EN_CHG_CFG_BUFFER 0x10
#define RES_USER_WD 0x20
/*-------------------- Status-Register 0 ---------------------*/
#define SPC3_OFFLINE_PASS 0x01
#define FDL_IND_ST 0x02
#define DPS2_DIAG_FLAG 0x04
#define ACCESS_VIOLATION 0x08
/*------------------ diagnostic-control -------------------*/
#define DPS2_EXT_DIAG 0x01
#define DPS2_STAT_DIAG 0x02
#define DPS2_EXT_DIAG_OVF 0x04
/*----------------- Global-Control-command ------------------*/
#define DPS2_CLEAR_DATA 0x02
#define DPS2_UNFREEZE 0x04
#define DPS2_FREEZE 0x08
#define DPS2_UNSYNC 0x10
#define DPS2_SYNC 0x20
/*----------------- indications (IR-Register) -----------------*/
/*-- indications as bytes - PDF22 */
#define MAC_RESET_B 0x01 /* Offline; DPS2 */
#define GO_LEAVE_DATA_EX_B 0x02 /* Leave DataExcahnge; DPS2 */
#define BAUDRATE_DETECT_B 0x04 /* Baudrate found; DPS2 */
#define WD_DP_MODE_TIMEOUT_B 0x08 /* DP-Watchdog expired; DPS2 */
#define USER_TIMER_CLOCK_B 0x10 /* Timer-Interval; DPS2 */
#define DDB_SCORE_ERROR_B 0x20 /* reserved */
#define NEW_DDB_PRM_DATA_B 0x40 /* reserved */
#define DDB_OUT_B 0x80 /* reserved */
#define NEW_GC_COMMAND_B 0x01 /* Global Control; DPS2 */
#define NEW_SSA_DATA_B 0x02 /* Set Slave Address; DPS2 */
#define NEW_CFG_DATA_B 0x04 /* Config Data; DPS2 */
#define NEW_PRM_DATA_B 0x08 /* Param. Data; DPS2 */
#define DIAG_BUFFER_CHANGED_B 0x10 /* Diagnostic-Buffer changed; DPS2 */
#define DX_OUT_B 0x20 /* new output-data; DPS2 */
#define POLL_END_IND_B 0x40 /* reserved */
#define REQ_PDU_IND_B 0x80 /* reserved */
/*-- indications as words --*/
#define MAC_RESET (SWAP_W(((UWORD)MAC_RESET_B))) /*双字节调整(如有需要)*/
#define GO_LEAVE_DATA_EX (SWAP_W(((UWORD)GO_LEAVE_DATA_EX_B)))
#define BAUDRATE_DETECT (SWAP_W(((UWORD)BAUDRATE_DETECT_B)))
#define WD_DP_MODE_TIMEOUT (SWAP_W(((UWORD)WD_DP_MODE_TIMEOUT_B)))
#define USER_TIMER_CLOCK (SWAP_W(((UWORD)USER_TIMER_CLOCK_B)))
#define DDB_SCORE_ERROR (SWAP_W(((UWORD)DDB_SCORE_ERROR_B)))
#define NEW_DDB_PRM_DATA (SWAP_W(((UWORD)NEW_DDB_PRM_DATA_B)))
#define DDB_OUT (SWAP_W(((UWORD)DDB_OUT_B)))
#define NEW_GC_COMMAND (SWAP_W((((UWORD)NEW_GC_COMMAND_B) << 8)))
#define NEW_SSA_DATA (SWAP_W((((UWORD)NEW_SSA_DATA_B) << 8)))
#define NEW_CFG_DATA (SWAP_W((((UWORD)NEW_CFG_DATA_B) << 8)))
#define NEW_PRM_DATA (SWAP_W((((UWORD)NEW_PRM_DATA_B) << 8)))
#define DIAG_BUFFER_CHANGED (SWAP_W((((UWORD)DIAG_BUFFER_CHANGED_B) << 8)))
#define DX_OUT (SWAP_W((((UWORD)DX_OUT_B) << 8)))
#define POLL_END_IND (SWAP_W((((UWORD)POLL_END_IND_B) << 8)))
#define REQ_PDU_IND (SWAP_W((((UWORD)REQ_PDU_IND_B) << 8)))
/*-- indications as bit numbers --*/
#define MAC_RESET_NR 0
#define GO_LEAVE_DATA_EX_NR 1
#define BAUDRATE_DETECT_NR 2
#define WD_DP_MODE_TIMEOUT_NR 3
#define USER_TIMER_CLOCK_NR 4
#define DDB_SCORE_ERROR_NR 5
#define NEW_DDB_PRM_DATA_NR 6
#define DDB_OUT_NR 7
#define NEW_GC_COMMAND_NR 8
#define NEW_SSA_DATA_NR 9
#define NEW_CFG_DATA_NR 10
#define NEW_PRM_DATA_NR 11
#define DIAG_BUFFER_CHANGED_NR 12
#define DX_OUT_NR 13
#define POLL_END_IND_NR 14
#define REQ_PDU_IND_NR 15
/*-------------- Returncodes of DPS2_SET_CFG_DATA.. ---------------*/
#define DPS2_CFG_FINISHED 0x00
#define DPS2_CFG_CONFLICT 0x01
#define DPS2_CFG_NOT_ALLOWED 0x03
/*--------------- Returncodes of DPS2_SET_PRM_DATA.. ---------------*/
#define DPS2_PRM_FINISHED 0x00
#define DPS2_PRM_CONFLICT 0x01
#define DPS2_PRM_NOT_ALLOWED 0x03
/*---------------------- states of the DP-Statemachine ----------------------*/
#define DPS2_DP_STATE_WAIT_PRM 0x00
#define DPS2_DP_STATE_WAIT_CFG 0x01
#define DPS2_DP_STATE_DATA_EX 0x02
#define DPS2_DP_STATE_ERROR 0x03
/*---------------------- states of the WD-Statemachine ----------------------*/
#define SPC3_WD_STATE_BAUD_SEARCH 0x00
#define SPC3_WD_STATE_BAUD_CONTROL 0x01
#define SPC3_WD_STATE_DP_MODE 0x02
#define SPC3_WD_STATE_ERROR 0x03
/*------------------------ Codes for Baud-Rate -----------------------*/
#define BD_12M 0 /* 12 MBd */
#define BD_6M 1 /* 6 MBd */
#define BD_3M 2 /* 3 MBd */
#define BD_1_5M 3 /* 1.5 MBd */
#define BD_500k 4 /* 500 kBd */
#define BD_187_5k 5 /* 187.5 kBd */
#define BD_93_75k 6 /* 93.75 kBd */
#define BD_45_45k 7 /* 45.45 kBd */
#define BD_19_2k 8 /* 19.2 kBd */
#define BD_9_6k 9 /* 9.6 kBd */
/*-------------------- States of outputdata-buffer ---------------------*/
#define NEW_DOUT_BUF 0x04
#define DOUT_BUF_CLEARED 0x08
/*+-------------------------------------------------------------------------+
| M a c r o s |
+-------------------------------------------------------------------------+*/
/************ initializations and hardware-dependent settings **************/
#ifdef DPS2_USE_SPEC_PRM_BUF /* with spec_prm_buf */
#define SPC3_SET_HW_MODE(MODE)\
spc3.mode_reg0 = SWAP_W((MODE) | DP_MODE | SPEC_PRM_BUF & (~EN_FDL_DDB));/~按位取反运算符/
#else /* without spec_prm_buf 按位与高于 或的优先级*/
#define SPC3_SET_HW_MODE(MODE)\
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -