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

📄 ch432inc.h

📁 南京沁恒电子有限公司USB通用设备接口芯片资料
💻 H
字号:
#ifdef __CX51__
#ifndef __C51__
#define __C51__    1
#endif
#endif

#ifdef __C51__
typedef bit bdata                     BOOL1;
#else
#define data
#define idata
#define xdata
typedef unsigned char                 BOOL1;
#endif
#ifndef    BOOL
typedef    unsigned char              BOOL;
#endif
#ifndef    TRUE
#define    TRUE 1
#define    FALSE 0
#endif
#ifndef UINT8
typedef unsigned char                 UINT8;
#endif
#ifndef UINT16
typedef unsigned short                UINT16;
#endif
#ifndef UINT32
typedef unsigned long                 UINT32;
#endif
#ifndef PUINT8
typedef unsigned char                 *PUINT8;
#endif
#ifndef PUINT16
typedef unsigned short                *PUINT16;
#endif
#ifndef PUINT32
typedef unsigned long                 *PUINT32;
#endif
#ifndef UINT8V
typedef unsigned char volatile        UINT8V;
#endif

/******************************************************************************************/

/* 芯片定义 */
/* CH432串口0寄存器地址 */

#define REG_RBR_ADDR        0x00      /* 串口0接收缓冲寄存器地址 */
#define REG_THR_ADDR        0x00      /* 串口0发送保持寄存器地址 */
#define REG_IER_ADDR        0x01      /* 串口0中断使能寄存器地址 */
#define REG_IIR_ADDR        0x02      /* 串口0中断识别寄存器地址 */
#define REG_FCR_ADDR        0x02      /* 串口0FIFO控制寄存器地址 */
#define REG_LCR_ADDR        0x03      /* 串口0线路控制寄存器地址 */
#define REG_MCR_ADDR        0x04      /* 串口0MODEM控制寄存器地址 */
#define REG_LSR_ADDR        0x05      /* 串口0线路状态寄存器地址 */
#define REG_MSR_ADDR        0x06      /* 串口0MODEM状态寄存器地址 */
#define REG_SCR_ADDR        0x07      /* 串口0用户可定义寄存器地址 */
#define REG_DLL_ADDR        0x00      /* 波特率除数锁存器低8位字节地址 */
#define REG_DLM_ADDR        0x01      /* 波特率除数锁存器高8位字节地址 */

/* CH432串口1寄存器地址 */

#define REG_RBR1_ADDR       0x08      /* 串口1接收缓冲寄存器地址 */
#define REG_THR1_ADDR       0x08      /* 串口1发送保持寄存器地址 */
#define REG_IER1_ADDR       0x09      /* 串口1中断使能寄存器地址 */
#define REG_IIR1_ADDR       0x0A      /* 串口1中断识别寄存器地址 */
#define REG_FCR1_ADDR       0x0A      /* 串口1FIFO控制寄存器地址 */
#define REG_LCR1_ADDR       0x0B      /* 串口1线路控制寄存器地址 */
#define REG_MCR1_ADDR       0x0C      /* 串口1MODEM控制寄存器地址 */
#define REG_LSR1_ADDR       0x0D      /* 串口1线路状态寄存器地址 */
#define REG_MSR1_ADDR       0x0E      /* 串口1MODEM状态寄存器地址 */
#define REG_SCR1_ADDR       0x0F      /* 串口1用户可定义寄存器地址 */
#define REG_DLL1_ADDR       0x08      /* 波特率除数锁存器低8位字节地址 */
#define REG_DLM1_ADDR       0x09      /* 波特率除数锁存器高8位字节地址 */

/* IER寄存器的位 */

