【STM32】知识补充 深入探讨预分频器

这篇具有很好参考价值的文章主要介绍了【STM32】知识补充 深入探讨预分频器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概述

预分频器 (Prescaler) 是数字系统中用于降低时钟频率的关键组件. 本文小白我将介绍预分频器的工作原理, 应用场景和实现方法, 来帮助大家更好的理解和应用预分频器的技术.

【STM32】知识补充 深入探讨预分频器

分频器是什么

分频器 (Prescaler) 是一种用于将输入时钟信号频率降低的电子设备. 通常, 预分频器可以将输入频率降低为整数倍, 小数倍或任意比例. 预分频器在数字系统中具有广泛应用, 例如微控制器, 通信系统, 计时器等.

工作原理

预分频器的工作原理主要依赖于计数器, 触发器, 模数计数器等电子元件. 通过这些元件, 预分频器可以将输入信号的周期按照特定的规律进行累积和清零, 从而实现频率降低的目的.

计数器预分频器

计数器预分频器是一种基于二进制计数器的预分频技术. 计数器对输入信号的上升沿或下降沿进行计数, 当计数值达到预设值时, 计数器清零并输出一个信号脉冲. 通过调整计数器的预设值, 可以实现不同的预分频比例.

触发器预分频器

触发器预分频器主要利用 D 触发器或 JK 触发器实现. D 触发器在输入信号的上升沿或下降沿时, 将数据输入端的状态传递到输出端. 通过将触发器的输出端与输入端相连, 可以实现 2 分频. JK 触发器的工作原理类似, 可以实现 2 分频和 4 分频等不同的预分频比例.

模数计数器预分频器

模数计数器预分频器是一种基于模数计数器的预分频技术. 模数计数器可以对输入信号进行连续计数, 当计数值达到预设值时, 计数器清零并输出一个信号脉冲. 通过调整计数器的模数值, 可以实现任意整数倍的预分频比例.

上升沿和下降沿

上升沿和下降沿是数字信号处理中常见的概念, 它们分别描述了数字信号从低电平跳变到高电平 (0 到 1) 以及从高电平跳变到低电平 (1 到 0 ) 的瞬间.

  1. 上升沿: 当数字信号从低电平 (0) 变为高电平 (1) 时, 这个转变过程称为上升沿. 在此时此刻, 信号的店铺发生了正向跳变. 上升沿通常用于触发器, 计数器和其他数字电路的时钟输入, 因为它表示一个新的计数周期的开始
  2. 下降沿: 当数字信号从高电平 (1) 变为低电平 (0) 时, 这个转变过程称为下降沿. 此时此刻, 信号的电平发生了负向跳变. 下降沿同样可以用于触发器, 计数器和其他数字电路的时钟输入, 因为它也可以表示一个新的计数周期的开开

在数字电路中, 上升沿和下降沿的概念非常重要, 因为它们通常用于同步和计时操作. 许多数字电路元件, 如触发器, 计数器, 锁存器等, 都依赖于上升沿或下降沿来控制其工作状态. 此外, 上升沿和下降沿的概念也常用与通信系统中的数据传输, 例如用于检测和解码脉冲编码调制 (PCM) 信号.

【STM32】知识补充 深入探讨预分频器

应用场景

微控制器时钟预分频

在微控制器中, 预分频器通常用于生成不同频率的系统时钟. 例如, STM32 微控制器可以通过 PLL (锁相环) 和预分频器生成多种频率的系统时钟, 以适应不同外设的功耗要求.

通信系统中的频率合成

在无线通信系统中, 预分频器常用与频率合成和信号处理. 例如, 无线通信设备需要在不同频率下工作, 可以通过混频器, 锁相环 (PLL) 和预分频器相结合的方式, 实现频率的转换和合成.

计时器与 PWM 波形生成

在计时器和 PWM 波形生成应用中, 预分频器可以用于调整输出信号的频率. 通过改变预分频器的分频比例, 我们可以实现不同频率的计时和 PWM 波形.

