📄 serial.h.bak
字号:
/********************************************************************************/
/* serial.h v1.00 */
/* 版权(c) 2003- 北京合众达电子技术有限责任公司 */
/* 设计者: 刘宁 */
/********************************************************************************/
/******************************************************************************/
/* serial.h - MCBSP54 routines header file. */
/* */
/* This module provides the implementation for the serial ports */
/* on the TMS320vc33 DSP. */
/******************************************************************************/
/******************************************************************/
/* This header file defines the data structures and macros to */
/* necessary to address the Serial Port */
/******************************************************************/
#ifndef _serial
#define _serial
#ifndef gcontrol#define gcontrol _gctrl._intval#endif#ifndef gcontrol_bit#define gcontrol_bit _gctrl._bitval#endif#define s_x_control _xctrl._intval#define s_x_control_bit _xctrl._bitval#define s_r_control _rctrl._intval#define s_r_control_bit _rctrl._bitval#define s_rxt_control _rxtctrl._intval#define s_rxt_control_bit _rxtctrl._bitval#define s_rxt_counter _rxtcounter._intval#define s_rxt_counter_bit _rxtcounter._bitval#define s_rxt_period _rxtperiod._intval#define s_rxt_period_bit _rxtperiod._bitval/**************************************************************************//* MACRO DEFINITIONS FOR SERIAL PORT BASE ADDRESS *//**************************************************************************/#define SERIAL_PORT_ZERO 0#define SERIAL_PORT_ONE 1#define SERIAL_PORT_BASE 0x808040#define SERIAL_PORT_SIZE 16#define SERIAL_PORT_ADDR(n) ((volatile SERIAL_PORT_REG *) ((char *) \ SERIAL_PORT_BASE + (n)*SERIAL_PORT_SIZE))/**************************************************************************//* STRUCTURE DEFINTION FOR SERIAL PORT GLOBAL CONTROL REGISTER *//**************************************************************************/typedef union{ unsigned int _intval; struct { unsigned int rrdy :1; /* Receive ready flag */ unsigned int xrdy :1; /* Transmitt ready flag */ unsigned int fsxout :1; /* FSX configuration */ unsigned int xsrempty :1; /* Transm shift reg empty */ unsigned int rsrfull :1; /* Receive registers full */ unsigned int hs :1; /* Handshaking mode enable */ unsigned int xclksrce :1; /* Transm clock source */ unsigned int rclksrce :1; /* Receive clock source */ unsigned int xvaren :1; /* Transm data rate signaling */ unsigned int rvaren :1; /* Receiv data rate signaling */ unsigned int xfsm :1; /* Transm frame sync mode */ unsigned int rfsm :1; /* Receiv frame sync mode */ unsigned int clkxp :1; /* Transm clock polarity */ unsigned int clkrp :1; /* Receiv clock polarity */ unsigned int dxp :1; /* Transm data polarity */ unsigned int drp :1; /* Receiv data priority */ unsigned int fsxp :1; /* Transm frame sync polarity */ unsigned int fsrp :1; /* Receiv frame sync polarity */ unsigned int xlen :2; /* Transm data word length */ unsigned int rlen :2; /* Receiv data word length */ unsigned int xtint :1; /* Transm timer interrupt enable */ unsigned int xint :1; /* Transm interrupt enable */ unsigned int rtint :1; /* Receiv timer interrupt enable */ unsigned int rint :1; /* Receiv interrupt enable */ unsigned int xreset :1; /* Transm reset */ unsigned int rreset :1; /* Receiv reset */ unsigned int r_rest :4; /* reserved */ } _bitval;} SERIAL_PORT_CONTROL;/**************************************************************************//* STRUCTURE DEFINTION FOR SERIAL PORT RECEIVE/TRANSMIT PORT CONTROL *//* REGISTER *//**************************************************************************/typedef union{ unsigned int _intval; struct { unsigned int clkfunc :1; /* Clock function control */ unsigned int clki_o :1; /* Clock i/o control */ unsigned int clkdato :1; /* Data output on clock */ unsigned int clkdati :1; /* Data input on clock */ unsigned int dfunc :1; /* Data function control */ unsigned int di_o :1; /* Data i/o control */ unsigned int ddatout :1; /* Data output on data */ unsigned int ddatin :1; /* Data input on data */ unsigned int fsfunc :1; /* Frame sync function control */ unsigned int fsi_o :1; /* Frame sync i/o control */ unsigned int fsdatout :1; /* Data output on frame sync */ unsigned int fsdatin :1; /* Data input on frame sync */ unsigned int r_rest :20; /* reserved */ } _bitval;} RX_PORT_CONTROL;/**************************************************************************//* STRUCTURE DEFINTION FOR SERIAL PORT RECEIVE/TRANSMIT TIMER CONTROL *//* REGISTER *//**************************************************************************/typedef union{ unsigned int _intval; struct { unsigned int xgo :1; /* Reset and start transmit timer */ unsigned int xhld_ :1; /* Transm timer hold */ unsigned int xcp_ :1; /* Transm clock mode */ unsigned int xclksrc :1; /* Transm clock source */ unsigned int r_4 :1; /* reserved */ unsigned int xtstat :1; /* Transmit timer stat */ unsigned int rgo :1; /* Reset and start receive timer */ unsigned int rhld_ :1; /* Receive timer hold */ unsigned int rcp_ :1; /* Receive clock mode */ unsigned int rclksrc :1; /* Receive clock source */ unsigned int r_10 :1; /* reserved */ unsigned int rtstat :1; /* Receive timer stat */ unsigned int r_rest :20; /* reserved */ } _bitval;} RX_TIMER_CONTROL;/**************************************************************************//* STRUCTURE DEFINTION FOR SERIAL PORT RECEIVE/TRANSMIT TIMER COUNTER *//* REGISTER *//**************************************************************************/typedef union{ unsigned int _intval; struct { unsigned int x_counter:16; /* Transmit timer counter */ unsigned int r_counter:16; /* Receive timer counter */ } _bitval;} RX_TIMER_COUNTER;/**************************************************************************//* STRUCTURE DEFINTION FOR SERIAL PORT RECEIVE/TRANSMIT TIMER PERIOD *//* REGISTER *//**************************************************************************/typedef union{ unsigned int _intval; struct { unsigned int x_period :16; /* Transmit timer period */ unsigned int r_period :16; /* Receive timer period */ } _bitval;} RX_TIMER_PERIOD;/**************************************************************************//* STRUCTURE DEFINITION FOR SERIAL PORT REGISTERS *//**************************************************************************/typedef struct{ SERIAL_PORT_CONTROL _gctrl; /* Serial port global control */ unsigned int reserved1; /* reserved */ RX_PORT_CONTROL _xctrl; /* Transm port control */ RX_PORT_CONTROL _rctrl; /* Receive port control */ RX_TIMER_CONTROL _rxtctrl; /* Receive/transmit timer control */ RX_TIMER_COUNTER _rxtcounter; /* Receive/transmit timer counter */ RX_TIMER_PERIOD _rxtperiod; /* Receive/transmit timer period */ unsigned int reserved2; /* reserved */ unsigned int x_data; /* Serial port transmit data */ unsigned int reserved3[3]; /* reserved */ unsigned int r_data; /* Serial port receive data */ unsigned int reserved4[3]; /* reserved */} SERIAL_PORT_REG;/**************************************************************************//* SERIAL PORT MACROS FOR BIT FIELD DEFINITIONS *//**************************************************************************//* Serial port macros for global control register integer assignments *//* e.g. SERIAL_PORT_ADDR(0)->gcontrol = XVAREN | DXP | XLEN_16 set the *//* corresponding bits of serial port 0's global control register *//**************************************************************************/#define RRDY 0x1#define XRDY 0x2#define FSXOUT 0x4#define XSREMPTY 0x8#define RSRFULL 0x10#define HS 0x20#define XCLKSRCE 0x40#define RCLKSRCE 0x80#define XVAREN 0x100#define RVAREN 0x200#define XFSM 0x400#define RFSM 0x800#define CLKXP 0x1000#define CLKRP 0x2000#define DXP 0x4000#define DRP 0x8000#define FSXP 0x10000#define FSRP 0x20000#define XLEN_8 0x00000#define XLEN_16 0x40000#define XLEN_24 0x80000#define XLEN_32 0xC0000#define RLEN_8 0x000000#define RLEN_16 0x100000#define RLEN_24 0x200000#define RLEN_32 0x300000#define XTINT 0x400000#define XINT 0x800000#define RTINT 0x1000000#define RINT 0x2000000#define XRESET 0x4000000#define RRESET 0x8000000#define INPUT_PIN 0#define OUTPUT_PIN 1#define DISABLED 0#define ENABLED 1#define EXTERNAL 0#define INTERNAL 1#define FIXED 0#define VARIABLE 1#define CONTINUOUS 1#define STANDARD 0#define ACTIVE_HIGH 0#define ACTIVE_LOW 1#define EIGHT_BITS 0#define SIXTEEN_BITS 1#define TWENTY_FOUR_BITS 2#define THIRTY_TWO_BITS 3#define RESET 0#define UN_RESET 1/**************************************************************************//* Serial port macros for fsx/dx/clkx control register integer *//* assignments, e.g. SERIAL_PORT_ADDR(0)->s_x_control = CLKXFUNC | DXFUNC *//* sets the corresponding bits of serial port 0's fsx/dx/clkx control *//* register *//**************************************************************************/#define CLKXFUNC 0x1#define CLKXI_O 0x2#define CLKXDATOUT 0x4#define CLKXDATIN 0x8#define DXFUNC 0x10#define DXI_O 0x20#define DXDATOUT 0x40#define DXDATIN 0x80#define FSXFUNC 0x100#define FSXI_O 0x200#define FSXDATOUT 0x400#define FSXDATIN 0x800/**************************************************************************//* Serial port macros for fsr/dr/clkr control register integer *//* assignments, e.g. SERIAL_PORT_ADDR(0)->s_r_control = CLKRFUNC | DRFUNC *//* sets the corresponding bits of serial port 0's fsr/dr/clkr control *//* register *//**************************************************************************/#define CLKRFUNC 0x1#define CLKRI_O 0x2#define CLKRDATOUT 0x4#define CLKRDATIN 0x8#define DRFUNC 0x10#define DRI_O 0x20#define DRDATOUT 0x40#define DRDATIN 0x80#define FSRFUNC 0x100#define FSRI_O 0x200#define FSRDATOUT 0x400#define FSRDATIN 0x800#define GENERAL_PURPOSE_IO 0#define SERIAL_PORT_PIN 1/**************************************************************************//* Serial port macros for receive/transmit timer control register integer *//* assignments, e.g. SERIAL_PORT_ADDR(0)->s_rxt_control = XGO | RGO *//* sets the corresponding bits of serial port 0's receive/transmit control*//* register *//**************************************************************************/#define XGO 0x1#define XHLD_ 0x2#define XCP_ 0x4#define XCLKSRC 0x8#define XTSTAT 0x20#define RGO 0x40#define RHLD_ 0x80#define RCP_ 0x100#define RCLKSRC 0x200#define RSTAT 0x800#endif /* #ifndef _serial */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -