📄 serial.h
字号:
/********************************************************************************/
/* serial.h v1.00 */
/* 版权(c) 2003- 北京合众达电子技术有限责任公司 */
/* 设计者: 刘宁 */
/********************************************************************************/
/******************************************************************************/
/* serial.h - serial port 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 + -