#define BIT_IER_RESET       0x80      /* 该位置1则软复位该串口 */
#define BIT_IER_LOWPOWER    0x40      /* 该位为1则关闭该串口的内部基准时钟 */
#define BIT_IER_SLP         0x20      /* 串口0是SLP,为1则关闭时钟震荡器 */
#define BIT_IER1_CK2X       0x20      /* 串口1是CK2X,为1则强制将外部时钟信号2倍频后作为内部基准时钟 */
#define BIT_IER_IEMODEM     0x08      /* 该位为1允许MODEM输入状态变化中断 */
#define BIT_IER_IELINES     0x04      /* 该位为1允许接收线路状态中断 */
#define BIT_IER_IETHRE      0x02      /* 该位为1允许发送保持寄存器空中断 */
#define BIT_IER_IERECV      0x01      /* 该位为1允许接收到数据中断 */

/* IIR寄存器的位 */

#define BIT_IIR_FIFOENS1    0x80
#define BIT_IIR_FIFOENS0    0x40      /* 该2位为1表示起用FIFO */

/* 中断类型:0001没有中断,0110接收线路状态中断,0100接收数据可用中断,
1100接收数据超时中断,0010THR寄存器空中断,0000MODEM输入变化中断 */
#define BIT_IIR_IID3        0x08
#define BIT_IIR_IID2        0x04
#define BIT_IIR_IID1        0x02
#define BIT_IIR_NOINT       0x01

/* FCR寄存器的位 */

/* 触发点: 00对应1个字节,01对应4个字节,10对应8个字节,11对应14个字节 */
#define BIT_FCR_RECVTG1     0x80      /* 设置FIFO的中断和自动硬件流控制的触发点 */
#define BIT_FCR_RECVTG0     0x40      /* 设置FIFO的中断和自动硬件流控制的触发点 */

#define BIT_FCR_TFIFORST    0x04      /* 该位置1则清空发送FIFO中的数据 */
#define BIT_FCR_RFIFORST    0x02      /* 该位置1则清空接收FIFO中的数据 */
#define BIT_FCR_FIFOEN      0x01      /* 该位置1则起用FIFO,为0则禁用FIFO */

/* LCR寄存器的位 */

#define BIT_LCR_DLAB        0x80      /* 为1才能存取DLL,DLM,为0才能存取RBR/THR/IER */
#define BIT_LCR_BREAKEN     0x40      /* 为1则强制产生BREAK线路间隔*/

/* 设置校验格式:当PAREN为1时,00奇校验,01偶校验,10标志位(MARK,置1),11空白位(SPACE,清0) */
#define BIT_LCR_PARMODE1    0x20      /* 设置奇偶校验位格式 */
#define BIT_LCR_PARMODE0    0x10      /* 设置奇偶校验位格式 */

#define BIT_LCR_PAREN       0x08      /* 为1则允许发送时产生和接收校验奇偶校验位 */
#define BIT_LCR_STOPBIT     0x04      /* 为1则两个停止位,为0一个停止位 */

/* 设置字长度:00则5个数据位,01则6个数据位,10则7个数据位,11则8个数据位 */
#define BIT_LCR_WORDSZ1     0x02      /* 设置字长长度 */
#define BIT_LCR_WORDSZ0     0x01

/* MCR寄存器的位 */

#define BIT_MCR_AFE         0x20      /* 为1允许CTS和RTS硬件自动流控制 */
#define BIT_MCR_LOOP        0x10      /* 为1使能内部回路的测试模式 */
#define BIT_MCR_OUT2        0x08      /* 为1允许该串口的中断请求输出 */
#define BIT_MCR_OUT1        0x04      /* 为用户定义的MODEM控制位 */
#define BIT_MCR_RTS         0x02      /* 该位为1则RTS引脚输出有效 */
#define BIT_MCR_DTR         0x01      /* 该位为1则DTR引脚输出有效 */

/* LSR寄存器的位 */

#define BIT_LSR_RFIFOERR    0x80      /* 为1表示在接收FIFO中存在至少一个错误 */
#define BIT_LSR_TEMT        0x40      /* 为1表示THR和TSR全空 */
#define BIT_LSR_THRE        0x20      /* 为1表示THR空*/
#define BIT_LSR_BREAKINT    0x10      /* 该位为1表示检测到BREAK线路间隔 */
#define BIT_LSR_FRAMEERR    0x08      /* 该位为1表示读取数据帧错误 */
#define BIT_LSR_PARERR      0x04      /* 该位为1表示奇偶校验错误 */
#define BIT_LSR_OVERR       0x02      /* 为1表示接收FIFO缓冲区溢出 */
#define BIT_LSR_DATARDY     0x01      /* 该位为1表示接收FIFO中有接收到的数据 */

