南京沁恒微电子的CH45x系列为数码管、按键驱动芯片。

CH42x系列为IO扩展芯片。CH422和CH423除了支持的OC数量有一些区别,在单片机的驱动上,并没有任何区别,驱动CH423的代码是可以套用在CH422上面的。

CH42x IO扩展芯片

1. CH42xIO扩展芯片有一个很重要的特点需要说一下,扩展的OC是上电默认高电平 ,所以如果直接继电器或者连接OC的设备需要默认低电平的,需要加一个反相器。

2. CH42x的接口为两线串口,虽然手册里面写的引脚名称是I2C的SDA和SCL,并且驱动代码也是使用的模拟的I2C,但是CH42x并不是标准的I2C接口,CH42x是没有地址的概念的,所以CH42x系列的芯片是不支持级联的。标准I2C时序的地址,被CH42x改为了一个命令。

3. CH423的8个GPIO,是统一设置输入输出方向的,默认为输入方向。

4. 如果是使用CH42x系列芯片每个IO单独驱动LED灯,电路设计建议为LED接高电平,即LED在CH42x输出低电平时点亮。如果为CH42x为高电平点亮的话,芯片在上下电时,在电压到复位电压时,会把寄存器复位,二寄存器默认时IO输出高电平,这样会出现上下电时所有IO控制的LED被突然点亮一下 的现象。解决方法就是电路改为低电平点亮即可。

CH45x 数码管显示驱动芯片

1. CH45x芯片的接口为两线串口(有部分支持4线的除外),虽然手册里面写的引脚名称是I2C的SDA和SCL,并且驱动代码也是使用的模拟的I2C,但是CH45x并不是标准的I2C接口,CH45x是没有地址的概念的,所以CH45x系列的芯片是不支持级联的。标准I2C时序的地址,被CH45x改为了一个命令。

2. 支持串行4线的(CH451和CH452)通讯就是SPI接口。

3. CH451和CH452支持4线方式多片级联:并行级联,串行级联。

4. CH45x系列的芯片是可以同时支持数码管动态显示和按键扫描的。

5. 如果只是使用CH45x的动态扫描按键,并且对功耗有一定要求的。以下为部分测试的数据。

  (1)CH450在只开了按键扫描的情况下,450在上电后,0.0013A。无显示驱动。MCU设置好后电流大约为0.0009----0.0010A。

  (2)CH455的电流大约为0.0025A。

6. 如果使用CH455芯片带驱动LED或者数码管的时候发现动态显示会出现肉眼可见的闪烁,那么需要去换芯片,芯片是由一定要求的,一定要选择沁恒官方丝印为20941xxxx批次的芯片。只有这个批次或者往后的芯片是支持关闭键盘扫描的。即KOFF位。具体可以看官方数据手册。

这个问题特地加粗一下,因为目前市面上是有20940批次的芯片。

统一问题:

在WCH的官方手册中,CH45x和CH42x的系统设置参数0x48后面字节是这样的:sleep位最高位,IO_OE为最低位,组成的8bit(1Byte)数据。

示例代码

目前官方的EVT包里面,给的是C文件和头文件,并不是一个完整的工程。如果想要参考一个完整MCU驱动工程的,可以去个人Gitee上git clone。是会持续更新的。

链接:个人Gitee

 Final

有关选型,电路设计以及一些常见问题的解决测试方式,可以下载这个,看压缩里面的Word文档,里面写的很详细。

CH45X系列选型、应用、常见问题汇总

http://www.wch.cn/public/uploads/file/20150403/1428051285117476.rar