数字电路设计中的同步与计时

在数字电路设计中, 预分频器可以用于生成不同频率的时钟信号, 以实现各种功能模块之间的同步和计时. 例如: 在数字信号处理器 (DSP) 或微处理器中, 预分频器可以为数据采集, 运算, 存储等模块提供适当的时钟信号.

【STM32】知识补充 深入探讨预分频器

预分频器实现方法

在实际应用中, 预分频器可以通过硬件和团建两种方式实现.

硬件预分频器

硬件预分频器主要依赖于计数器, 触发器, 模数计数器等电子元件. 这种方式实现的预分频具有较高的精度和稳定性, 适用于对时钟信号要求较高的场合. 常见的硬件预分频器有集成电路 (如 74 系列, CD4040 等) 和可编程逻辑器件 (如 CPLD, FPGA 等).

软件预分频器

软件预分频器是在微控制器内部通过软件编程实现的预分频方法. 这种方式的优点是灵活性高, 成本低, 但精度和稳定性相对较差. 在 STM32 等微控制器中, 可以通过定时器, PWM 等外设实现团建预分频.

案例

在 STM32 中, 预分频器广泛应用于定时器, PWM 波形生成和系统时钟设置等场景. 这里我们以一个使用 STM32 定时器产生不同频率的 PWM 波形为例, 来说明预分频器在 STM32 中的应用.

使用 STM32F103 系列产生一个 1kHz 的 PWM 波形:

#include "stm32f1xx_hal.h"

TIM_HandleTypeDef htim2;

void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_TIM2_Init(void);

int main(void)
{
  HAL_Init();
  SystemClock_Config();

  MX_GPIO_Init();
  MX_TIM2_Init();

  // 开启TIM2 PWM输出
  HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);

  while (1)
  {
  }
}

void SystemClock_Config(void)
{
  RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  {
    Error_Handler();
  }

  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;

  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
  {
    Error_Handler();
  }
}

static void MX_TIM2_Init(void)
{
  TIM_ClockConfigTypeDef sClockSourceConfig = {0};
  TIM_MasterConfigTypeDef sMasterConfig = {0};
  TIM_OC_InitTypeDef sConfigOC = {0};

  htim2.Instance = TIM2;
  htim2.Init.Prescaler = 7199; // 预分频器:7200 - 1
  htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim2.Init.Period = 99; // 自动重装载寄存器:100 - 1
  htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
  {
    Error_Handler();
  }

  sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
  if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK)
  {
    Error_Handler();
  }

  if (HAL_TIM_PWM_Init(&htim2) != HAL_OK)
  {
    Error_Handler();
  }

  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET

总结

预分频在数字系统中起着关键作用, 通过降低时钟频率, 可以实现不同功能模块的同步, 计时以及频率合成等目的. 了解预分频器的工作原理, 应用场景和实现方法, 有助于我们在实际工程中更好的应用预分频技术.文章来源地址https://www.toymoban.com/news/detail-431500.html

