struct  SCICCR_BITS {
   Uint16 SCICHAR:3;         // 2:0    Character length control - 数据位数控制
   Uint16 ADDRIDLE_MODE:1;   // 3      ADDR/IDLE Mode control - 地址/空闲模式控制
   Uint16 LOOPBKENA:1;       // 4      Loop Back enable - 环回使能
   Uint16 PARITYENA:1;       // 5      Parity enable - 奇偶校验使能
   Uint16 PARITY:1;          // 6      Even or Odd Parity - 奇偶校验类型
   Uint16 STOPBITS:1;        // 7      Number of Stop Bits - 停止位数
   Uint16 rsvd1:8;           // 15:8   reserved - 保留位
};

union SCICCR_REG {
   Uint16              all;    // 整个寄存器的值
   struct SCICCR_BITS  bit;    // 位字段结构体
};

//-------------------------------------------
// SCICTL1 control register 1 bit definitions:
//

struct  SCICTL1_BITS {
   Uint16 RXENA:1;           // 0      SCI receiver enable - 接收器使能
   Uint16 TXENA:1;           // 1      SCI transmitter enable - 发送器使能
   Uint16 SLEEP:1;           // 2      SCI sleep - 休眠模式
   Uint16 TXWAKE:1;          // 3      Transmitter wakeup method - 发送器唤醒方式
   Uint16 rsvd:1;            // 4      reserved - 保留位
   Uint16 SWRESET:1;         // 5      Software reset - 软件复位
   Uint16 RXERRINTENA:1;     // 6      Recieve interrupt enable - 接收中断使能
   Uint16 rsvd1:9;           // 15:7   reserved - 保留位

};

union SCICTL1_REG {
   Uint16               all;    // 整个寄存器的值
   struct SCICTL1_BITS  bit;    // 位字段结构体
};

//--------------------------------------------- 
// SCICTL2 control register 2 bit definitions:
//

struct  SCICTL2_BITS {
   Uint16 TXINTENA:1;        // 0      Transmit interrupt enable - 发送中断使能
   Uint16 RXBKINTENA:1;      // 1      Receiver-buffer break enable - 接收缓冲区中断使能
   Uint16 rsvd:4;            // 5:2    reserved - 保留位
   Uint16 TXEMPTY:1;         // 6      Transmitter empty flag - 发送器空标志
   Uint16 TXRDY:1;           // 7      Transmitter ready flag - 发送器就绪标志
   Uint16 rsvd1:8;           // 15:8   reserved - 保留位

};

union SCICTL2_REG {
   Uint16               all;    // 整个寄存器的值
   struct SCICTL2_BITS  bit;    // 位字段结构体
};

//---------------------------------------------------
// SCIRXST Receiver status register bit definitions:
//

struct  SCIRXST_BITS {
   Uint16 rsvd:1;            // 0      reserved - 保留位
   Uint16 RXWAKE:1;          // 1      Receiver wakeup detect flag - 接收器唤醒检测标志
   Uint16 PE:1;              // 2      Parity error flag - 奇偶校验错误标志
   Uint16 OE:1;              // 3      Overrun error flag - 溢出错误标志
   Uint16 FE:1;              // 4      Framing error flag - 帧错误标志
   Uint16 BRKDT:1;           // 5      Break-detect flag - 中断检测标志
   Uint16 RXRDY:1;           // 6      Receiver ready flag - 接收器就绪标志
   Uint16 RXERROR:1;         // 7      Receiver error flag - 接收错误标志
   Uint16 rsvd1:8;			 // 15-8   reserved - 保留位
};

union SCIRXST_REG {
   Uint16               all;    // 整个寄存器的值
   struct SCIRXST_BITS  bit;    // 位字段结构体
};

//----------------------------------------------------
// SCIRXBUF Receiver Data Buffer with FIFO bit definitions:
//

struct  SCIRXBUF_BITS {
   Uint16 RXDT:8;            // 7:0    Receive word - 接收数据
   Uint16 rsvd:6;            // 13:8   reserved - 保留位
   Uint16 SCIFFPE:1;         // 14     SCI PE error in FIFO mode - FIFO 模式下奇偶校验错误标志
   Uint16 SCIFFFE:1;         // 15     SCI FE error in FIFO mode - FIFO 模式下帧错误标志
};

union SCIRXBUF_REG {
   Uint16                all;    // 整个寄存器的值
   struct SCIRXBUF_BITS  bit;    // 位字段结构体
};

//--------------------------------------------------
// SCIPRI Priority control register bit definitions:
//
//

struct  SCIPRI_BITS {
   Uint16 rsvd:3;            // 2:0    reserved - 保留位
   Uint16 FREE:1;            // 3      Free emulation suspend mode - 自由仿真挂起模式
   Uint16 SOFT:1;            // 4      Soft emulation suspend mode - 软仿真挂起模式
   Uint16 rsvd1:11;          // 15:5    reserved - 保留位
};

union SCIPRI_REG {
   Uint16              all;    // 整个寄存器的值
   struct SCIPRI_BITS  bit;    // 位字段结构体
};

//-------------------------------------------------
// SCI FIFO Transmit register bit definitions:
//
//

