网站建设后的心得,装饰工程公司属于什么行业,wordpress上传录音,微信个人商城网站模板免费下载最近有个STM32用户反映#xff0c;他们目前在调试STM32G431CBU6这款芯片。使用ST官方的Cube库进行编程#xff0c;发现时钟没法配置到技术手册上告知的170MHz。当然这个170MHz的频率要经过PLL倍频产生。不管选用内部时钟源还是外部晶振#xff0c;只要配置成170MHz,芯片肯定…最近有个STM32用户反映他们目前在调试STM32G431CBU6这款芯片。使用ST官方的Cube库进行编程发现时钟没法配置到技术手册上告知的170MHz。当然这个170MHz的频率要经过PLL倍频产生。不管选用内部时钟源还是外部晶振只要配置成170MHz,芯片肯定会复位。基于HSI时钟源的相关时钟配置代码大致如下11.jpg (36.51 KB, 下载次数: 6)2020-6-23 18:36 上传他尝试做了各种软硬件调整排查经过反复测试验证发现设置PLL所产生的时钟只有在不高于80MHz时芯片才能正常运行。可STM32芯片手册白纸黑字明明写着主频可以跑到170MHz啊22.jpg (32.16 KB, 下载次数: 9)2020-6-23 18:37 上传由于死活找不出软件或硬件方面的原因几近内心崩溃。甚至不直觉地开始怀疑该芯片是否真的支持170MHz的主频。所以他的问题简单直接STM32G4到底支不支持170MHz的主频关于STM32G4系列的主频参数是最基本而核心的一个参数手册是不可能写错的。何况本人之前也使用STM32G4的开发板做过一些测试都是基于170MHz进行的。鉴于这种情况我们首先可以检查一个参数即CPU通过FLASH控制器取指时的那个延时等待参数它配置得是否合适会影响MCU的正常工作。我们知道CPU的访问速率通常要比FLASH控制器的取指速率快得多这个延时等待参数的配置需要跟CPU的主频匹配。各个STM32系列的参考手册里都有个对照表。下图是STM32G4系列的。33.jpg (44.29 KB, 下载次数: 8)2020-6-23 18:37 上传按照上面表格来看如果内核时钟跑到170MHz,这个Latency参数应该设置为8。经了解他已经注意到这个参数了并将这个参数做了正确配置。看来不是这方面的原因再换个方向看看。主频的提高往往意味着功耗的增大或噪声及干扰方面可能加剧。于是试图从系统供电能力、电源稳定度、时钟稳定性方面查找原因依然没有发现明显问题。建议他对STM32芯片所有电源或电源相关管脚逐个排查连接、焊接情况当然也包括VDDA脚的连接情况。遇到类似这种没法一下子从软硬件上找出与异常症状之间明显的逻辑关系时这样做往往是个简单而且比较有效的排错办法。经针对相关管脚的逐个排查很快发现芯片的VDDA脚虚焊了重新处理后芯片于170MHz运行稳健。44.jpg (58.09 KB, 下载次数: 7)2020-6-23 18:37 上传问题终于得以解决。看到这里相信很多人会认为该问题不复杂、也谈不上深奥可这类问题原因往往容易被我们忽视掉难就难在一会半会想不到可能的原因所在。在我们的实际调试过程中可能很多类似的问题虽谈不上多么复杂或深奥但往往由于我们内心深处从头到尾存在对某些点的忽视或者想当然导致一时半会找不到问题原因而耽误时间。比方一个大小端的选择、一个变量数据宽度的适时调整、一个虚焊的BOOT脚等它们都很可能将我们困住好一阵子。在此分享相关案例 愿各位在MCU嵌入式开发过程中多些经验的积累令开发过程尽量平坦而舒心些。