这几天在使用CW调试KEA的串口波特率,一波三折。
仍然不是很清楚,CW的PE配置之后该怎么调用以确保所需配置是自己要的。是不是都是要在Main函数中再次调用后,然后才生效?暂时先继续下面的串口调试。
最先使用的是内部时钟,通过PLL锁频到40MHz。
开始没有使能slow trim value,后来使能后也没有用——波特率始终不是我通过PE配置的;是否需要在哪里合适调用一直没有看到相关的文档介绍;
然后使用通过PE使能外部时钟(8M),此时内部时钟仍然使用推荐值:32.798KHz——结果无效,甚至无时钟导致芯片无法运行;
然后使用这里推荐的FEI切换到FEE函数,切换有效!但是波特率设置仍然超偏无效;
有意思的是,因为32.798KHz不是40MHz的整数倍,因此,后续的PE配置参数中看到小数点很多。
既然40MHz是PLL的目标值,干脆,就将该值改为31.25KHz,于是大家皆大欢喜——128/1280都不亦乐乎地实现整数倍地处理8MHz,编译后重新下载,19200bps终于实现了!
——因为PE的缘故,看不到内部计算波特率的过程,因此很有可能,在其中的一些环节由于PLL需要锁频到40MHz的缘故,但是推荐值32.798KHz的存在,导致有些数值明显偏出也不做调整,结果导致使用这些数值进行波特率的运算时也超偏了。如果需要验证,可以不使用PLL,而是直接bypass掉,然后使用外部时钟的方式进行波特率设置。
|