/* MSR寄存器的位 */

#define BIT_MSR_DCD         0x80      /* 该位为1表示DCD引脚有效 */
#define BIT_MSR_RI          0x40      /* 该位为1表示RI引脚有效 */
#define BIT_MSR_DSR         0x20      /* 该位为1表示DSR引脚有效 */
#define BIT_MSR_CTS         0x10      /* 该位为1表示CTS引脚有效 */
#define BIT_MSR_DDCD        0x08      /* 该位为1表示DCD引脚输入状态发生变化过 */
#define BIT_MSR_TERI        0x04      /* 该位为1表示RI引脚输入状态发生变化过 */
#define BIT_MSR_DDSR        0x02      /* 该位为1表示DSR引脚输入状态发生变化过 */
#define BIT_MSR_DCTS        0x01      /* 该位为1表示CTS引脚输入状态发生变化过 */

/* 中断状态码 */

#define INT_NOINT           0x01      /* 没有中断 */
#define INT_THR_EMPTY       0x02      /* THR空中断 */
#define INT_RCV_OVERTIME    0x0C      /* 接收超时中断 */
#define INT_RCV_SUCCESS     0x04      /* 接收数据可用中断 */
#define INT_RCV_LINES       0x06      /* 接收线路状态中断 */
#define INT_MODEM_CHANGE    0x00      /* MODEM输入变化中断 */

#define CH432_IIR_FIFOS_ENABLED 0xC0  /* 起用FIFO */