struct  SCIFFTX_BITS {
   Uint16 TXFFIL:5;          // 4:0    Interrupt level - 中断级别
   Uint16 TXFFIENA:1;        // 5      Interrupt enable - 中断使能
   Uint16 TXFFINTCLR:1;      // 6      Clear INT flag - 清除中断标志
   Uint16 TXFFINT:1;         // 7      INT flag - 中断标志
   Uint16 TXFFST:5;          // 12:8   FIFO status - FIFO 状态
   Uint16 TXFIFOXRESET:1;    // 13     FIFO reset - FIFO 复位
   Uint16 SCIFFENA:1;        // 14     Enhancement enable - 增强功能使能
   Uint16 SCIRST:1;          // 15     SCI reset rx/tx channels - SCI 复位接收/发送通道

};

union SCIFFTX_REG {
   Uint16               all;    // 整个寄存器的值
   struct SCIFFTX_BITS  bit;    // 位字段结构体
};

//------------------------------------------------
// SCI FIFO recieve register bit definitions:
//
//

struct  SCIFFRX_BITS {
   Uint16 RXFFIL:5;          // 4:0    Interrupt level - 中断级别
   Uint16 RXFFIENA:1;        // 5      Interrupt enable - 中断使能
   Uint16 RXFFINTCLR:1;      // 6      Clear INT flag - 清除中断标志
   Uint16 RXFFINT:1;         // 7      INT flag - 中断标志
   Uint16 RXFFST:5;          // 12:8   FIFO status - FIFO 状态
   Uint16 RXFIFORESET:1;     // 13     FIFO reset - FIFO 复位
   Uint16 RXFFOVRCLR:1;      // 14     Clear overflow - 清除溢出
   Uint16 RXFFOVF:1;         // 15     FIFO overflow - FIFO 溢出

};

union SCIFFRX_REG {
   Uint16               all;    // 整个寄存器的值
   struct SCIFFRX_BITS  bit;    // 位字段结构体
};

// SCI FIFO control register bit definitions:
struct  SCIFFCT_BITS {     
   Uint16 FFTXDLY:8;         // 7:0    FIFO transmit delay - FIFO 发送延迟
   Uint16 rsvd:5;            // 12:8   reserved - 保留位
   Uint16 CDC:1;             // 13     Auto baud mode enable - 自动波特率模式使能
   Uint16 ABDCLR:1;          // 14     Auto baud clear - 自动波特率清除
   Uint16 ABD:1;             // 15     Auto baud detect - 自动波特率检测
};

union SCIFFCT_REG {
   Uint16               all;    // 整个寄存器的值
   struct SCIFFCT_BITS  bit;    // 位字段结构体
};

//---------------------------------------------------------------------------
// SCI Register File:
//
struct  SCI_REGS {
   union SCICCR_REG     SCICCR;     // Communications control register - 通信控制寄存器
   union SCICTL1_REG    SCICTL1;    // Control register 1 - 控制寄存器 1
   Uint16               SCIHBAUD;   // Baud rate (high) register - 波特率(高位)寄存器
   Uint16               SCILBAUD;   // Baud rate (low) register - 波特率(低位)寄存器
   union SCICTL2_REG    SCICTL2;    // Control register 2 - 控制寄存器 2
   union SCIRXST_REG    SCIRXST;    // Recieve status register - 接收状态寄存器
   Uint16               SCIRXEMU;   // Recieve emulation buffer register - 接收仿真缓冲区寄存器
   union SCIRXBUF_REG   SCIRXBUF;   // Recieve data buffer - 接收数据缓冲区
   Uint16               rsvd1;      // reserved - 保留位
   Uint16               SCITXBUF;   // Transmit data buffer - 发送数据缓冲区
   union SCIFFTX_REG    SCIFFTX;    // FIFO transmit register - FIFO 发送寄存器
   union SCIFFRX_REG    SCIFFRX;    // FIFO recieve register - FIFO 接收寄存器
   union SCIFFCT_REG    SCIFFCT;    // FIFO control register - FIFO 控制寄存器
   Uint16               rsvd2;      // reserved - 保留位
   Uint16               rsvd3;      // reserved - 保留位
   union SCIPRI_REG     SCIPRI;     // FIFO Priority control - FIFO 优先级控制
};

这段代码定义了一个SCI(串行通信接口)寄存器文件的结构体,用于控制和设置SCI模块的通信参数和数据传输。

其中,结构体中包含了多个联合体,每个联合体表示了一个寄存器。每个联合体中包含了一个整体的寄存器值以及该寄存器的各个位字段的结构体表示方法。

例如,SCICCR_REGS中的SCICCR联合体表示了SCI通信控制寄存器,其中包含了位字段SCICHAR、ADDRIDLE_MODE、LOOPBKENA、PARITYENA、PARITY和STOPBITS等,用于控制数据位数、地址/空闲模式、环回使能、奇偶校验等参数。

其他的联合体也类似,分别表示了SCI控制寄存器1、波特率寄存器、SCI控制寄存器2、接收状态寄存器、接收数据缓冲区、发送数据缓冲区、FIFO发送寄存器、FIFO接收寄存器、FIFO控制寄存器和FIFO优先级控制寄存器等。

这些寄存器可以通过结构体中的成员变量来进行读写操作,用于控制SCI通信的各个方面。


原文地址: https://www.cveoy.top/t/topic/oLcD 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录