ARM异步串口波特率设置:实际案例与深度分析

需积分: 45 3 下载量 129 浏览量 更新于2024-09-05 收藏 279KB PDF 举报
本文主要探讨了在使用MDK工具进行ARM目标板开发时,针对异步串口通信波特率设置的深入分析。默认情况下,工程模板的启动代码startup.s中的主器件PLL配置通常是固定的,但这可能并不适用于所有特殊应用场景。作者以一个实际项目为例,遇到了在11MHz Fosc(系统时钟)下,当波特率设置为115200bps时出现数据乱码的问题。 首先,异步串口通信波特率(BPS,Bits Per Second)是由系统时钟频率(Fosc)与分频系数决定的。在这个案例中,Fosc为11.0592MHz。波特率计算公式为:BPS = Fosc / (分频系数 * 波特率),例如,若波特率为115200bps,那么理论上分频系数应为11.0592MHz / 115200bps ≈ 96。 然而,当作者尝试将波特率设置为115200bps时,实际的分频系数计算结果却不是整数,这可能导致数据传输错误,如数据乱码。文章指出,MDK的默认设置中,可能并未启用锁相环来精确调节分频,而是使用了系统默认的配置,导致与预期不符。 为了解决这个问题,作者对分频电路进行了深入的分析和计算,发现分频系数应该是一个整数,但在实际操作中,可能是由于分频系数设置为非整数值,或者PLL未被正确配置,从而引发了数据通信的不稳定。作者还提到了一个尴尬的情况,即在某些特定的波特率设置(如1,843,200bps)下,系统默认的分频系数产生了尴尬的数值。 为了确保通信的稳定性和准确性,作者建议开发者根据具体应用需求手动调整分频系数,或者启用锁相环来精确控制波特率。此外,作者强调,对于初学者或非专业人员来说,理解这些内部机制可能会有些困难,因此提供了一份详细的推算过程和设置步骤,帮助读者更好地理解和配置自己的项目。 本文是一篇关于在ARM开发中如何通过精细设置分频系数和波特率来优化异步串口通信的文章,旨在解决实际项目中可能遇到的通信问题,并提供了一种方法论以供其他开发者参考。