陈星擦干脸回到教室,不再胡思乱想。
他从纸盒中拿出那本《ST lib开发指南(Beta 1.0)》,唤出AR界面去扫描上头的内容。
AR很快给出了提示:界面中除了少数几个黄色标签以外,大量的都是白色标签。
此前陈星只接触过:红色、黄色、绿色的标签,对于学习完成充分领悟的知识则是没有标签。而眼下却出现了新的标签--白色。
好在AR很快就给出了解释:【白色:工具手册类内容,用到时查阅即可。】
陈星翻到了某一页讲ST的timer(定时器)配置的章节。
timer是单片机上的常用外设,常用于各类要求精确计时的场合。比如小车上的红外测距功能,就需要timer来精确计算红外线从发射到接收的这段时间。
因为红外线本身就是光波,其传输速度就是光速--30万千米每秒。
这么快的传输速度下,利用红外线的反射来测距,就必须精确计时。一个微秒的误差就是300米,考虑到来回折返,除以2就是150米的误差。
这种级别的计时靠一些时钟芯片是根本不可能实现的,只有靠高精度timer,在RTOS的高实时辅助下才能实现。
陈星看着眼前的内容。只有关于timer的阐释部分标注有黄色标签,其余大篇幅的内容都是白色。
他已然明白。在明白原理的情况下,如何配置芯片使用timer,不过就是顺手查资料的事情。那自然也就谈不上理解和死记硬背。
半节自习课下来。timer部分的内容就已经变成了绿色标签,显示着陈星对其有了不俗的理解。
陈星查阅了下资料,张浩东寄过来的这块开发板,其CPU是stm32f103。这款芯片的最高主频达到了72MHz,这和Intel那些动不动上GHz的芯片自然不能比,但在眼下的单片机领域已经很厉害了。
stm32f103的定时器最高主频也是72MHz,那在此基础上的红外测距理论最小误差为:光速除以主频,再除以2。由于红外测距时红外线打到物体表面反弹回来,实际上是跑了個来回,所以需要除以2。
3X10的8次方米/秒除以 72X10的6次方振动/秒,那一次主频振动能测得的距离是。。。
陈星还是打算用计算器算,他可不想找虐。虽然高考不允许用计算器,但是在陈星看来,计算加减乘除除了考验耐心以外,简直是一无是处。有计算器不用,简直傻帽。
可也因为高考不允许使用计算器,因而老师平时也不让大家使用。陈星只好跑去问林悦借文曲星。他记得林悦的那个文曲星功能很强大,甚至还自带科学计算功能。
陈星不是惧怕眼下的这个计算,毕竟这个计算其实就是300除以72。他是因为接下来还有其它运算,他不想每次运算都要手工解决。
林悦自然是乐意借给他的,可不巧,那文曲星坏了,眼下开不了机。
这下陈星无奈,只好拿出纸笔手工运算。
300除以72,约等于4.167米。再考虑到折返除以2,那就是2.083米。
那也就是说,基于stm32f103的红外测距,理论上的最小误差是2米左右。
而这仅仅还是最佳情况下的理论计算。还需要考虑到各种实际情况,比如:红外线的反馈触发要靠中断,中断抢占耗费的时钟周期。还有读取定时器计数的时钟周期。红外反馈中断触发本身需要耗费的时间。
总之,即便在不存在的最理想情况下,这个最小误差都达到了2米,那实际应用中的误差很可能会超过10米。
那这个测距还测什么,10米以内就测不准了,根本就是个摆设。
陈星想起竞赛官方的开发套件,S3C2440的主频最低都有200MHz,官方套件里很可能用的还是高版本的芯片,那主频弄不好还会更高。
假如主频能达到400多MHz,那也就是比眼前这块stm32f103快了6倍左右,那这个误差就能极大缩小。再优化红外反馈的触发速率,多重优化之下,很可能会把实际误差控制在一米以内。那这个在竞赛场上也能展示一把了。
可是自己眼下没有高频S3C2440,且陈星相信AR给的建议。那么就只有一种可能--竞赛官方的整体方案本就存在不合理。在使用了超出实际性能要求的CPU的情况下,就可以仗着主频高性能强,从而实现力大飞砖的效果。
简答来说,陈星此刻感受到了一波“算力压制”。