完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
单片机的时序问题在整个控制系统中举足轻重,尤其在设及到高速或者要求较高稳定性的通信中,如SPI等总线通信,时序问题便格外重要。受芯片参数的限制,过高的时钟频率可能导致芯片无法响应,过低的时序又常常导致数据传输速率的降低,甚至温度也会影响时序。
1 高温导致时钟紊乱问题引出 用过STM32的都肯定了解过STM32的时钟树,官方推荐的系统时钟的时钟源最好通过外部有源晶振芯片来提供,主要考虑到外部的石英晶体的频率精度高且稳定,能为高速的外接通信芯片提供高精度高稳定性的时钟。单对于集成度高的电路,受限于电路板面积大小,往往要求设计者舍弃一些要求取得折中办法。笔者就曾设计过一款高集成度的加速度温度补偿电路,由于放在管壳中,对电路板的面积和形状有严格的要求,在满足功能兼顾性能的前提下,由于板子过小,笔者不得不放弃外部晶振为stm32提供系统时钟,只能用内部的晶体振荡器时钟为系统提供时钟源,这样不仅满足了要求还节省了石英晶体振荡芯片的成本,本以为皆大欢喜,确遇到了下面的麻烦。 2 时钟紊乱问题 由于温度补偿电路在测试阶段需要在温箱环境下产生-40-105度的温度进行测试数据采集并补偿计算,60度以下时,电路工作正常,按预期进行,65度时,电路输出的数据明显异常,缺乏经验的我费了好长时间才发现问题所在:原来,内部的振荡器产生的时钟不仅精度较低,而且受温度影响大,这导致在高温时,时序严重偏离标称值,所以导致了IIC通信时序紊乱,数据读取和分析出错。关于内部振荡器时钟的温漂,在芯片数据手册里有详细说明,这里留给读者去找出来。 3 总结 实践检验真理,往往实际应用中会遇到意想不到的问题,这时候不仅需要经验更需要沉下心来回归手册,注意细节才能解决这些隐藏的难题 |
|
|
|
只有小组成员才能发言,加入小组>>
3278 浏览 9 评论
2956 浏览 16 评论
3458 浏览 1 评论
9000 浏览 16 评论
4051 浏览 18 评论
1110浏览 3评论
572浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
569浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2302浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1859浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 20:21 , Processed in 0.969674 second(s), Total 50, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号