MCU外置芯片上电初始化配置的一般处理方法
在日常工作中,我们会经常使用MCU的外置芯片,包括数字芯片和模拟芯片等,并通过总线方式实现MCU和外置芯片的通信。
一般情况下,外置芯片上电时需要进行一些初始化配置操作,包括设置芯片的引脚状态和写寄存器值等,这个时候,我们怎么样才能保证芯片上电初始化能配置成功呢?今天我就根据自己的实际经验,与大家分享一下。
首先,我们要确保MCU已经正常工作,MCU的时钟配置一般都有外设库接口,里面都会加一些类似下面的时钟是否已经稳定正常工作的错误代码处理机制:
以此来确保MCU时钟是否工作正常;另外,可以通过实时仿真或者控制一个GPIO输出脉冲波形或点亮LED灯等比较简单的的方式来确保MCU程序已经正常运行。
接着,我们就是要通过MCU来初始化外置芯片了。
对于模拟芯片,比如ADC芯片或者DAC芯片,一般都是用SPI总线实现通信的,因此在实现SPI数据交互之前,我们要认真的去看芯片的数据手册,特别是引脚功能介绍那一块,因为有些引脚需要配置为固定的高电平或者低电平时,芯片才能正常工作,比如对于DAC芯片AD5755,部分引脚说明如下图所示:
每个引脚的有效电平是高还是低,都是有说明的,比如LDAC引脚和CLEAR引脚都是需要连接到MCU的GPIO口,并需要输出控制的。
因此我们上电初始化AD5755芯片时,就需要先配置这些能保证芯片正常工作的引脚:
然后外置芯片如果需要操作复位,则MCU通过命令发送复位指令给芯片后,一般需要加个阻塞延时等待,以保证芯片能够正常完成复位操作,如下代码所示:
对于阻塞延时等待的时间设置多少比较合适,你可以查阅芯片手册的参数信息,一般都会有说明,如果没有明确指出,可以咨询芯片FAE等。
有些芯片可能还有一些特殊说明,比如AD5755的如下建议:
特别是当你的SPI通信速率比较快的时候,这些细节设置的重要性就能显现出来了。
另外,如果芯片支持寄存器回读readback功能的话,当向芯片寄存器写入数据后,可以回读一下,然后进行读写判断数据是否一致,以此来确定写入操作是否正常完成。
当然,很多芯片除了支持软复位之外,也支持硬复位,即通过给芯片的复位引脚写入高低电平信号来复位芯片,这种功能其实也是非常好的,可以用在下面场景:
当程序正常运行时,如果有机制能够检测到芯片工作异常了,此时MCU就可以通过给芯片的复位引脚发送复位信号来重新初始化芯片。
这种芯片异常后的代码操作,我们一般都是需要加上的,对于有些抗干扰强的工作环境,是相对容易出现芯片工作异常的。
最后,对于数字芯片,比如串转并芯片,并转串芯片,例如IS3980S,U74HC595,SGM42406等,也是类似模拟芯片的操作。
总之一句话,要想保证外置芯片上电初始化能够成功完成,一定要仔细认真的去看芯片数据手册及官方demo驱动程序,有时候你调试芯片驱动,怎么都调不通,其实 往往都遗漏在细节处理上面,一般情况下,大方向的配置应该不会出错。
---------------------
作者:dffzh
链接:https://bbs.21ic.com/icview-3500779-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)