/*设置字长,停止位,校验位函数
WriteCH432Data( CH432_LCR_PORT, BIT_LCR_WORDSZ1 
                              | BIT_LCR_WORDSZ0 );      // 0x03,字长8位,1位停止位,无奇偶校验

WriteCH432Data( CH432_LCR_PORT, BIT_LCR_PAREN 
                              | BIT_LCR_STOPBIT 
                              | BIT_LCR_WORDSZ1 
                              | BIT_LCR_WORDSZ0 );      // 0x0F,字长8位,2位停止位,奇校验

WriteCH432Data( CH432_LCR_PORT, BIT_LCR_PAREN 
                              | BIT_LCR_STOPBIT 
                              | BIT_LCR_WORDSZ1 );      // 0x0E,字长7位,2位停止位、奇校验


WriteCH432Data( CH432_LCR_PORT, BIT_LCR_PAREN 
                              | BIT_LCR_STOPBIT 
                              | BIT_LCR_WORDSZ0 );      // 0x0D,字长6位,2位停止位、奇校验


WriteCH432Data( CH432_LCR_PORT, BIT_LCR_PAREN 
                              | BIT_LCR_STOPBIT );      // 0x0C,字长5位,2位停止位、奇校验


WriteCH432Data( CH432_LCR_PORT, BIT_LCR_PARMODE0 
                              | BIT_LCR_PAREN 
                              | BIT_LCR_STOPBIT 
                              | BIT_LCR_WORDSZ1 
                              | BIT_LCR_WORDSZ0 );      // 0x1F,字长8位,2位停止位、偶校验

WriteCH432Data( CH432_LCR_PORT, BIT_LCR_PARMODE0 
                              | BIT_LCR_PAREN 
                              | BIT_LCR_STOPBIT 
                              | BIT_LCR_WORDSZ1 );      // 0x1E,字长7位,2位停止位、偶校验

WriteCH432Data( CH432_LCR_PORT, BIT_LCR_PARMODE0 
                              | BIT_LCR_PAREN 
                              | BIT_LCR_STOPBIT 
                              | BIT_LCR_WORDSZ0 );      // 0x1D,字长6位,2位停止位、偶校验

WriteCH432Data( CH432_LCR_PORT, BIT_LCR_PARMODE0 
                              | BIT_LCR_PAREN 
                              | BIT_LCR_STOPBIT );      // 0x1C,字长5位,2位停止位、偶校验

WriteCH432Data( CH432_LCR_PORT, BIT_LCR_PARMODE1 
                              | BIT_LCR_PAREN 
                              | BIT_LCR_STOPBIT 
                              | BIT_LCR_WORDSZ1 
                              | BIT_LCR_WORDSZ0 );      // 0x2F,字长8位,2位停止位、标志1校验

WriteCH432Data( CH432_LCR_PORT, BIT_LCR_PARMODE1 
                              | BIT_LCR_PAREN 
                              | BIT_LCR_STOPBIT 
                              | BIT_LCR_WORDSZ1 );      // 0x2E,字长7位,2位停止位、标志1校验

WriteCH432Data( CH432_LCR_PORT, BIT_LCR_PARMODE1 
                              | BIT_LCR_PAREN 
                              | BIT_LCR_STOPBIT 
                              | BIT_LCR_WORDSZ0 );      // 0x2D,字长6位,2位停止位、标志1校验

WriteCH432Data( CH432_LCR_PORT, BIT_LCR_PARMODE1 
                              | BIT_LCR_PAREN 
                              | BIT_LCR_STOPBIT );      // 0x2C,字长5位,2位停止位、标志1校验

WriteCH432Data( CH432_LCR_PORT, BIT_LCR_PARMODE1 
                              | BIT_LCR_PARMODE0
                              | BIT_LCR_PAREN 
                              | BIT_LCR_STOPBIT 
                              | BIT_LCR_WORDSZ1 
                              | BIT_LCR_WORDSZ0 );      // 0x3F,字长8位,2位停止位、空白0校验

WriteCH432Data( CH432_LCR_PORT, BIT_LCR_PARMODE1 
                              | BIT_LCR_PARMODE0
                              | BIT_LCR_PAREN 
                              | BIT_LCR_STOPBIT 
                              | BIT_LCR_WORDSZ1 );      // 0x3E,字长7位,2位停止位、空白0校验

WriteCH432Data( CH432_LCR_PORT, BIT_LCR_PARMODE1
                              | BIT_LCR_PARMODE0
                              | BIT_LCR_PAREN 
                              | BIT_LCR_STOPBIT 
                              | BIT_LCR_WORDSZ0 );      // 0x3D,字长6位,2位停止位、空白0校验

WriteCH432Data( CH432_LCR_PORT, BIT_LCR_PARMODE1
                              | BIT_LCR_PARMODE0
                              | BIT_LCR_PAREN 
                              | BIT_LCR_STOPBIT );      // 0x3C,字长5位,2位停止位、空白0校验

WriteCH432Data( CH432_LCR_PORT, BIT_LCR_PARMODE0 
                              | BIT_LCR_PAREN 
                              | BIT_LCR_WORDSZ1 
                              | BIT_LCR_WORDSZ0 );      // 0x1B,字长8位,1位停止位、偶校验

WriteCH432Data( CH432_LCR_PORT, BIT_LCR_PARMODE0 
                              | BIT_LCR_PAREN 
                              | BIT_LCR_WORDSZ1 );      // 0x1A,字长7位,1位停止位、偶校验


WriteCH432Data( CH432_LCR_PORT, BIT_LCR_PARMODE0 
                              | BIT_LCR_PAREN 
                              | BIT_LCR_WORDSZ0 );      // 0x19,字长6位,1位停止位、偶校验

WriteCH432Data( CH432_LCR_PORT, BIT_LCR_PARMODE0 
                              | BIT_LCR_PAREN );      // 0x18,字长5位,1位停止位、偶校验

WriteCH432Data( CH432_LCR_PORT, BIT_LCR_STOPBIT 
                              | BIT_LCR_WORDSZ1 
                              | BIT_LCR_WORDSZ0 );      // 0x07,字长8位,2位停止位,无奇偶校验
*/

⌨️ 快捷键说明

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