STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)

本次更新内容为STM32CubeMX生成STM32H7 工程项目应用中Pinout&Configuration关于Timer 和Connectivity部分说明,文中Tips是比较易出错的点,多多关注。欢迎关注本公众“硬件开发不完全攻略”,上传可能中可能有些图片可能分辨率有降低,后台回复“STM32”,获取源文档。

配置主界面

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第1张图片

1Pinout&Configuration

1.1System Core

1.2Analog

1.3Timers

1.3.1RTC

1.3.2TIM

1.3.2.1功能要点

1)OVERVIEW

有shadow register

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第2张图片

2)Conter modes

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第3张图片

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第4张图片

3)Capture/compare

此功能可用于硬件测频,可以使程序简化一些,避免GPIO中断中记录TIMER值。应该也可以避免将此中断优先级设置的比较高。

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第5张图片

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第6张图片

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第7张图片

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第8张图片

1.3.2.2各定时器功能特点列表及应用功能分配

以PMC-751X装置应用为例,介绍各个定时器的应用功能分配。PMC-751X一共用了8个定时器(不包括sysTick),其中有AD采样起动定时器、MS/5MS/20MS定时器、捕捉功能定时器(用于硬件测频)、PWM功能定时器(AO功能),比较有代表性。

功能

是否支持触发AD

sysTick

CubeMX默认配置的是1000Hz(1ms/TICK)

High-Resolution Timer

HRTIM

6 * 16

Advanced-control timers

TIM1

16-bit auto-reload

Measuring the pulse lengths of input signals(input copture)

Output waveforms(PWM)

触发AD

亚微秒级定时

以50HZ为例:

64点采样 312.5US

128点采样 156.25US

256点采样 78.125US

所以,此定时器规划为分辨率达到NS级的定时器

TIM8

Input Capture direct

硬件测频

General-purpose timers

TIM2

16-bit/32-bit auto-reload

Measuring the pulse lengths of input signals(input copture)

Output waveforms(PWM)

AO PWM

TIM3

Input Capture direct

硬件测频

TIM4

TIM5

32位定时器自由走时,可用于测频计时,使更准一些。用于PQ时,可以避免AD定时误差带来的其他问题,减少复杂处理

TIMER时钟频率:50M

General-purpose timers

TIM12

16-bit auto-reload

Measuring the pulse lengths of input signals(input copture)

Output waveforms(PWM)

1 ms定时中断

TIM13

5msms定时中断

TIM14

20ms定时中断

General-purpose timers

TIM15

16-bit auto-reload

Measuring the pulse lengths of input signals(input copture)

Output waveforms(PWM)

TIM16

TIM17

Basic timers

TIM6

16-bit auto-reload

Drive the DAC

TIM7

Low-power timer

LPTIM

1.3.2.3普通定时功能配置

普通定时器功能,主要用于定时功能,产生定时中断,或者触发AD采样。需要有动态调整定时器溢出值功能。使用配置比较简单。如果用于触发AD采样,可以直接配置硬件触发,不需要在定时器中断服务程序,写代码起动AD采样。所以,也不需要开启中断。

Tips1:Prescaler分频系数,如果要2分频,则此处应该配置为1;

Tips2:注意需要使能auto-reload preload;

Tips3:Counter Period(AutoReload Register) = 计算值 – 1.例如:分频后定时器实际时钟为50M,需要1MS定时,此值应该设置为:50 000 000 / 1000 – 1 = 49999;

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第9张图片

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第10张图片

 

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第11张图片

1.3.2.4捕捉功能配置

捕捉功能可用于测量一个脉冲的宽度,例如可用于硬件测频,IRIG-B码解析等。时钟频率要根据脉冲的宽度来设置合适的时钟频率,最好能够避免在一个脉冲宽度内,发生RELOAD,这样的话还需要使能TIMER_UPDATE中断,计翻转次数。

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第12张图片

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第13张图片

 

图片

1.3.2.5PWM功能配置

PWM一般用于实现AO功能,通过设置PWM占空比,实现AO输出的电流大小。此定时器的Counter Period(AutoReload Register)要根据硬件电路设计要求的PWM频率来设置(当前常见的设计是100Hz)。

PWM Generation Channel几个主要配置项说明:

Tips1:Mode选择 PWM mode 1(具体各种模式有何差别,查芯片手册);

Tips2:Pulse设置初始化时PWM的占空比,如下图中的配置,占空比为:500/50000 = 1%。具体要设置多少,需要保证此时输出的AO电流值小于4MA;

Tips3:CH Polarity 配置占空比对应的电平:高/低。根据硬件电路设计进行设置,如果硬件电路设计低电平时AO电流输出,此处配置为LOW,反之配置为HIGH;

Tips4:Output compare preload需要使能。

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第14张图片

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第15张图片

1.4Connectivity

1.4.1I2C

1.4.1.1功能要点

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第16张图片

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第17张图片

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第18张图片

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第19张图片

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第20张图片

图片

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第21张图片

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第22张图片

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第23张图片

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第24张图片

图片

1.4.1.2配置

