CH423
中文手册
1
两线远程
I/O
扩展芯片
CH423
手册
版本:
2
http://wch.cn
1、概述
CH423
是两线串行接口的通用远程
I/O
扩展芯片。CH423 提供
8
个双向输入输出引脚和
16
个通
用输出引脚,支持输入电平变化中断;CH423 内½电流驱动电路,可以静态驱动
24
只
LED
发光管或
者动态驱动
128
只
LED(相½于 16
只数码管)
;CH423 通过
2
线串行接口与单片机等交换数据。
SCL
单片机
MCU
等
SDA
CH423
芯片
I/O
扩展
(虚线可选)
OC15½OC0
IO7½IO0
8
½输入
或者
8
½输出
16
½输出
可选开漏
16
½
数码管
或
128
个
发光管
INT#
SEG7½SEG0
单片机
MCU
等
SCL
SDA
CH423
芯片
数码管驱动
DIG15½DIG0
2、特点
●
●
●
●
●
●
●
●
●
通过两线串行接口远程扩展出
8
个通用输入输出引脚
GPIO
和
16
个通用输出引脚
GPO。
内½电流驱动级,连续驱动电流不小于
15mA,OC
引脚输出
1/16
脉冲灌电流不小于
120mA。
静态显示驱动方式支持
24
只发光管
LED
或者
3
½共阳数码管。
分时动态扫描显示驱动方式支持
128
只发光管
LED
或者
16
½共阴数码管,支持亮度控制。
双向
I/O
引脚在输入方式下具有输入电平变化时产生中断的功½,中断输出½电平有效。
16
个通用输出引脚可以选择推½输出或者开漏输出。
支持
3V½5V
电源电压,支持½功耗睡眠,可以被输入电平变化唤醒。
2
高速
2
线串行接口,时钟速度从
0
到
1MHz,兼容两线 I C
总线,节约引脚。
提供
SDIP28
和
SOP28
两种无铅封装,兼容
RoHS。
3、封装
CH423
中文手册
封装½式
SOP28
SDIP28
½度
7.62mm
10.16mm
300mil
400mil
2
引脚间距
1.27mm
50mil
1.78mm
70mil
封装说明
标准的
28
脚贴片
窄距
28
脚双列直插
订货型号
CH423S
CH423D
4、引脚
引脚号
引脚名称
类型
引脚说明
25
VCC
电源
正电源,持续电流不小于
150mA
11
GND
电源
公共接地,持续电流不小于
150mA
23,24,26,
双向输入输出,内½弱上拉电阻
IO0½IO7
三态输出及输入
27,28,1,2,3
动态扫描时为共阴数码管的段驱动,高电平有效
4½8、
通用输出,可选开漏输出,½电平有效
OC0½OC15
推½或开漏输出
12½22
动态扫描时为共阴数码管的字驱动,½电平有效
10
SDA
开漏输出及输入
2
线串行接口的数据输入和输出,内½上拉电阻
9
SCL
输入
2
线串行接口的数据时钟
5、功½说明
5.1.
内部电路原理
(用于解释功½,不含动态驱动,仅供参考)
CH423
中文手册
3
5.2.
一般说明
本手册中的数据,以
B
结尾的为二进制数,以
H
结尾的为十六进制数,否则为十进制数,标注
为
x
的½表示该½可以是任意值。
单片机(也可以是
CPU、DSP、微处理器、MCU
等控制器)通过
2
线串行接口控制
CH423
芯片,
CH423
的
2
线串行接口是由硬件实现的,单片机可以频繁地通过串行接口进行高速操½,而绝对不会
降½
CH423
的工½效率。
5.3.
双向输入输出引脚
CH423
的
IO7½IO0
引脚为双向输入输出引脚,默认为输入方向,用于输入外部引脚的½前状态,
½设½为输出方向时,可以输出高½电平以驱动
LED
发光管或者进行
I/O
扩展。
在动态扫描显示驱动方式下,IO7½IO0
引脚可以用于驱动数码管的各个段引脚,由于
CH423
内
部可以对段驱动电流进行限制,所以外部串联的段限流电阻可以省掉。
5.4.
通用输出引脚
CH423
的
OC15½OC0
引脚为推½或者开漏输出引脚,默认为推½输出。
选择开漏输出方式后只有输出½电平和不输出两种状态,无法输出高电平,默认为不输出状态。
在动态扫描显示驱动方式下,OC15½OC0
引脚可以用于驱动共阴数码管的各个公共端,并且½够
以脉冲方式吸收较大的灌电流。
如果只驱动
8
½数码管,那么剩½的
8
个通用输出引脚仍然可以用于
GPO。
5.5.
电平变化中断
如果允许输入电平变化中断,那么
CH423
的
OC15
引脚将½为中断请示输出引脚,½电平有效。
CH423
的
IO7½IO0
引脚用于输入时,可以支持输入电平变化中断,输入电平变化是指检测到从
IO7½IO0
引脚输入的½前状态与事先写入
IO7½IO0
引脚的输出寄存器(图中的
U4)中的数据不同。
如果检测到上述变化(图中的
U2
为比较器)
,那么
CH423
将通过
OC15
引脚输出½电平有效的中断,
直到单片机重新写入
IO7½IO0
引脚的输出寄存器,
并且新值与从
IO7½IO0
引脚输入的½前状态相同
时,CH423
的
OC15
引脚才恢复为高电平或者不输出。
5.6.
上电复½
CH423
内½上电复½电路(图中的
R12
和
C11)
,用于在芯片刚通电时将内部各寄存器恢复为默
认的状态。例如,每次上电后,双向输入输出引脚为输入状态,通用输出引脚为高电平状态。
5.7.
串行接口
CH423
具有硬件实现的
2
线串行接口,包含
2
根信号线:串行数据时钟输入线
SCL、串行数据输
入和输出线
SDA。
SDA
是带上拉电阻的准双向信号线,默认是高电平。SDA 用于串行数据输入和输出,高电平表示
½数据
1,½电平表示½数据 0,串行数据输入的顺序是高½在前,½½在后。
SCL
是输入信号线,默认为高电平。SCL 用于提供串行时钟,CH423
在其上升沿从
SDA
输入数据,
在其下降沿从
SDA
输出数据。
在
SCL
为高电平期间发生的
SDA
下降沿定义为串行接口的启动信号,在
SCL
为高电平期间发生
的
SDA
上升沿定义为串行接口的停止信号。CH423
只在检测到启动信号后才接收并分析½令。所以在
单片机
I/O
引脚资源紧张时,可以在保持
SDA
引脚状态不变的情况下,将
SCL
引脚与其它接口电路共
用;如果½够确保
SDA
引脚的变化仅在
SCL
引脚为½电平期间发生,那么
SCL
引脚和
SDA
引脚½可以
CH423
中文手册
4
与其它接口电路共用。
单片机与
CH423
的通讯过程总是分为
6
个步骤,按单片机的操½方向分成两种类型,一种是写
操½,用于输出数据,一种是读操½,用于输入数据。具½过程可以参考例子程序中的说明。
写操½包括以下
6
个步骤:输出启动信号、输出字节
1、应答 1、输出字节 2、应答 2、输出停
止信号。其中,启动信号和停止信号如上所述,应答
1
和应答
2
总是固定为
1,输出字节 1
和输出字
节
2
各自包含
8
个数据½,即一个字节数据。
读操½包括以下
6
个步骤:输出启动信号、输出字节
1、应答 1、输入字节 2、应答 2、输出停
止信号。其中,启动信号和停止信号如上所述,应答
1
和应答
2
总是固定为
1,输出字节 1
和输入字
节
2
各自包含
8
个数据½,即一个字节数据。
下图是一个写操½的实例,字节
1
为
01001000B,即 48H;字节 2
为
00000001B,即 01H。
5.8.
动态驱动数码管
CH423
可以动态驱动
16
个共阴数码管,
所有数码管的相同段引脚
(段
A½段 G
及小数点)
并联后,
通过串接的
8
只限流电阻
R1½R8
连接
CH423
的段驱动引脚
IO7½IO0,各数码管的公共阴极分别由
CH423
的
OC15½OC0
引脚进行驱动。段引脚串接的电阻
RN8
用于限制和均衡段驱动电流,在
5V
电源
电压下,串接
270Ω电阻通常对应段电流 10mA。CH423
可以连接
8×16
矩阵的发光二级管
LED
阵列或
者
128
个独立发光管,或者通过外接反相驱动器支持共阳数码管,或者外接大功率管支持大尺寸的数
码管,可参考
CH452
数据手册中的方法。
CH423
内部具有
16
个
8
½的数据寄存器(相½于
16
个图中的
U4)
,用于保存
16
个字数据,分
别对应于
CH423
所驱动的
16
个数码管或者
16
组每组
8
个的发光二极管。
数据寄存器中字数据的½
7½
½
0
分别对应
8
个数码管的小数点和段
G½段 A,对于发光二极管阵列,则每个字数据的数据½唯一
地对应一个发光二级管。½数据½为
1
时,对应的数码管的段或发光管就会点亮;½数据½为
0
时,
则对应的数码管的段或发光管就会熄灭。例如,第三个数据寄存器的½
0
为
1,所以对应的第三个数
码管的段
A
点亮。下图是数码管的段名称。
6、操½½令
CH423
的操½½令分为
6
组。各½令的启动信号、停止信号、应答
1
和应答
2
½相同,区别在于
输出字节
1
和字节
2
的数据不同以及字节
2
的传输方向不同。字节
1
用于两线串口控制逻辑,或者用
于产生地址(图中的
AOUT
总线)
,字节
2
用于输入和输出数据(图中的
DIN
和
DOUT
总线)
。
6.1.
设½系统参数½令(图中的
WR-SET
控制线)
该½令的输出字节
1
为
01001000B,即 48H;该½令可以支持 7
个系统参数,输出字节
2
为
[SLEEP][INTENS][OD_EN][X_INT][DEC_H][DEC_L][IO_OE]B。
设½系统参数½令用于设定
CH423
的系统级参数
(写入图中的
U12)
双向输入输出引脚
IO7½IO0
:
的输出½½
IO_OE、输出引脚 OC7½OC0
的动态扫描½½
DEC_L、输出引脚 OC15½OC8
的动态扫描½½
DEC_H、输入电平变化中断½½ X_INT、输出引脚 OC15½OC0
开漏输出½½
OD_EN、动态显示驱动亮度
控制
INTENS、½功耗睡眠控制 SLEEP。上电复½后,上述参数默认½为 0。
IO_OE
用于控制双向输入输出引脚
IO7½IO0
的三态输出,为
0
时禁止输出(用于通过图中的
U3
进行输入)
,为
1
时允许输出(图中的
U5
输出)
。
CH423
中文手册
5
DEC_L
用于控制输出引脚
OC7½OC0
的动态扫描½½,为
0
时
OC7½OC0
用于
I/O
扩展的通用输出
(选择图中的
U6)
,为
1
时
OC7½OC0
由定时扫描计数器译码后控制(选择图中的
U10)
,同一时刻选
择
OC7½OC0
引脚中的某一个引脚输出½电平,其½引脚不输出,用于实现分时显示驱动。
DEC_H
用于控制输出引脚
OC15½OC8
的动态扫描½½,为
0
时
OC15½OC8
用于
I/O
扩展的通用输
出(选择图中的
U9)
,为
1
时
OC15½OC8
由定时扫描计数器译码后控制(选择图中的
U10)
,同一时刻
选择
OC15½OC8
引脚中的某一个引脚输出½电平,其½引脚不输出,用于实现分时显示驱动。
X_INT
用于½½输入电平变化中断
(控制图中的
U14)
为
0
时禁止电平变化中断,
1
并且
DEC_H
,
为
为
0
时允许从
OC15
引脚输出电平变化中断(由图中的
U2
比较产生)
。
OD_EN
用于½½输出引脚
OC15½OC0
的开漏输出,为
0
时
OC15½OC0
是推½输出(可以输出½电
平和高电平)
,为
1
时
OC15½OC0
是开漏输出(只½输出½电平和不输出)
。
INTENS
用于控制动态显示驱动的亮度,包含两½数据,有
4
种组合:数据
00B、01B、10B
分别
设½显示驱动占空比为
4/4、1/4、2/4,并且启用内部的段驱动限流;数据 11B
设½显示驱动占空比
为
4/4,½是禁止内部的段驱动限流,所以外部需要在段引脚串接限流电阻 R1½R8。
SLEEP
用于½
CH423
进入½功耗睡眠状态,从而可以节约电½。处于½功耗睡眠状态中的
CH423
可以被下述两种事件中的任½一种唤醒,第一种事件是输入电平变化,即检测到
IO7½IO0
引脚输入
的½前状态与事先写入
IO7½IO0
引脚的输出寄存器(图中的
U4)中的数据不同;第二种事件是接收
到单片机发出的下一个操½½令。½
CH423
被唤醒后,SLEEP
½会自动清
0。睡眠和唤醒操½本身不
会½响
CH423
的其它工½状态。如果是被前一种事件唤醒,那么唤醒同时将产生电平变化中断。
例如,输出字节
2
为
17H
时,那么
OC15½OC0
以开漏方式动态驱动
16
个数码管;输出字节
2
为
03H
时,仅
OC7½OC0
动态驱动
8
个数码管,剩½的
OC15½OC8
仍然用于通用输出
GPO;输出字节 2
为
05H
时,仅
OC15½OC8
动态驱动
8
个数码管,剩½的
OC7½OC0
仍然用于通用输出
GPO。
该½令不½响各个引脚的输出寄存器和内部数据缓冲区中的数据。
6.2.
设½½
8
½通用输出½令(图中的
WR-OCL
控制线)
该½令的输出字节
1
为
44H,输出字节 2
为[OC_L_DAT]B,即
00H
到
0FFH
之间的
8
½数据,用于
写入输出引脚
OC7½OC0
的输出寄存器(图中的
U6)
,写
0
则½引脚输出½电平,写
1
则输出高电平。
6.3.
设½高
8
½通用输出½令(图中的
WR-OCH
控制线)
该½令的输出字节
1
为
46H,输出字节 2
为[OC_H_DAT]B,即
00H
到
0FFH
之间的
8
½数据,用于
写入输出引脚
OC15½OC8
的输出寄存器(图中的
U9)
,写
0
则½引脚输出½电平,写
1
则输出高电平。
6.4.
设½双向输入输出½令(图中的
WR-IO
控制线)
该½令的输出字节
1
为
60H、62H、64H、66H、68H、6AH、6CH、6EH、70H、72H、74H、76H、78H、
7AH、7CH、7EH,其中½ 4½½ 1
为地址,可以½略;输出字节
2
为[IO_DAT]B,即
00H
到
0FFH
之间
的
8
½数据,用于写入双向输入输出引脚
IO7½IO0
的输出寄存器(图中的
U4)
,如果
IO_OE
为
1
允
许输出,那么写
0
则½引脚输出½电平,写
1
则½引脚输出高电平。
6.5.
加½½字数据½令(用于数码管自动动态显示驱动,½令码与设½双向输入输出½令相同)
该½令的字节
1
为
011[DIG_ADDR]0B,即 60H、62H、64H、66H、68H、6AH、6CH、6EH、70H、72H、
74H、76H、78H、7AH、7CH、7EH;字节 2
为[DIG_DATA]B,即
00H
到
0FFH
之间的值。
加½½字数据½令用于将字数据
DIG_DATA
写入
DIG_ADDR
指定地址的数据寄存器中。DIG_ADDR
通
过
4
½数据指定数据寄存器的地址,数据
0000B½1111B
分别指定地址
0½15,对应于 OC0½OC15
引
脚驱动的
16
个数码管。DIG_DATA 是
8
½的字数据。例如,½令数据
01100000B、01111001B
表示将
字数据
79H
写入第
1
个数据寄存器,½
OC0
引脚驱动的数码管将显示
E。
上电复½后
CH423
内部数据寄存器中的数据是不确定的,所以在开启显示之前,应该先清空数据
寄存器中的数据,或者直接加½½将要显示的数据,复½过程不½响数据寄存器中的数据。
6.6.
读取双向输入输出½令(图中的
RD-IO
控制线)
该½令的输出字节
1
为
01001101B,即 4DH;输入字节 2
为双向输入输出引脚
IO7½IO0
的½前
引脚状态。