美文网首页
从波特率不对应引发的时钟问题解决

从波特率不对应引发的时钟问题解决

作者: 飞鹰雪玉 | 来源:发表于2023-07-27 11:11 被阅读0次
问题:

使用GD32F105RBT6芯片。时钟配置使用__SYSTEM_CLOCK_108M_PLL_HXTAL,使用外部晶振作为时钟源,系统时钟使用PLL时钟源,最终的时钟源是CK_PLL,要求是108M。

CK_PLL = (CK_PREDIV0) * 27 = 108 MHz,
CK_PREDIV0 = (CK_HXTAL)/2 *10 /10 = 4 MHz  

这儿的CK_HXTAL是外部晶振的时钟频率。
配置完时钟之后,我们的单片机的时钟频率是108M。

CK_AHB = CK_SYS = 108M
CK_APB2 = CK_AHB = 108M
CK_APB1 = CK_AHB /2 = 54M

串口使用usart0,设置波特率是115200,但是串口调试助手上使用115200波特率读取的数据乱码,改成38400才能读取成功。

解决方案:

更改上述问题中我们配置的CK_HXTAL的值。因为GD系列针对CL系列芯片和MD、HD等类型芯片的外部晶振的值是不一样。内核文件里面默认CL系列需要使用25M的晶振,MD等系列使用8M的晶振。
所以按顺序找到晶振修改值的地方修改头文件宏定义即可。

系统时钟的设置函数是void SystemInit(void)。在system_gd32f10x.c文件中。在void SystemInit(void)system_clock_config()是设置时钟的。

image.png
我们选择的是__SYSTEM_CLOCK_108M_PLL_HXTAL
image.png
这个中的_HXTAL就是我们的外部晶振的值
看对应函数static void system_clock_108m_hxtal(void)中的实现就可明白105和103这些系列的不同。
image.png
原来的计算方法中。想要得到108M。CK_HXTAL就得是25M才行,我们修改过后CK_HXTAL是8M才可计算出108M。

然后看_HXTAL的定义。在当前文件中看宏定义

image.png
然后点击找到HXTAL_VALUE的定义,在gd32f10x.h头文件中
image.png
此时我们发现,原来105是CL系列,默认外部晶振是25M。而实际上我们片子上装了8M的晶振,所以在这儿把晶振的值改成8M即可。
image.png
这样我们的波特率就好了。
总结:

单片机运行时第一要素是时钟,时钟一定要配置好,配置不好时钟所有外设都没法正常工作,而外设一般出问题可以先从系统时钟排查问题。

参考图

MD系列的时钟树和CL系列时钟树的不同
非CL系列(非互联系列)


image.png

CL系列(互联系列)


image.png

相关文章

  • 第十四章 填空题

    串行口工作在方式2时,若时钟频率为12MHZ,SMOD=0,波特率_____,若SMOD=1,波特率为______...

  • 考前必看

    1.波特率是每秒钟传送的数据位数,波特率因子=时钟频率/波特率 8086 6个字节,8088 4字节队列缓冲器 2...

  • USART波特率 vs SPI速率--学习笔记

    本篇文章将与大家探讨USART波特率 vs SPI速率。这里提出一个问题,为什么USART的波特率是内核时钟的1/...

  • 2017年12月13日学习总结

    今天上午学习了spi iic spi :波特率=是SCK时钟速率。 分频器的分频器使用=是从APB总线...

  • 第十四章出题

    若AT89S51单片机的时钟振荡频率为11.0592MHZ,选用T1的方式2定时作为波特率发生器,波特率为4800...

  • proteus 串口通信乱码问题解决

    困扰了我很久,原来是个小问题,记录一下。 首先选定波特率的初值表,找到对应的初值,我们本次设计的波特率是9600,...

  • 命题-第十四章-填空

    在串行通信中,收发双方对波特率的设定应该是( )的; 根据串行数据的时钟控制方式分为( )、( )两种。 【解析】...

  • 命题-第十四章-选择题

    串行工作方式1的波特率是 A.固定的,为时钟频率的十二分之一 B.固定的,为时钟频率的三十二分之一 C.固定的,为...

  • 12.19

    串口程序功能:通信、调试;方式:异步全双工;没有时钟时用波特率实现;(起始:7位、数据:8位、校验:无/奇/偶/零...

  • 树莓派串口设置

    1. 树莓派串口设置 1.1. 将树莓派的硬件串口与mini串口默认映射对换 硬件串口由硬件实现,有单独波特率时钟...

网友评论

      本文标题:从波特率不对应引发的时钟问题解决

      本文链接:https://www.haomeiwen.com/subject/nhplpdtx.html