STM32 F401/411外设内部互联矩阵摘要
- 📍参考文档AN4646:
https://www.stmcu.com.cn/Designresource/detail/localization_document/709908
(中译)
-📌 相关工程案例《HAL STM32主从定时器联级使用》、《STM32G4 TIM1触发ADC转换》
📑 STM32F401/411 系列的外设内部互联概述
若干外设可以直接进行互联和配置,用以发送或响应可以被路由到器件上其他外设的事件信号。
- STM32F401/411 系列的自带外设包括:
• 定时器 — 直接在内部互联或连到 DMA 或模拟模块。
• 模拟模块 — 接收来自定时器的事件或向 DMA 发送事件。
• 时钟模块 — 向定时器发送事件。
• 系统模块 — 向模拟模块发送事件。
• 通信接口 — 向定时器或 DMA 发送事件。
📙外设内部互联矩阵
STM32F401/411 的外设通过名为 “ 外设内部互联矩阵 ” 的网络实现互联,该网络可以使某一外设在不唤醒 CPU 的情况下,与另一个外设直接相连。
- 🌿根据不同外设,互联可以工作于运行 (Run)、休眠 (Sleep)和停止 (Stop)模式。
- 🔖响应事件的外设称为用户,发送事件的外设则称为发生器.
📙定时器模块
- 🌿从 TIM 到 TIM
某些定时器从内部连接在一起,以实现定时器同步或链接。当某个定时器 (TIMx) 被配置为主模式时,可对另一个配置为从模式的定时器 (TIMy) 的计数器执行复位、启动、停止操作或为其提供时钟。(可以参考上面的相关案例)
- 主输出为 TIMx_TRGO 信号。该输出通过 TIMx_CR2 寄存器配置为定时器事件,并发送至TIMy_ITR0/ITR1/ITR2/ITR3 输入。
- 🌿TIM 到 ADC
一些定时器可用于产生 ADC 触发事件。
- 定时器输出可以是 TIMx_TRGO 信号或 TIMx_CHx 事件。它输出为 ADC EXTSEL[3:0] 和JEXTSEL [3:0] 信号。
- 🌿从 TIM 到 DMA
📒模拟模块
- 模拟模块包括:
• ADC 模块 (ADC1)
• 温度传感器模块.
从温度传感器到 ADC1
- 在 STM32F401/411 器件上,温度传感器在内部与 ADC1_IN18 输入通道相连。 ADC1_IN18:用于将传感器输出电压或 VBAT 转换为数字值。(温度传感器参考手册章节描述了传感器和 ADC 之间的连接以及读取转换器的程序。)
- 从模拟模块到 DMA.
📘时钟模块
- 时钟模块包括:
• LSE 时钟
• LSI 时钟
• 时钟安全系统 (CSS)
• 实时时钟 (RTC)
- CSS 到 TIM
CSS 可生成系统错误。此时,时钟故障事件发送至 TIM1 刹车输入。
刹车功能的目的是保护由 TIM1 和 TIM8 定时器产生的 PWM 信号所驱动的电源开关。
可能的刹车源列表见使用刹车功能 (TIM1) 参考手册章节。- 从 LSE、 LSI、 RTC 到 TIM
外部时钟 (LSE)、内部时钟 (LSI) 和 RTC 唤醒中断可用作通用定时器 (TIM5 通道 4/TIM11 通道 1) 的输入。(该特性描述见 RM0368 和 RM0383 参考手册的下列章节:)
• 基于 TIM5/TIM11 的内部 / 外部时钟测量
• TIM5 选项寄存器 (TIM5_OR)
• TIM11 选项寄存器 1 (TIM11_OR)
📓系统模块
- 🌿系统模块包括:
• 内部参考电压 (VREFINT)
• VBAT 电源电压
• 外部中断 / 事件控制器 (EXTI)
- 从 VBAT、 VREFINT 到 ADC
VBAT 通道连接到通道 ADC1_IN18。通过 ADC_IN18 通道,它可以转换为注入通道或常规通道。
VREFINT 连接到 ADC_IN17 通道。
参见下列参考手册章节,获得关于 VBAT、 VREFINT 和 ADC 之间互联的详细信息 :
• 通道选择
• 电池充电监视- 从 EXTI 到模拟模块
EXTI 可用于生成 ADC 触发事件或启动 DAC 转换。
📗通信接口
- 🌿从 USB 模块到 TIM
USB OTG_FS SOF 脉冲信号可以触发 TIM2 通用定时器。
- 🌿从通信接口到 DMA
🎉DMA 模块
每个数据流都与一个 DMA 请求相关联,此 DMA 请求可以从 8 个可能的通道请求中选出。
此选择由 DMA_SxCR 寄存器中的 CHSEL[2:0] 位控制。来自外设的 8 个请求 (TIM、
ADC、 SPI、 I2C 等)独立连接到每个通道,具体的连接取决于产品实现情况。
- 该特性描述见 RM0368 和 RM0383 参考手册的下列表格:
• DMA1 请求映射
• DMA2 请求映射
📗测试例程
- 🌿使用了三个定时器:
• TIM1 配置为主定时器:
– PWM 模式使能
– TIM2 更新事件用作触发输出。
• TIM2 和 TIM3 作为 TIM1 的从设备使用
– PWM 模式使能
– ITR0(TIM1) 用作两个从定时器的输入。
- 🔖以STM32F401为例:
- TIM1 计数器时钟频率为 84 MHz。
TIM1 主定时器工作在 TIM1 频率:
• TIM1 频率 = TIM1 计数器时钟 / (TIM1 周期 + 1) = 328.125 KHz
• 占空比等于 TIM2_CCR1/ (TIM2_ARR + 1) = 25%。
TIM2 从定时器工作频率为:
• (TIM1 频率 )/ (TIM2 周期 + 1) = 32.815 KHz
• 占空比等于 TIM2_CCR1/ (TIM2_ARR + 1) = 30%。
TIM3 从定时器工作频率为:
• (TIM1p 频率 )/ (TIM3 周期 + 1) = 65.630 KHz
• 占空比等于 TIM3_CCR1/ (TIM3_ARR + 1) = 60%。
表 3:外设内部互联配置信息给出了配置上述 TIM1、 TIM2 和 TIM3 的代码示例
- 🍁时钟树:
- 🌿主定时器TIM1配置:f=Tck/(psc+1)*(arr+1):
84000000/(7+1)*(31+1)=32.815 KHz
占空比:25%:8/32
- 🌿从定时器TIM2:(TIM1 频率 )/ (TIM2 周期 + 1) = 32.815 KHz
- 🌿TIM3 从定时器工作频率为:(TIM1频率 )/ (TIM3 周期 + 1) = 65.630 KHz
📚测试工程
- 🔖基于stm32f401
链接:https://pan.baidu.com/s/1elIUCWDXzVVXBg_AK4DsnA?pwd=4op7
提取码:4op7