N76E003如果串口使用115200波特率需要微调HIRC到16.6MHz,使用默认16MHz波特率会有很大的误差。
共2条
1/1 1 跳转至页
N76E003串口使用115200波特率需要微调HIRC到16.6MHz,使用默认16MHz波特率会有很大的误差是为什么?

2楼
N76E003是一款8位单片机,其内部时钟源分为HIRC(高精度内部振荡器)和LIRC(低精度内部振荡器)两种。默认情况下,N76E003的系统时钟使用的是HIRC,频率为16MHz;而串口通信的波特率需要根据系统时钟进行设定。
串口通信波特率的设定使用定时器进行计数,常见的设定方法是使用波特率发生器,该发生器的输入时钟来自于系统时钟。当系统时钟频率和波特率发生器的分频系数设定不准确时,就会导致实际波特率与设定的波特率存在误差。
在N76E003中,使用115200波特率进行串口通信时,根据公式:
实际波特率 = 时钟频率 / (16 * (256 - 波特率发生器分频系数))
当时钟频率为16MHz时,波特率计算为:
实际波特率 = 16000000 / (16 * (256 - 波特率发生器分频系数))
由于波特率发生器分频系数是整数,只有256种可能的取值,所以实际波特率的可能值有限。而115200波特率在16MHz时钟频率下,无法找到合适的分频系数来得到准确的波特率,因此会导致较大的误差。
为了解决这个问题,可以微调HIRC的频率到16.6MHz,这样就可以在115200波特率下得到更接近准确值的实际波特率。这个微调可以通过调整HIRC的电容值或者使用外部晶振来实现。
需要注意的是,在使用外部晶振时,还需要在代码中将系统时钟源设置为晶振源,并设置晶振的频率。
综上所述,N76E003如果使用115200波特率,需要微调HIRC到16.6MHz,因为使用默认的16MHz时钟频率会导致较大的误差。
共2条
1/1 1 跳转至页
回复
打赏帖 | |
---|---|
C语言函数宏的三种封装方式被打赏50分 | |
【STM32F769】记一次由于开启D-Cache之后DMA数据传输出错的问题查找与解决被打赏35分 | |
嵌入式LinuxC语言程序调试和宏使用技巧被打赏50分 | |
让代码中包含最新的编译时间信息被打赏50分 | |
【分享开发笔记,赚取电动螺丝刀】STM32F769LVGL优化显示被打赏26分 | |
rtthread硬件加密--2crc加密分析被打赏10分 | |
【分享开发笔记,赚取电动螺丝刀】STM32F769驱动ST7789以及显示优化被打赏36分 | |
【分享开发笔记,赚取电动螺丝刀】S32K146 PAL模拟I2C驱动适配被打赏23分 | |
我想要一部加热台+电源硬件设计规范被打赏16分 | |
我想要一部加热台+LED背光驱动芯片RT9293知识被打赏18分 |