Standard Mode模式下,I2C总线最大频率只能到100K,如果需要大于100K,则需要配置为Fast Mode。Standard Mode模式下,自动配置完成后,I2C总线的SCL时钟信号,高低电平时间比大概是:6:4。

Fast Mode模式下,CUBEMX自动生成的代码,SCL占空比比较悬殊,其应该是完全按照I2C FAST模式要求来配置的,无论是200K还是400K,高电平时间基本都是0.8US。对比RTC8025、FM24也满足他们的要求,但是对于低速情况下,高电平裕度显得不太够。所以,直接手动改一下占空比设置。高低电平时间按4:6来配置。因为低电平期间,从设备需要准备数据,时间相对需要的长一些。

比如:I2C的工作频率为20M的频率,总线200K,TIMEING最后两个字节应该分别是(40 -1)和(60-1),但是设置了数据建立时间和滤波后,会导致总线实际频率会小一些,这个就没太大关系了。

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第25张图片

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第26张图片

Tips1:Fast Mode模式下,注意手动调整一下Timing,使SCL时钟的高低电平百分比更合理一些;

Tips2:Rise Time注意要落实一下满足器件的最小建立时间,但是在SCL时钟高低电平百分比不悬殊的情况下,一般肯定可以满足;

Tips3:注意Address Length selection的选择要与器件一致;

1.4.2SPI

1.4.2.1功能要点

SSI(Synchronous Serial Interface)由TI公司定义的接口协议标准;SPI(Serial Peripheral Interface)是由Motorola公司定义的接口协议标准;两者的用法有类似的地方。SPI串行帧帧同步SSIFss为低电平有效,在整个帧传输期间生效;SSI串行帧同步SSIFss在发送每个帧之前产生宽度为一个时钟周期的高脉冲。SSI模块和片外从设备都在SSICLK的上升沿驱动输入数据,在SSICLK的下降沿锁存另一端的输入数据。

Motorola的叫SPI协议,TI的叫SSP协议。

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第27张图片

1.4.2.2配置

Tips1:CS信号是软件控制还是硬件控制:软件。原因:对于常见的SPI设备:Flash/FRAM,其读写时序一般都是先发命令和地址,直接再发数据,而应用层在操作Flash/FRAM时,地址和数据一般都是分开的。为了避免应用层/驱动层将命令、地址、数据先整合拷贝到一个数组中,驱动中最好能够支持命令、地址、数据的分开单独写入。STM32H7XX的HAL库没有做类似的接口。只有软件控制CS信号,才能方便地通过STM32H7XX的HAL库中已有函数来实现Flash/FRAM的操作;

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第28张图片

Tips2:Frame Format:Motorola,根据器件要求设置SPI的工作模式MODE 0/1/2/3(CPOL、CPHA);

Tips3:Master Keep Io State一定要设置为Enable,否则每次调用STM32H7XX的HAL库提供的SPI的Transmit/Receive/Transmit Receive后,库函数中都会将SPI模块DISABLE,导致SPI的四个信号不再受SPI模块控制,从而导致时序不对(尤其是CS为软件控制时)、信号质量差;

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第29张图片

1.4.3UART

1.4.3.1功能要点

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第30张图片

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第31张图片

图片

1.4.3.2配置

Tips1:如下图1,4,Hardware Flow Control,推荐使用硬件。同时根据硬件电路设计情况(低收高发/高发低收),设置Polarity为对应的High/Low,这个Polarity对应的是发送时DE信号的电平;

Tips2:Word Length,如果是8N1,此处应配置为8。如果是8E1/8O1,此处应配置为9;

Tips3:注意需将FIFO、DMA、中断全部使能,保证其生成对应的基础代码。具体应用时,是否用DMA、FIFO,可根据实际需要调用不同的接口函数;

Tips4:CubeMX中没有RTO的设置,通过HAL中相关的函数来配置RTO参数和使能/禁止。

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第32张图片

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第33张图片

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第34张图片

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第35张图片

图片

1.4.4FDCAN

1.4.5ETH

1.4.5.1功能要点

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第36张图片

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第37张图片

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第38张图片

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第39张图片

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第40张图片

下面这个TCP segmentation offload还没有太理解,它真正的作用,以及可以解决什么问题。

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第41张图片

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第42张图片

1.4.5.2配置

Tips1:MAC的收发BUFFER默认配置在0x30040000这块内存中,Tx/Rx Descriptor Length及Address的配置要注意需要留足够的空间能够满足Descriptor的存储。CubeMX也会对此进行检查,我们也可以根据自动生成的代码中的Descriptor结构体来分析确认;

Tips2:下图中调整了Rx Buffers Length的大小,主要考虑是因为我们目前用的最多的是MODBUS TCP,一般没有那么长的数据报文,这里减小Rx Buffers Length,增大Rx Descriptor Length,可以提高系统缓存报文的能力,总BUFFER大小没有变化;

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第43张图片

STM32CubeMX生成STM32H7工程-Pinout&Configuration-Timer Connectivity(四)_第44张图片

你可能感兴趣的:(嵌入式开发,stm32)