有关WCH的CH42x以及CH45x选型,常见问题处理方法的更多相关文章

  1. ionic一些常见问题及方法

    1.打包的app无法访问互联网及网络资源(比如网页调试可以请求数据,安装到手机上无法请求数据) 添加白名单插件 ionic plugin add https://github.com/apache/c ...

  2. ionic一些常见问题及方法(网页链接式)

    ionic 进入二级目录以后隐藏底部导航栏(tabs) http://blog.csdn.net/shenshucong520/article/details/48287811ionic三级目录乃至多 ...

  3. C#.NET常见问题(FAQ)-方法参数带ref是什么意思

    写两个相同的方法,但是参数一个带ref,一个不带,从测试结果可以发现,a变量在ModifyValueByref之后发生了改变,而ModifyValueByvalue没效果     更多教学视频和资料下 ...

  4. DB常见问题排查方法

    一般情况下,系统多多少少都会遇到点问题,那么遇到问题之后我们怎么定位原因呢?在这里我只说如何定位DB的问题. 看这篇文章有个前提:监控数据要完整!监控数据要完整!!监控数据要完整!!!比如下面这个乍一 ...

  5. ffmpeg编码常见问题排查方法

    播放问题排查: 一旦我们遇到视频播放不了,第一件事,就是要找几个别的播放器也播放看看,做一下对比测试,或者对码流做一些基础分析,以便更好的定位问题的源头,而各个平台比较常见的播放/分析工具有如下几个: ...

  6. mongodb 常见问题处理方法收集

    问题1:非正常关闭服务或关机后 mongod服务无法正常启动 在使用中发现mongodb 的服务可能因为非正常关闭而启动不了,这时我们通过 删除data目录下的 *.lock文件,再运行下/mongo ...

  7. NodeJs操作MongoDB之分页功能与常见问题

    NodeJs操作MongoDB之分页功能与常见问题 一,方法介绍 1,聚合操作之count count()方法可以查询统计符合条件的集合的总数 db.User.count(<query>) ...

  8. NodeJs操作MongoDB之多表查询($lookup)与常见问题

    NodeJs操作MongoDB之多表查询($lookup)与常见问题 一,方法介绍 aggregate()方法来对数据进行聚合操作.aggregate()方法的语法如下 1 aggregate(ope ...

  9. Swift 可选型

    1.可选型 Swift 语言为我们提供了一种全新的.更加安全的类型 "可选型".可选型是使用范型枚举的形式来组织的,也就是说此特性可以运用于所有的类型.结构体.类或者其他复杂数据类 ...

  10. MES选型很困惑?避开这三个禁忌!

    MES系统的选型除了要充分剖析自己企业,掌握自己企业的需要.信息化的目标.自身的特点外,还要完全了解MES系统供应商,对其实力.软件性能.服务.用户.软件实施速度.价格进行了解与分析,这也是MES系统 ...

随机推荐

  1. P4588 [TJOI2018]数学计算 (线段树)

    用线段树维护操作序列,叶子结点存要乘的数,非叶子结点存区间乘积,每次输出tr[1] 就是答案. 1 #include<bits/stdc++.h> 2 #define ll long lo ...

  2. Docker | Compose创建mysql容器

    本文通过Docker Compose来创建mysql容器 在linux服务器上创建文件,用于管理容器 mkdir docker-mysql cd docker-mysql vim docker-com ...

  3. git(新)

    Git仓库的工作分区 工作区到暂存区的操作 git init :在当前文件夹创建一个文档库,自动产生一个master分支.当当前文件夹已有文档库时,不会再次创建也不会修改,只会将隐藏的.git文件夹显 ...

  4. AT24C02

    AT24C02是一款拥有256bytes(32Page)的EEPROM. 一 :特点(部分) 1:双线接口: 2:双向数据传输协议: 3:400KHz波特率: 4:硬件写保护: 5:最大5ms写入同步 ...

  5. clang在编译时指定目标文件所需的最低macOS版本

    调研这个的原因,是因为有个同事在macOS 12.2上打包好的程序,放在macOS 10.15上运行时报错: Dyld Error Message:  Symbol not found: __ZNKS ...

  6. redis的缓存穿透、击穿、雪崩以及实用解决方案

    今天来聊聊redis的缓存穿透.击穿.雪崩以及解决方案,其中解决方案包括类似于布隆过滤器这种网上一搜一大片但是实际生产部署有一定复杂度的,也有基于spring注解通过一行代码就能解决的,其中各有优劣, ...

  7. java反序列化cc_link_one2

    CC-LINK-one_second 前言 这条链子其实是上一条链子的另一种走法,在调用危险函数哪里是没有什么变化的 整体链子 还是尾部没有变化嘛还是InvokerTransformer的transf ...

  8. vulnhub靶场之VIKINGS: 1

    准备: 攻击机:虚拟机kali.本机win10. 靶机:DRIPPING BLUES: 1,网段地址我这里设置的桥接,所以与本机电脑在同一网段,下载地址:https://download.vulnhu ...

  9. Go语言核心36讲03

    [Go语言代码较多,建议配合文章收听音频.] 你好,我是郝林.从今天开始,我将和你一起梳理Go语言的整个知识体系. 在过去的几年里,我与广大爱好者一起见证了Go语言的崛起. 从Go 1.5版本的自举( ...

  10. kotlin的suspend对比csharp的async&await

    协程的出现大大降低了异步编程的复杂度,可以让我们像写同步代码一样去写异步代码,如果没有它,那么很多异步的代码都是需要靠回调函数来一层层嵌套,这个在我之前的一篇有介绍 rxjava回调地狱-kotlin ...