问答

汇集网友智慧,解决技术难题

21ic问答首页 - GD32F101CBT6系统频率设置为48mhz和56mhz时工作异常

单片机 国产芯片 嵌入式

GD32F101CBT6系统频率设置为48mhz和56mhz时工作异常

lzt讴歌in2024-01-30
选用了一块GD32F101CBT6芯片,GD32F101xx系列最大系统时钟为56MHz。1,选用外部8mhz晶振,在配置系统时钟为56mhz和48mhz时(AHB=2分频,APB1=8分频,APB2=8分频);发现串口1(波特率9600,无奇偶校验,1位停止位)和计时器1(3000预分频,计数2000-1次)均不正常。
2,选用外部8mhz晶振,在配置系统时钟为24mhz和36mhz时(AHB=2分频,APB1=8分频,APB2=8分频);串口1和计时器1正常工作。
两种情况只是时钟配置不同,其他文件和代码全部相同;

虽然不影响工程,但非常困惑;请问是配置时有遗漏嘛?是否有没注意到的地方。新手,希望大佬解释一下。
回答 +关注 2
4922人浏览 1人回答问题 分享 举报
1 个回答
  • 在你的情况下,GD32F101CBT6芯片使用外部8MHz晶振,当配置系统时钟为56MHz或48MHz时,串口1和计时器1工作不正常,但在配置为24MHz或36MHz时,这些外设却能正常工作。这可能是由于以下几个原因:

    1. **时钟频率与外设兼容性**:某些外设可能对时钟频率有特定的要求。例如,串口通信通常需要一个稳定的时钟源,如果时钟频率过高,可能会导致波特率计算不准确,从而影响通信。计时器也可能对时钟频率敏感,尤其是在高频率下,计时器的计数可能会受到影响。

    2. **分频器设置**:你提到了AHB、APB1和APB2的分频设置。确保这些分频器的设置与你的系统时钟频率相匹配。例如,如果AHB被设置为2分频,那么在56MHz的系统时钟下,AHB的频率应该是28MHz。如果APB1和APB2被设置为8分频,那么它们的频率应该是7MHz。这些频率需要与外设的工作频率相匹配。

    3. **PLL配置**:在配置PLL(相位锁定环)时,需要确保PLL的配置参数(如倍频因子、预分频器设置等)正确无误。错误的PLL配置可能导致系统时钟不稳定,从而影响外设的正常工作。

    4. **固件库配置**:确保你使用的固件库(如GigaDevice提供的固件库)与你的硬件配置相匹配。固件库中的时钟配置函数(如`SystemInit()`)需要正确设置,以便系统时钟能够正确分配给各个外设。

    5. **调试和测试**:在进行时钟配置时,建议使用调试工具(如JTAG或SWD)来监控系统时钟频率和外设的运行状态。这可以帮助你确定问题是否出在时钟配置上。

    为了解决这个问题,你可以尝试以下步骤:

    - 检查固件库中的时钟配置代码,确保PLL配置正确。
    - 使用调试工具监控系统时钟频率,确保它与你的预期相符。
    - 如果可能,尝试在不同的时钟频率下运行程序,观察外设的行为,以确定是否存在特定的频率问题。
    - 查阅GD32F101CBT6的数据手册和参考设计,了解外设对时钟频率的具体要求。

    如果你在配置时钟时遇到困难,可以参考GD32F101CBT6的数据手册和相关的应用笔记,这些资源通常会提供详细的时钟配置指南和示例代码。此外,你也可以在GD32的官方论坛或技术社区寻求帮助,那里有许多经验丰富的开发者可能会遇到类似的问题。

您需要登录后才可以回复 登录 | 注册