FEATURED · 精选文章

[其他芯片] 由按键检测和LED驱动异常到对CH452A芯片的复位功能的思考

发布时间 / 2026/8/16 2:57:19
来源 / 创域科博编辑部
栏目 / 资讯中心
[其他芯片] 由按键检测和LED驱动异常到对CH452A芯片的复位功能的思考 最近项目上使用了CH452A芯片板子上用了两颗CH452A一颗用于驱动LED阵列一颗用于检测KEY阵列CPU板上的MCU分别通过4线接口与按键板上的CH452A进行通信另外将CH452A的复位引脚RST1连接到了MCU的GPIO口起初的目的是为了通过MCU对CH452A进行硬件上的手动复位其中芯片的复位引脚RST1即第28pin如下所示605756982a7086f44d.png(148.06 KB, 下载次数: 0)下载附件2026-2-4 09:55 上传硬件上的框图大概如下图所示因为MCU资源有限所以两颗CH452A的复位脚共用MCU的同一个GPIO口进行控制操作。然后我这边自测期间出现过两次程序一直正常运行着但同时出现了按键无法检测和LED无法驱动的异常现象本来说等再复现的时候喊硬件同事来看下情况。然后搭建了一套给应用测试结果很快就出现上面的现象所以开始了排查之路。因为之前看过CH452A的用户手册里面的关于复位操作和设计注意事项什么的也有说明而我们的设计其实就在CH452A和单片机分属两块PCB的情况因此连接线长度已经尽量短目测10多厘米长吧看上去也蛮粗的了。不过目前的硬件RST1引脚和GND直接只是串接了一颗电阻没有接一个对地的滤波电容。然后目前软件上MCU和CH452A的通信速度用逻辑分析仪测试了一下DLCK的波形大概是440KHZ左右应该不算高吧从使用示波器测试出的DCLK波形来看也还可以。硬件同事开始给应用测试使用的连接CPU板和按键板的连接线直接使用了很长的线目的是方便硬件的各种测试。然后硬件开始排查问题一不小心的操作换了实际需要使用的10多厘米长的线然后测试看了一下基本上都正常了。其实我之前就猜测估计是复位引脚信号RST1突然变异常导致的不然的话不可能每次出现两颗CH452A芯片都不行百分之99就是这个复位信号的锅。数据手册上对RST1引脚的描述是这样的也就是给RST1发送高电平信号既可以复位CH452A芯片。因此之前在软件上的初始化芯片的设计也是按下面代码写的复制#define CH452_RESET_SET() gpio_bits_write(KEY_CH452_RST1_GPIO, KEY_CH452_RST1_PIN, TRUE)#define CH452_RESET_CLR() gpio_bits_write(KEY_CH452_RST1_GPIO, KEY_CH452_RST1_PIN, FALSE)//pin resetCH452_RESET_SET();CH452_Delay(CHIP_RESET_DELAY);CH452_RESET_CLR();芯片每次上电都能正常运行说明这种引脚复位芯片的操作是成功的。但是应用测试那边还是同时出现了按键无法检测和LED无法驱动的异常现象我就直接让硬件把复位连接线去掉直接把复位脚短接到按键板上的GND上面反正软件上可以通过复位命令对芯片进行复位操作通过命令复位的代码如下复制void CH452_Delay(uint32_t count){#if 0uint32_t i;for(i 0; i count; i){__asm(nop);}#else__IO uint32_t delay_time count * (system_core_clock / 24000000);do{__NOP();}while(delay_time --);#endif}复制void CH452_Write(uint8_t chip_index, uint16_t cmd){uint8_t i;CH452_LOAD_CLR(chip_index); //命令开始,LOAD0for(i0; i12; i) //送入12位数据低位在前{// 输出位数据if (cmd 1){CH452_DIN_SET(chip_index);}else{CH452_DIN_CLR(chip_index);}CH452_DCLK_CLR(chip_index);CH452_Delay(DLCK_FREQ_DELAY);cmd1;CH452_DCLK_SET(chip_index); //上升沿有效CH452_Delay(DLCK_FREQ_DELAY);}CH452_LOAD_SET(chip_index); //加载数据,LOAD上升沿//命令数据加载周期不小于6US,to testCH452_Delay(CMD_LOAD_DELAY);//ENABLE_KEY_INTERRUPT();}复制//command resetCH452_Write(chip_index, CH452_RESET);CH452_Delay(CHIP_RESET_DELAY);硬件修改了即直接分别把两颗芯片的复位脚短接到按键板上的GND上面然后直接上电测试发现按键检测正常LED驱动也正常奇怪了这样子软件还没有操作对芯片的上电复位操作芯片上电后也可以直接正常工作我用自己的调试环境验证了一下即把上电复位操作的代码全部屏蔽掉再测试确实啊芯片上电后也可以直接正常工作。我又去看了用户手册关于复位的说明关于芯片内部复位有下面的说明难道其意思是不管板子上电的时候有没有通过RST1引脚对芯片进行复位或者有没有通过MCU发送命令对芯片进行复位芯片都可以进入正常的工作状态按目前实测结果来看应该是这样子了。硬件修改以后目前测试倒是还没有出现异常。主要是MCU无法知道按键检测是否正常 LED驱动是否正常不然的话还可以在芯片出现异常的时候MCU通过RST1引脚给芯片复位一下并且重新初始化一下芯片配置。看来使用CH452A芯片做好抗干扰设计太重要了目前的抗干扰稳定性主要就要靠硬件了不知道到时硬件干扰测试和EFT测试会是什么情况能不能一次性成功偷偷捏把汗~~不过这里有一点CH452A芯片还有一个比功能在其他芯片上还真是没见过算我第一次见即可以通过RST引脚或者RST#引脚输出复位信号给MCU让MCU产生复位根据MCU是低电平复位还是高电平复位将RST或者RST#连接到MCU的复位引脚信号就可以了类似手册里面的参考设计图其实就是在CH452A芯片产生复位的时候该芯片会通过RST或者RST#引脚输出电平信号后续如果测试还是出现异常那说不定真要考虑这种设计了再不行就是换方案了。以上便是我由按键检测和LED驱动异常到对CH452A芯片的复位功能的解读和思考~~---------------------作者dffzh链接https://bbs.21ic.com/icview-3505616-1-1.html来源21ic.com此文章已获得原创/原创奖标签著作权归21ic所有任何人未经允许禁止转载。
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