1
CH438 中文手册
八串口芯片 CH438
数据手册
版本:1B
http://wch.cn
1、概述
CH438 是八 UART 芯片,包含八个兼容 16C550 或者 16C750 的异步串口,支持最高 4Mbps 的通讯
波特率,可以用于单片机/嵌入式系统的 RS232 串口扩展、带自动硬件速率控制的高速串口、RS485
通讯等。下图为其一般应用框图。
TXD0/RTS0/DTR0
D7~D0
串口 0
RXD0/CTS0/DSR0/RI0/DCD0
MCU
单片机
或
ISA 等
并行总线
TXD1/RTS1/DTR1
ALE 或 A6~A0
串口 1
RXD1/CTS1/DSR1/RI1/DCD1
RD#
WR#
CS#
INT
CH438
芯片
… …
串口 2、3、4、5
TXD6/RTS6/DTR6
RXD6/CTS6/DSR6/RI6/DCD6
串口 6
RST#
AMOD
TXD7/RTS7/DTR7
RXD7/CTS7/DSR7/RI7/DCD7
串口 7
2、特点
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
完全独立的八个异步串口,兼容 16C550、16C552、16C554 及 16C750 并且有所增强。
支持 5、6、7 或者 8 个数据位以及 1 或者 2 个停止位。
支持奇、偶、无校验、空白 0、标志 1 等校验方式。
可编程通讯波特率,支持 115200bps 以及最高达 4Mbps 的通讯波特率。
内置 128 字节的 FIFO 先进先出缓冲器,支持 4 个 FIFO 触发级。
支持 MODEM 调制解调器信号 CTS、DSR、RI、DCD、DTR、RTS,可由 75232 芯片转成 RS232 电平。
支持硬件流控制信号 CTS 和 RTS 自动握手和自动传输速率控制,兼容 TL16C550C。
支持串口帧错误检测、支持 Break 线路间隔检测。
内置时钟振荡器,支持频率范围 0.9216MHz~32MHz 的晶体,默认使用 22.1184MHz 晶体。
提供 10MB 速度的 8 位被动并行接口连接单片机。
并行接口包含 8 位数据总线,7 位地址,3 线控制:片选输入、写选通以及可选的读选通。
支持直接地址和复用地址方式:直接输入 7 位地址或者由 ALE 信号控制从数据总线锁存地址。
中断输出引脚是可选连接,低电平有效,可以通过查询寄存器中的中断标志位代替。
支持 5V 或者 3.3V 电源电压,支持串口低功耗睡眠模式。
提供 LQFP-44 和 LQFP-128 无铅封装,兼容 RoHS。
3、封装
2
CH438 中文手册
封装形式
塑体宽度
LQFP-128
LQFP-44
14mm x 14mm
10mm x 10mm
引脚间距
0.4mm
0.8mm
15.7mil
31.5mil
封装说明
订货型号
标准 LQFP128 贴片
标准 LQFP44 贴片
CH438L
CH438Q
4、引脚
CH438Q 芯片是 CH438L 芯片去掉 MODEM 信号引脚之后的精简版本,
除了没有 MODEM 信号引脚之外,
其它功能完全相同。CH438Q 的同名引脚具有相同的功能,下面的引脚说明仅以 CH438L 为例。
4.1. 电源和系统信号线
3
CH438 中文手册
引脚号
30,44,67,94,128
1,16,29,46,68,
93,105,106,120
2-6,14,15,17-23,
41-43,45,58,
115-119,121,126,127
47
48
引脚名称
VCC
类型
电源
引脚说明
正电源端
GND
电源
公共接地端
NC.
空脚
禁止连接
XI
XO
输入
输出
晶体振荡的输入端,需要外接晶体及振荡电容
晶体振荡的反相输出端,需要外接晶体及振荡电容
4.2. 单片机接口信号线
引脚号
104
引脚名称
RST#
类型
输入
122
AMOD
输入
107-114
D7~D0
7-13
7
124
125
123
103
A6~A0
ALE
RD#
WR#
CS#
INT
三态输出
及输入
输入
输入
输入
输入
输入
开漏输出
引脚说明
外部手工复位输入,低电平有效,内置弱下拉电阻
地址输入方式选择:
低电平为直接地址方式,高电平为复用地址方式
8 位并行双向数据信号线,
复用地址方式的地址和数据复用信号线
直接地址方式的地址线输入
复用地址方式的地址锁存使能输入,高电平有效
并口方式的读选通输入,低电平有效
并口方式的写选通输入,低电平有效
并口方式的片选控制输入,低电平有效
中断请求输出,低电平有效,可能需要外接上拉电阻
4.3. 串口信号线
引脚号
引脚名称
92/69
62/34
24/79
102/100
91/70
61/35
49/52
55/97
90/71
60/36
50/53
56/96
89/72
59/37
51/54
98/95
86/76
63/31
26/80
82/84
CTS0/CTS1
CTS2/CTS3
CTS4/CTS5
CTS6/CTS7
DSR0/DSR1
DSR2/DSR3
DSR4/DSR5
DSR6/DSR7
RI0/RI1
RI2/RI3
RI4/RI5
RI6/RI7
DCD0/DCD1
DCD2/DCD3
DCD4/DCD5
DCD6/DCD7
RXD0/RXD1
RXD2/RXD3
RXD4/RXD5
RXD6/RXD7
类型
引脚说明
输入
MODEM 信号,清除发送,低电平有效,内置弱上拉
CH438Q 没有该引脚
输入
MODEM 信号,数据装置就绪,低电平有效,内置弱上拉
CH438Q 没有该引脚
输入
MODEM 信号,振铃指示,低电平有效,内置弱上拉
CH438Q 没有该引脚
输入
MODEM 信号,载波检测,低电平有效,内置弱上拉
CH438Q 没有该引脚
输入
异步串行数据输入,内置弱上拉电阻
4
CH438 中文手册
88/73
64/33
38/40
39/57
87/74
66/32
25/78
101/99
85/75
65/28
27/77
81/83
DTR0/DTR1
DTR2/DTR3
DTR4/DTR5
DTR6/DTR7
RTS0/RTS1
RTS2/RTS3
RTS4/RTS5
RTS6/RTS7
TXD0/TXD1
TXD2/TXD3
TXD4/TXD5
TXD6/TXD7
输出
MODEM 信号,数据终端就绪,低电平有效
CH438Q 没有该引脚
输出
MODEM 信号,请求发送,低电平有效
CH438Q 没有该引脚
输出
异步串行数据输出
5、内部时钟配置
CH438 芯片内部具有时钟振荡器,只需要在 XI 和 XO 引脚之间连接一个晶体,并且为 XO 引脚对
地连接振荡电容,就能产生串口所需的外部时钟信号,如果不接晶体和电容,CH438 芯片也可以通过
XI 引脚从外部时钟源直接输入时钟。
CK2X 是串口 1~7 的 IER 寄存器的位 5,CH438 芯片内部由 CK2X 选择对 XI 引脚的外部时钟信号
进行 1/12 分频或者 2 倍频,产生内部基准时钟提供给串口 0~串口 7。CK2X 默认为 0,为 0 时选择
1/12 分频,为 1 时选择 2 倍频。如果需要与现有 16C550 串口芯片兼容,那么内部时钟频率应该是
1.8432MHz,对应的最大串口波特率是 115200bps,所以默认的外部时钟频率为 22.1184MHz。如果需
要产生较高的串口波特率,那么应该设置 CK2X 为 1,并且选择较高的外部时钟频率。如果需要产生
特殊数值的串口波特率,那么应该选择特定频率的外部时钟或者晶体。
CH438 芯片的串口 0 只支持 1/12 分频一种内部时钟频率,不支持倍频,而串口 1~串口 7 支持
CK2X 选择分频或者倍频。下表是串口 1~串口 7 根据 CK2X 值和外部晶体频率产生串口的内部时钟频
率和最大串口波特率。
CK2X=0,内部 1/12 分频
CK2X=1,内部 2 倍频
外部输入时钟频率
或者外部晶体频率
最大波特率
内部时钟频率
最大波特率
内部时钟频率
32MHz
64MHz
4Mbps
22.1184MHz
1.8432MHz
115.2Kbps
44.2368MHz
2.7648Mbps
18.432MHz
36.864MHz
2.304Mbps
14.7456MHz
29.4912MHz
1.8432Mbps
11.0592MHz
0.9216MHz
57.6Kbps
22.1184MHz
1.3824Mbps
7.3728MHz
0.6144MHz
38.4Kbps
14.7456MHz
921.6Kbps
3.6864MHz
0.3072MHz
19.2Kbps
7.3728MHz
460.8Kbps
0.9216MHz
1.8432MHz
115.2Kbps
6、寄存器
CH438 芯片内部具有 8 个独立的串口模块,在寄存器地址空间分布上,每个串口各占用 8 个字节
的地址空间。地址 00H-07H 为串口 0 的寄存器,地址 08H-0FH 为串口 4 的寄存器,地址 10H-17H 为串
口 1,地址 18H-1FH 为串口 5,地址 20H-27H 为串口 2,地址 28H-2FH 为串口 6,地址 30H-37H 为串口
3,地址 38H-3FH 为串口 7。另外,地址 4FH 的寄存器是专用状态寄存器 SSR,是只读寄存器,用于查
询芯片内部的串口 0~串口 7 的各个中断状态等。
6.1. 专用状态寄存器
CH438 中文手册
5
CH438 的专用状态寄存器是只读寄存器,其地址为 4FH。
名称
位7
位6
位5
位4
位3
SSR
S7INT
S6INT
S5INT
S4INT
S3INT
位2
S2INT
位1
S1INT
位0
S0INT
SSR:状态寄存器,用于查询芯片内部的各个中断状态等,为 1 说明正在请求中断。
S7INT:该位是串口 7 的中断请求状态。
S6INT:该位是串口 6 的中断请求状态。
S5INT:该位是串口 5 的中断请求状态。
S4INT:该位是串口 4 的中断请求状态。
S3INT:该位是串口 3 的中断请求状态。
S2INT:该位是串口 2 的中断请求状态。
S1INT:该位是串口 1 的中断请求状态。
S0INT:该位是串口 0 的中断请求状态。
6.2. 串口寄存器
CH438 的串口兼容工业标准 16C550 或者 16C750 并有所增强,表中标为灰色的寄存器位为增强功
能,并且 FIFO 缓冲器长度扩展为 128 字节,除此之外的寄存器可以参考单串口芯片 16C550 的说明。
除了起始地址不同,串口 1 与串口 2、3、4、5、6、7 的寄存器都相同,除了 SLP/CK2X 寄存器位
之外,串口 0 与串口 1 的寄存器都相同。表中 DLAB 为寄存器 LCR 的位 7,X 表示不关心 DLAB 值,RO
表示寄存器只读,WO 表示寄存器只写,R/W 表示寄存器可读可写。
地
名
DLAB R/W
位7
位6
位5
位4
位3
位2
位1
位0
址
称
0
0 RO RBR
位7
位6
位5
位4
位3
位2
位1
位0
0
0 WO THR
位7
位6
位5
位4
位3
位2
位1
位0
1
0 R/W IER RESET LOWPOWER SLP/CK2X
0
IEMODEM IELINES IETHRE IERECV
2
X RO IIR FIFOENS FIFOENS
0
0
IID3
IID2
IID1
NOINT
2
X WO FCR RECVTG1 RECVTG0
0
0
0
TFIFORST RFIFORST FIFOEN
3
X R/W LCR
DLAB
BREAKEN PARMODE1 PARMODE0 PAREN
STOPBIT WORDSZ1 WORDSZ0
4
X R/W MCR
0
0
AFE
LOOP
OUT2
OUT1
RTS
DTR
5
X RO LSR RFIFOERR TEMT
THRE
BREAKINT FRAMEERR PARERR
OVERR DATARDY
6
X RO MSR
DCD
RI
DSR
CTS
△DCD
△RI
△DSR
△CTS
7
X R/W SCR
位7
位6
位5
位4
位3
位2
位1
位0
0
1 R/W DLL
位7
位6
位5
位4
位3
位2
位1
位0
1
1 R/W DLM 位 15
位 14
位 13
位 12
位 11
位 10
位9
位8
下表是串口寄存器在外部手工复位或者串口软复位之后的默认值。
寄存器名称
位7
位6
位5
位4
位3
位2
位1
位0
IER
0
0
0
0
0
0
0
0
IIR
0
0
0
0
0
0
0
1
FCR
0
0
0
0
0
0
0
0
LCR
0
0
0
0
0
0
0
0
MCR
0
0
0
0
0
0
0
0
LSR
0
1
1
0
0
0
0
0
MSR
DCD
RI
DSR
CTS
0
0
0
0
SCR
保持
保持
保持
保持
保持
保持
保持
保持
FIFO
复位,包括发送 FIFO 和接收 FIFO
TSR
复位,TSR 是串口发送移位寄存器
RSR
复位,RSR 为串口接收移位寄存器
其它
未定义
6
CH438 中文手册
RBR:接收缓冲寄存器,如果 LSR 的 DATARDY 位为 1 则可以从该寄存器读取接收到的数据。如果 FIFOEN
为 1 则从串口移位寄存器 RSR 接收到的数据首先被存放于接收 FIFO 中,然后通过该寄存器读出。
THR:发送保持寄存器,包括发送 FIFO,用于写入准备发送的数据。如果 FIFOEN 为 1 则写入的数据
首先被存放于发送 FIFO 中,然后通过发送移位寄存器 TSR 逐个输出。
IER:中断使能寄存器,包括增强功能控制位以及串口中断使能。
RESET:该位置 1 则软复位该串口,该位能够自动清 0,无需软件清 0。
LOWPOWER:该位为 1 则关闭该串口的内部基准时钟,从而使该串口进入低功耗状态。
SLP/CK2X:串口 0 与串口 1~7 的该位用途不同,串口 0 是 SLP 位,该位为 1 并且 LOWPOWER 为 1
则关闭时钟振荡器,从而使所有串口全部进入睡眠状态,串口 1~7 是 CK2X,该位为 1 则强制
将外部时钟信号 2 倍频后作为串口 1~7 的内部基准时钟。
IEMODEM:该位为 1 则允许调制解调器输入状态变化中断。
IELINES:该位为 1 则允许接收线路状态中断。
IETHRE:该位为 1 则允许发送保持寄存器空中断。
IERECV:该位为 1 则允许接收到数据中断。
IIR:中断识别寄存器,用于分析中断源并处理。
FIFOENS:该位为 FIFO 启用状态,为 1 表示已经启用 FIFO。
IIR 寄存器位
优先
IID3 IID2 IID1 NOINT 级
0
0
0
1
无
0
1
1
0
1
0
1
0
0
2
1
1
0
0
2
0
0
1
0
3
0
0
0
0
4
中断类型
中断源
清中断
方法
没有中断产生
接收线路状态
接收数据可用
接收数据超时
没有中断
OVERR、PARERR、FRAMEERR、BREAKINT 读 LSR
接收到的字节数达到 FIFO 的触发点
读 RBR
超过 4 个数据的时间未收到下一数据
读 RBR
发送保持寄存器空,
读 IIR
THR 寄存器空
IETHRE 从 0 变 1 可以重新使能中断 或写 THR
MODEM 输入变化
△CTS、△DSR、△RI、△DCD
读 MSR
FCR:先进先出缓冲区 FIFO 控制寄存器,用于使能和复位 FIFO。
RECVTG1 和 RECVTG0:设置接收 FIFO 的中断和硬件流控制的触发点,00 对应 1 个字节,即接收
满 1 个字节产生接收数据可用的中断,并在使能硬件流控制时自动无效 RTS 引脚,01 对应 16
个字节,10 对应 64 个字节,11 对应 112 个字节。
TFIFORST:该位置 1 则清空发送 FIFO 中的数据(不含 TSR)
,该位能够自动清 0,无需软件清 0。
RFIFORST:该位置 1 则清空接收 FIFO 中的数据(不含 RSR)
,该位能够自动清 0,无需软件清 0。
FIFOEN:该位为 1 则启用 FIFO,该位清 0 则禁用 FIFO,禁用 FIFO 后为 16C450 兼容模式,相当
于 FIFO 只有一个字节(RECVTG1=0、RECVTG0=0、FIFOEN=1)
,建议启用 FIFO。
LCR:线路控制寄存器,用于控制串口通讯的格式。
DLAB:该位为除数锁存器存取使能,为 1 时才能存取 DLL 和 DLM,为 0 时才能存取 RBR/THR/IER。
BREAKEN:该位为 1 则强制产生 BREAK 线路间隔。
PARMODE1 和 PARMODE0:当 PAREN 为 1 时设置奇偶校验位的格式:00 则奇校验,01 则偶校验,10
则标志位(MARK,置 1)
,11 则空白位(SPACE,清 0)
。
PAREN:该位为 1 则允许发送时产生和接收时校验奇偶校验位,为 0 则无奇偶校验位。
STOPBIT:该位为 1 则两个停止位,为 0 则一个停止位。
WORDSZ1 和 WORDSZ0:设置字长度,00 则 5 个数据位,01 则 6 个数据位,10 则 7 个数据位,11
则 8 个数据位。
MCR:调制解调器 MODEM 控制寄存器,用于控制 MODEM 输出。
AFE:该位为 1 则允许 CTS 和 RTS 硬件自动流控制。如果 AFE 为 1,那么仅在检测到 CTS 引脚输
入有效(低电平有效)时串口才继续发送下一个数据,否则暂停串口发送,当 AFE 为 1 时的
CTS 输入状态变化不会产生 MODEM 状态中断。如果 AFE 为 1 并且 RTS 为 1,那么当接收 FIFO
空时,串口会自动有效 RTS 引脚(低电平有效)
,直到接收的字节数达到 FIFO 的触发点时,
串口才自动无效 RTS 引脚,并能够在接收 FIFO 空时再次有效 RTS 引脚。使用硬件自动带率控
制,可将己方的 CTS 引脚接到对方的 RTS 引脚,并将己方的 RTS 引脚送到对方的 CTS 引脚。
CH438 中文手册
7
LOOP:该位为 1 则使能内部回路的测试模式。在内部回路的测试模式下,串口所有对外输出引脚
均为无效状态,TXD 内部返回到 RXD(即 TSR 的输出内部返回到 RSR 的输入)
,RTS 内部返回到
CTS,DTR 内部返回到 DSR,OUT1 内部返回到 RI,OUT2 内部返回到 DCD。
OUT2:该位为 1 则允许该串口的中断请求输出,否则该串口不产生实际中断请求。
OUT1:该位为用户可定义 MODEM 控制位,没有连接实际输出引脚。
RTS:该位为 1 则 RTS 引脚输出有效(低电平有效)
,否则 RTS 引脚输出无效。
DTR:该位为 1 则 DTR 引脚输出有效(低电平有效)
,否则 DTR 引脚输出无效。
LSR:线路状态寄存器,用于查询方式分析串口状态。
RFIFOERR:该位为 1 表示在接收 FIFO 中存在至少一个 PARERR、FRAMEERR 或 BREAKINT 错误。
TEMT:该位为 1 表示发送保持寄存器 THR 和发送移位寄存器 TSR 全空。
THRE:该位为 1 表示发送保持寄存器 THR 空。
BREAKINT:该位为 1 表示检测到 BREAK 线路间隔。
FRAMEERR:该位为 1 表示正在从接收 FIFO 中读取的数据的帧错误,缺少有效的停止位。
PARERR:该位为 1 表示正在从接收 FIFO 中读取的数据的奇偶校验错。
OVERR:该位为 1 表示接收 FIFO 缓冲区溢出。
DATARDY:该位为 1 表示接收 FIFO 中有接收到的数据,读取 FIFO 中所有数据后,该位自动清 0。
MSR:调制解调器 MODEM 状态寄存器,用于查询 MODEM 状态。
DCD:该位是 DCD 引脚的位反,为 1 表示 DCD 引脚有效(低电平有效)
。
RI:该位是 RI 引脚的位反,为 1 表示 RI 引脚有效(低电平有效)
。
DSR:该位是 DSR 引脚的位反,为 1 表示 DSR 引脚有效(低电平有效)
。
CTS:该位是 CTS 引脚的位反,为 1 表示 CTS 引脚有效(低电平有效)
。
△DCD:该位为 1 表示 DCD 引脚输入状态发生过变化。
△RI:该位为 1 表示 RI 引脚输入状态发生过变化。
△DSR:该位为 1 表示 DSR 引脚输入状态发生过变化。
△CTS:该位为 1 表示 CTS 引脚输入状态发生过变化。
SCR:用户可定义寄存器。
DLL 和 DLM:波特率除数锁存器,DLL 是低字节,DLM 是高字节,两者组成的 16 位除数用于由 16 位计
数器构成的串口波特率产生器。该除数 = 串口内部基准时钟 / 16 / 所需通讯波特率。如果串口
内部基准时钟为 1.8432MHz,所需波特率为 9600bps,则除数=1843200/16/9600=12。
7、功能说明
7.1. 查询与中断
CH438 芯片的 8 个串口合用一个中断请求引脚 INT,所以在单片机在进入中断服务程序后,首先
应该分析出是哪个串口的中断请求。当进入中断服务程序后,有专用状态分析和依次查询两种方法:
专用状态分析是指首先读取 SSR 专用状态寄存器,S0INT 标志有效说明是串口 0 中断,S1INT 标
志有效说明是串口 1 中断,S2INT 标志有效说明是串口 2 中断,S3INT 标志有效说明是串口 3 中断,
S4INT 标志有效说明是串口 4 中断,S5INT 标志有效说明是串口 5 中断,S6INT 标志有效说明是串口 6
中断,S7INT 标志有效说明是串口 7 中断,根据分析结果直接处理并退出,无中断则直接退出。
依次查询是指首先读取串口 0 的 IIR 寄存器,有中断则处理并退出,无中断则读取串口 1 的 IIR
寄存器,有中断则处理并退出,无中断则读取串口 2 的 IIR 寄存器,有中断则处理并退出,无中断则
读取串口 3 的 IIR 寄存器,以此类推,串口 6 有中断则处理并退出,无中断则读取串口 7 的 IIR 寄存
器,有中断则处理并退出,无中断则直接退出。
当确认是某个串口的中断后,如果有必要还可以进一步分析 LSR 寄存器,分析中断原因并处理。
如果串口工作于中断方式,那么需要设置 IER 寄存器以允许相应的中断请求,并设置 MCR 寄存器
中的 OUT2 以允许中断输出。中断请求引脚 INT 是低电平有效的开漏输出引脚,连接单片机时可能需
要外加上拉电阻,INT 功能上是各个串口中断的“或非”
。
如果串口工作于查询方式,那么无需设置 IER 和 MCR 的 OUT2,只需查询 LSR 寄存器并分析处理。
CH438 中文手册
8
7.2. 串口操作
串口发送的保持寄存器 THR 空中断(IIR 寄存器的低 4 位为 02H)是指发送 FIFO 空。当读取 IIR
寄存器后,该中断被清除,或者当向 THR 写入下一个数据后,该中断也能被清除。如果仅仅是向 THR
写入一个字节,那么由于该字节很快被转移到发送移位寄存器 TSR 中开始发送,所以 CH438 很快会再
次产生发送保持寄存器 THR 空中断的请求,此时可以写入下一个准备发送的数据。当 TSR 寄存器中的
数据被全部移出后,串口发送才真正完成,此时 LSR 寄存器的 TEMT 位变为 1 有效。
当单片机收到串口发送保持寄存器 THR 空的中断后,如果使能 FIFO,那么可以向 THR 寄存器及
FIFO 一次写入最多 128 个字节,由 CH438 按顺序自动发送;如果禁止 FIFO,那么一次只能写入一个
字节;如果没有数据需要发送,那么可以直接退出(之前读取 IIR 时已经自动清除中断)
。
在查询方式下,单片机可以根据 LSR 寄存器的 THRE 位判断发送 FIFO 是否为空,THRE 为 1 则可
以向 THR 寄存器及 FIFO 写入数据,如果使能 FIFO,那么一次可以写入最多 128 个字节。
串口接收的数据可用中断(IIR 寄存器的低 4 位为 04H)是指接收 FIFO 中的已有数据字节数已经
达到或超过由 FCR 寄存器的 RECVTG1 和 RECVTG0 选择的 FIFO 触发点。当从 RBR 读取数据使 FIFO 中字
节数低于 FIFO 触发点时,该中断被清除。串口接收的数据超时中断(IIR 寄存器的低 4 位为 0CH)是
指接收 FIFO 中至少有一个字节的数据,并且从上一次串口接收到数据和从上一次被单片机取走数据
开始,已经等待了相当于接收 4 个数据的时间。当再次接收到一个新的数据后,该中断被清除,或者
当单片机读取一次 RBR 寄存器后,该中断也能被清除。当接收 FIFO 全空时,LSR 寄存器的 DATARDY
位为 0,当接收 FIFO 中有数据时,DATARDY 位为 1 有效。
当单片机收到串口接收数据超时的中断后,可以先从 RBR 寄存器读取一个字节,然后查询 LSR 寄
存器的 DATARDY 位,如果 DATARDY 位有效则再读取一个字节,直到 DATARDY 位无效。
当单片机收到串口接收数据可用的中断后,可以先从 RBR 寄存器读取由 FCR 寄存器的 RECVTG1 和
RECVTG0 设定的字节数,然后再查询 LSR 寄存器的 DATARDY 位,如果 DATARDY 位有效则再读取一个字
节,直到 DATARDY 位无效,或者全部是通过查询 LSR 寄存器的 DATARDY 位有效后再读取。
在查询方式下,单片机可以根据 LSR 寄存器的 DATARDY 位判断接收 FIFO 是否为空,DATARDY 为 1
则可以从 RBR 寄存器读取一个字节的数据,然后查询 DATARDY 位的状态,如果有效则再次读取 RBR 寄
存器,直到 DATARDY 位为 0。
接收线路状态中断(IIR 寄存器的低 4 位为 06H)是指上次单片机读取 LSR 寄存器之后,CH438
在串口接收过程中检测到错误或者异常。当从 LSR 寄存器读取线路状态后,该中断及 LSR 寄存器中的
状态位被清除。该中断是 LSR 寄存器的位数据 BREAKINT、FRAMEERR、PARERR 和 OVERR 的逻辑“或”。
MODEM 输入变化中断(IIR 寄存器的低 4 位为 00H)是指上次单片机读取 MSR 寄存器之后,CH438
检测到调制解调器的输入信号发生了变化。当从 MSR 寄存器读取 MODEM 状态后,该中断及 MSR 寄存器
中的状态位被清除。该中断是 MSR 寄存器的位数据△DCD、△RI、△DSR 和△CTS 的逻辑“或”
。
7.3. 硬件流控制
硬件流控制包括自动 CTS(MCR 寄存器的 AFE 为 1)和自动 RTS(MCR 寄存器的 AFE 和 RTS 都为 1)
。
如果使能自动 CTS,那么 CTS 引脚在串口发送数据之前必须有效。串口发送器在发送下一个数据
之前会检测 CTS 引脚,当 CTS 引脚状态有效时,发送器发送下一个数据。为了使发送器停止发送后面
的数据,CTS 引脚必须在当前发送的最后一个停止位的中间时刻之前被无效。自动 CTS 功能减少了向
单片机系统申请的中断。当使能硬件流控制后,由于 CH438 会根据 CTS 引脚状态自动控制发送器,所
以 CTS 引脚电平的改变不会触发 MODEM 中断。
如果使能自动 RTS,那么仅当 FIFO 中有足够空间接收数据时才使 RTS 引脚输出有效,而在接收
FIFO 满时使 RTS 引脚输出无效。如果接收 FIFO 中的数据被全部取走或清空,那么 RTS 引脚输出有效。
当到达接收 FIFO 的触发点时(接收 FIFO 中已有的字节数不少于 FCR 寄存器的 RECVTG1 和 RECVTG0 设
定的字节数)
,RTS 引脚输出无效,并且允许对方的发送器在 RTS 引脚无效后再发送一个另外的数据。
一旦接收 FIFO 被取空数据,RTS 引脚就会自动重新有效,从而使对方的发送器恢复发送。
如果自动 CTS 和自动 RTS 都被使能(MCR 寄存器的 AFE 和 RTS 都为 1)
,那么当己方的 RTS 引脚连
接对方的 CTS 引脚时,除非己方的接收 FIFO 中有足够的空间,否则对方不会发送数据。因此,通过
CH438 芯片的这种硬件流控制,可以避免串口接收时的 FIFO 溢出和超时错误。
9
CH438 中文手册
7.4. 单片机接口
CH438 芯片在本地端提供了通用的 8 位被动并行接口,支持两种地址输入方式:直接地址和复用
地址。AMOD 引脚为低电平时,选择直接地址方式;AMOD 引脚为高电平时,选择复用地址方式。
并口信号线包括:8 位双向数据总线 D7~D0、读选通输入引脚 RD#、写选通输入引脚 WR#、片选
输入引脚 CS#,以及地址输入引脚 A6~A0 或地址锁存使能引脚 ALE。通过被动并行接口,CH438 芯片
可以很方便地挂接到各种 8 位单片机、DSP、MCU 的系统总线上,并且可以与多个外围器件共存。
CH438 芯片的 CS#引脚由地址译码电路驱动,用于当单片机具有多个外围器件时进行设备选择。
只有一个外围器件时,CS#引脚可以接低电平或者接 GND 保持一直选中。
对于类似 Intel 并口时序的单片机,CH438 芯片的 RD#引脚和 WR#引脚可以分别连接到单片机的
读选通输出引脚和写选通输出引脚。对于类似 Motorola 并口时序的单片机,CH438 芯片的 RD#引脚应
该接低电平,并且 WR#引脚连接到单片机的读写方向输出引脚 R/-W。
在直接地址方式下,当前操作地址是由 A6~A0 引脚在存取操作时直接输入。
在复用地址方式下,当前操作地址是在存取操作之前 ALE 引脚高电平期间从 D6~D0 引脚输入并
锁存。ALE 引脚是 A6 引脚的别名,当 ALE 引脚为高电平时,在 D6~D0 引脚上出现的数据被作为地址
锁存,而在存取操作期间,ALE 引脚应该是低电平,所以之前已经锁存的地址不受影响。
下表为并口 I/O 操作的真值表(表中 X 代表不关心此位,Z 代表 CH438 三态禁止)
。
CS# WR# RD# D7-D0
对 CH438 芯片的实际操作
1
0
0
0
X
1
0
1
X
1
X
0
X/Z
X/Z
输入
输出
未选中 CH438,不进行任何操作
虽然选中但无操作,不进行任何操作
向 CH438 芯片的指定地址写入数据
从 CH438 芯片的指定地址读出数据
7.5. 应用说明
CH438 芯片的输出引脚都是 CMOS 电平,兼容 TTL 电平,输入引脚能够兼容 CMOS 电平和 TTL 电平,
通过外加 RS232 电平转换器,可以进一步转换为 RS232 串口。实际电路中未使用到的 CH438 芯片的任
何引脚都可以悬空不接。
CH438 芯片的串口正常工作时需要外部向 XI 引脚提供时钟信号。一般情况下,时钟信号由 CH438
内置的反相器通过晶体稳频振荡产生。为了减小功耗,如果只使用一个串口,那么可以通过设置其它
串口 IER 寄存器的 LOWPOWER 位为 1 关闭未使用的串口;如果所有串口暂时都不使用,那么可以通过
设置串口 0 的 IER 寄存器的 SLP 位和 LOWPOWER 位都为 1 关闭时钟振荡器,但是在重新开启时钟振荡
器时,必须在串口操作之前等待至少 3 个毫秒的起振和稳定时间。
CH438 芯片的串口引脚包括:数据传输引脚和 MODEM 联络信号引脚。数据传输引脚包括:TXD 引
脚和 RXD 引脚,默认都是高电平。MODEM 联络信号引脚包括:CTS 引脚、DSR 引脚、RI 引脚、DCD 引
脚、DTR 引脚、RTS 引脚,默认都是高电平。所有这些 MODEM 联络信号都可以作为通用 IO 引脚,由单
片机应用程序控制并定义其用途。
CH438 内置了独立的收发缓冲区及 FIFO,支持单工、半双工或者全双工异步串行通讯。串行数据
包括 1 个低电平起始位、8 个数据位、0 个或者 1 个附加校验位或者标志位,1 个或者 2 个高电平停
止位,支持奇校验/偶校验/标志校验/空白校验。CH438 支持常用通讯波特率:1200、2400、4800、
9600、19.2K、38.4K、57.6K、115.2K、230.4K、460.8K、921.6K、1.8432M、2.7648M 等。串口发送
信号的波特率误差小于 0.2%,串口接收信号的允许波特率误差不小于 2%。
CH438 可以用于通过并口为单片机/嵌入式系统扩展额外的高速 RS232 串口、支持自动硬件速率
控制的高波特率串口、RS422 或者 RS485 通讯接口等。现有的基于工业标准 16C550 或者 16C750 芯片
开发的串口程序能够直接应用,通常不需要作任何修改。
8、参数
10
CH438 中文手册
8.1. 绝对最大值(临界或者超过绝对最大值将可能导致芯片工作不正常甚至损坏)
名称
TA
TS
VCC
VIO
参数说明
工作时的环境温度
最小值
-40
-40
-55
-0.5
-0.5
VCC=5V
VCC=3.3V
储存时的环境温度
电源电压(VCC 接电源,GND 接地)
输入或者输出引脚上的电压
最大值
85
65
125
6.0
VCC+0.5
单位
最大值
5.3
40
20
500
0.8
VCC+0.5
0.5
单位
V
mA
mA
uA
V
V
V
V
uA
uA
uA
℃
℃
V
V
8.2. 电气参数(测试条件:TA=25℃,VCC=5V)
(如果电源电压为 3.3V,则表中所有电流参数需要乘以 40%的系数)
名称
VCC
ICC
ICC3
ISLP3
VIL
VIH
VOL
VOH
IIN
IUP1
IDN1
参数说明
电源电压
5V 电源电压工作时的电源电流
3.3V 电源电压工作时的电源电流
3.3V 电源电压低功耗睡眠时的电源电流
低电平输入电压
高电平输入电压
低电平输出电压(4mA 吸入电流)
高电平输出电压(2mA 输出电流)
无上拉的输入端的输入电流
带弱上拉的输入端的输入电流
带弱下拉的输入端的输入电流
最小值
3.3
2
0.5
5
-0.5
2.0
典型值
5
10
5
50
VCC-0.5
2
-20
10
170
80
5
40
8.3. 基本时序(测试条件:TA=25℃,VCC=5V,括号中参数 VCC=3.3V,参考附图)
(RD 是指 RD#信号有效并且 CS#信号有效,WR#=1&RD#=CS#=0 执行读操作)
(WR 是指 WR#信号有效并且 CS#信号有效,WR#=CS#=0 执行写操作)
名称
FXI
TIC
TWW
TRW
参数说明
XI 输入频率、晶体频率
从收到清除中断操作到撤消中断的时间
有效的写选通脉冲 WR 的宽度
有效的读选通脉冲 RD 的宽度
最小值
0.9216
2
60 (120)
50 (100)
典型值
22.1184
20
最大值
32 (24)
100
单位
MHz
nS
nS
nS
CH438 中文手册
TWS
TAS
TAH
TIS
TIH
TIHX
TON
TOF
TLW
TLS
TLH
TLZ
11
读选通或写选通脉冲的间隔宽度
RD 或 WR 前的地址输入建立时间
RD 或 WR 后的地址输入保持时间
写选通 WR 前的数据输入建立时间
写选通 WR 后的数据输入保持时间
写选通 WR 前沿的数据输入保持时间
读选通 RD 有效到数据输出有效
读选通 RD 无效到数据输出无效
有效的地址锁存脉冲 ALE 的宽度
地址锁存 ALE 前的地址输入建立时间
地址锁存 ALE 后的地址输入保持时间
复用地址输出无效到读选通 RD 有效
40 (80)
5 (8)
3
0
10
80
6 (9)
5 (8)
3
0
TWW + TIH
15 (25)
25 (40)
20 (32)
nS
nS
nS
nS
nS
nS
nS
nS
nS
nS
nS
nS
9、应用
9.1. 复用地址方式
CH438 的 AMOD 引脚为高电平,使用复用地址方式。CH438 的 ALE 引脚(A6 引脚)连接到单片机
的 ALE 引脚,用于输入复用地址的锁存使能信号,而 A5~A0 引脚可以悬空不接。
CH438 的 INT 中断输出引脚是开漏输出,需要先外接上拉电阻(建议阻值为 2K 到 10K 之间)
,再
提供给单片机。
CH438 的 RST#复位输入引脚应该有低电平有效的上电复位信号,其内置有相当于 100KΩ的弱下
拉电阻,有两种信号来源可供选择:一是将 RST#引脚对电源连接一个阻值为 1KΩ~10KΩ的电阻,并
对地连接一个容量为 0.1uF~1uF 的电容,实现简单的上电复位;二是由单片机或者其它外围电路向
CH438 的 RST#引脚提供上电复位或者手工复位信号。
CH438 的 XI 引脚的时钟频率可以根据实际需要的最大通讯波特率进行选择,为减小功耗和电磁
辐射,建议为优先选择较低的频率,例如 7.3728MHz。
CH438 的串口和 MODEM 信号是 CMOS/TTL 电平,通过外加 75232/MAX213/ADM213/SP213/MAX3243
等 RS232 电平转换器可以实现八 RS232 串口。
CH438Q 没有 MODEM 信号,可以用于简化的三线制串口。
9.2. 直接地址方式
CH438 的 AMOD 引脚为低电平,使用直接地址方式。CH438 的 A6-A0 引脚连接到单片机的地址总线
用于输入直接地址。
很抱歉,暂时无法提供与“CH438Q”相匹配的价格&库存,您可以联系我们找货
免费人工找货- 国内价格
- 1+28.84680
- 10+25.22880
- 30+23.07960