到了这里,关于【STM32】知识补充 深入探讨预分频器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA——分频器

    野火学习备忘录——FPAG分频 时钟对于 FPGA 是非常重要的,但板载晶振提供的时钟信号频率是固定的,不一定满 足工程需求,所以分频和倍频还是很有必要的。这里通过计数的方式来实现分频。 1.通过计数器来实现6分频。两种方式。第一种直接通过计数方式直接获取获取。输

    2024年02月10日
    浏览(42)
  • 06 分频器设计

    实现分频一般有两种方法,一种方法是直接使用 PLL 进行分频,比如在 FPGA 或者 ASIC 设计中,都可以直接使用 PLL 进行分频。但是这种分频有时候受限于 PLL 本身的特性,无法得到频率很低的时钟信号,比如输入 100Mhz 时钟,很多PLL 都无法得到 1Mhz 以下的时钟信号。另外一种方

    2024年02月19日
    浏览(52)
  • verilog---分频器设计

    //设计分频器 将50MHZ信号分频产生1HZ的秒脉冲,输出信号占空比为50%。 //设计思路:用计数器设计,N分频:当计数到(N/2)-1个数时,输出时钟翻转一次 //50*10^6次分频:计数到24 999 999(需要25bit)时,输出信号翻转。 //无法用vmf仿真,因为endtime最大为10us,实际最少需要1000000u

    2024年02月04日
    浏览(35)
  • 时钟分频器

    8倍时钟分频器是一种电路或设备,用于将输入时钟信号的频率分成原来的1/8。它可以在数字电子系统中用于将高频时钟信号降低到较低的频率,以满足特定的系统需求。 在这个电路中,CLK是输入的时钟信号,CLK_OUT是输出的时钟信号。通过适当的电路设计,8倍时钟分频器将输

    2024年02月16日
    浏览(42)
  • 数字分频器设计(偶数分频、奇数分频、小数分频、半整数分频、状态机分频|verilog代码|Testbench|仿真结果)

    目录 一、前言 二、偶数分频 2.1 触发器级联法 2.2 计数器法 2.3 verilog代码 2.4 Testbench 2.5 仿真结果 三、奇数分频 3.1 占空比非50%奇数分频 3.2 占空比50%奇数分频 3.3 Verilog代码 3.4 Testbench 3.5 仿真结果 四、小数分频 4.1 双模前置分频法 4.2 Verilog代码 4.3 Testbench 4.4 仿真结果 五、半整

    2024年02月04日
    浏览(48)
  • 数字分频器设计(偶数分频、奇数分频、小数分频、半整数分频、状态机分频|verilog代码|Testbench|仿真结果)

    数字IC经典电路设计 经典电路设计是数字IC设计里基础中的基础,盖大房子的第一部是打造结实可靠的地基,每一篇笔者都会分门别类给出设计原理、设计方法、verilog代码、Testbench、仿真波形。然而实际的数字IC设计过程中考虑的问题远多于此,通过本系列希望大家对数字I

    2024年02月08日
    浏览(45)
  • 偶数分频器电路设计

    目录 偶数分频器电路设计 1、偶数分频器电路简介 2、实验任务 3、程序设计 方法1: 3.1、8分频电路代码如下: 3.2、仿真验证 3.2.1、编写 TB 文件 3.2.2、仿真验证 方法2: 4、计数器进行分频 4.1、仿真测试        分频器在逻辑设计中一直都担任着很重要的角色,分频器一般包

    2024年02月09日
    浏览(45)
  • 任意分频器电路设计

    目录 任意分频器电路设计 1、任意偶数分频器电路设计 1.2、实验任务 1.3、程序设计 1.3.1、代码如下: 1.3.2、编写仿真 TB 文件 2、任意奇数分频器电路设计 2.1、实验任务 2.2、程序设计 2.2.1、奇数分频电路代码 2.2.2、编写仿真 TB 文件 2.2.3、仿真验证        偶数分频实现比较

    2024年02月16日
    浏览(35)
  • FPGA【Verilog分频器】

            在数字系统的设计中经常会碰到需要使用多个时钟的情况。时钟信号的产生通常具有两种方法,一种是使用PLL(Phase Locked Loop,锁相环),可生成倍频、分频信号;另一种则是使用硬件描述语言构建一个分频电路。         分频器的设计通常分为以下三类:奇

    2024年02月20日
    浏览(49)
  • FPGA 多路分频器实验

    1 概述         在 FPGA 中,时钟分频是经常用到的。本节课讲解 2 分频、3 分频、4 分频和 8 分频的 Verilog 实现并且学习 generate 语法功能的应。 2 程序设计思路         1)整数倍分频,为 2、4、8,这种 2^n 次方倍数倍数关系的分频最容易实现,所以我们可以把这 3 种分

    2024年01月19日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包