Embedded

为什么原理图里的stm32f4的VCAP1引脚要接一个4.7微法的电容,再接地呢

2023/12/25 08:23:32

STM32F4芯片的VCAP1引脚是芯片内部电容的引出端,用于连接外部电容以提供给芯片内部振荡电路使用。在使用高速外设时,由于这些外设需要非常稳定的电源供应,因此需要在VCAP1引脚与地之间连接一个电容来提高芯片的稳定性。

具体来说,连接4.7微法的电容可以起到平滑电压、提高电源噪声抑制能力等作用,从而提高芯片的工作稳定性和可靠性。此外,需要注意电容的选型要符合芯片手册的要求,不能超出规定的范围。

2023/12/25 08:26:15
芯片内部还有电容吗

2023/12/25 08:26:20

是的,芯片内部通常会包含一些电容。这些内部电容主要用于稳定芯片的电源供应和进行滤波。它们的作用包括:

txt
电源滤波:在芯片内部集成了一些小型电容器,用于过滤电源中的噪声和干扰,确保芯片正常运行所需的电源干净和稳定。

芯片电源稳定:芯片内部可能还包含一些供电相关的电容,用于提供瞬态响应和电源稳定性,以确保芯片在各种工作条件下都能正常工作。

这些内部电容一般由芯片制造商在设计阶段根据具体需求添加,并在芯片手册或参考设计中进行了详细说明。在使用芯片时,我们不需要特别处理这些内部电容,只需按照芯片手册的要求合理连接外部电容即可。

2023/12/25 08:26:41
那为什么还要连接外部电容

2023/12/25 08:26:48

连接外部电容主要是为了进一步提高芯片的电源稳定性和抑制电磁干扰。虽然芯片内部已经包含了一些电容,但这些电容的容值较小且位置相对固定,可能无法满足某些特殊应用或高要求的电源稳定性。

通过在VCAP1引脚与地之间连接外部电容,可以实现以下效果:

txt
改善电源噪声抑制能力:外部电容可以提供更大的容值,能够更好地滤除电源中的高频噪声和纹波,从而提供更稳定的电源供应。

提供额外的瞬态响应:外部电容能够快速响应芯片工作状态的变化,提供更好的瞬态响应能力,尤其在高速外设工作时,可以提供更稳定的电源给这些外设。

抑制电磁干扰:外部电容能够帮助减少电源线上的电磁辐射和接收到的外界干扰信号,提高系统的抗干扰能力,保证芯片的正常运行。

需要注意的是,具体的外部电容选型和连接方式应根据芯片厂商提供的参考设计或芯片手册的建议进行,以确保电路的稳定性和可靠性。

img

image-20231228133639969

image-20231228133811569配置通道 具有检测正反插…..等

image-20231228134014238

边带使用实现…..

image-20231228134605423

image-20231228134230069

image-20231228134310310

image-20231228142350256

image-20231228142627629

image-20231228142731948OSC32IN引脚,用于连接外部低速晶体振荡器(32.768 kHz)。这种振荡器通常用于实时时钟(RTC)的时基。

OSC_IN引脚,用于连接外部高速晶体振荡器(通常在4 MHz到26 MHz之间)。这种振荡器通常用于系统时钟(SYSCLK)的时基。

VBAT代表电池供电引脚(Voltage Battery)。VBAT引脚用于连接外部备用电池,通常是一个小型电池,以提供芯片的备份电源。

VCAP1是指STM32系列芯片上的一个电容滤波器引脚,用于为芯片内部提供稳定的电源环境
,用于去除芯片电源中的高频噪声和波动。

image-20240102113359669

image-20240102144257554在电路设计中,加入0欧电阻(也称为短接电阻)有以下几个常见的目的:

  1. 电路连接:0欧电阻可以作为电路的连接点,将不同信号线或电源线连接在一起。它可以提供良好的电气连接,并保持信号或电流的连续性。
  2. 信号分配:在复杂的电路板上,使用0欧电阻可以方便地将信号线分配到不同的位置。通过添加或移除0欧电阻,可以改变信号路径,以满足电路的布局要求。
  3. 调试和测试:在调试和测试电路时,加入0欧电阻可以方便地连接测试仪器或测量点。它可以用作测试点或测量点的连接线,以便在需要时轻松接入测试设备。
  4. 阻抗匹配:在高频电路设计中,0欧电阻可以用于阻抗匹配。通过选择适当的阻值,可以使电路中的阻抗更好地匹配,以最大限度地传输信号或功率。

需要注意的是,加入0欧电阻并不会引入电阻本身的阻尼效应。它的主要作用是提供连接和分配功能,而不会对电路的整体电性能产生实质性的影响。

image-20240103170615099

TPS3823-33DBVR的MR引脚是干什么的

1/3/2024, 5:11:40 PM

TPS3823-33DBVR是一款超低功耗、微型化的复位监测器。MR引脚是器件的主复位引脚,用于手动地对器件进行复位操作。

当MR引脚被拉低时,TPS3823-33DBVR会立即进行复位操作,并将RST引脚拉低,使被监测的系统或芯片得到重新启动。此外,当MR引脚保持低电平时,TPS3823-33DBVR将始终保持在复位状态,直到MR引脚上升到高电平。

需要注意的是,MR引脚应该在正常工作时保持高电平,并通过一个合适的电阻接到正电源。当需要手动复位时,可以通过连接一个按钮或开关来将MR引脚拉低,从而触发复位操作。

总之,TPS3823-33DBVR的MR引脚是用于手动复位操作的引脚,当MR引脚被拉低时,TPS3823-33DBVR会进行复位操作,从而实现对被监测系统或芯片的重新启动。

1/3/2024, 5:12:51 PM

TPS3823-33DBVR的WDI引脚是干什么的

1/3/2024, 5:13:13 PM

TPS3823-33DBVR的WDI引脚是用于喂狗定时器(Watchdog Timer)的输入引脚。

喂狗定时器是一种用于监控系统运行状态的计时器。它需要周期性地接收一个喂狗脉冲来防止系统出现故障或死锁。如果在一定的时间内没有接收到喂狗脉冲,喂狗定时器会触发复位操作,使被监控的系统重新启动。

在TPS3823-33DBVR中,WDI引脚用于接收外部喂狗脉冲。当WDI引脚接收到一个高电平脉冲时,喂狗定时器会被重置,系统继续正常运行。如果在一定时间内未接收到喂狗脉冲,喂狗定时器将超时,并触发复位操作。

通过连接一个外部的喂狗脉冲源(例如微处理器的GPIO引脚),可以周期性地向TPS3823-33DBVR的WDI引脚提供喂狗脉冲。这样可以确保系统持续运行,并在出现故障或死锁时进行自动复位,提高系统的可靠性和稳定性。

总之,TPS3823-33DBVR的WDI引脚用于接收外部喂狗脉冲,用于喂狗定时器的重置操作,以确保系统正常运行并防止故障或死锁。

MPU6050
https://blog.csdn.net/qq_52251819/article/details/134957492

image-20240103191542473

AHT21

image-20240103193207567

Vdd_IO和Vdd是两个不同的电源引脚,常见于集成电路或芯片中。

  1. Vdd(也称为Vcc)是供电引脚,用于提供主要的电源电压给芯片或集成电路的内部电路。它通常连接到正电源(例如+3.3V或+5V),以供应芯片内部的数字和模拟电路。
  2. Vdd_IO(也称为Vcc_IO或VddIO)是IO供电引脚,用于提供给输入输出(IO)电路的电源电压。它通常连接到较低的电压(例如+1.8V或+3.3V),用于驱动芯片的输入和输出引脚。

区别:

  • 功能:Vdd提供整个芯片的电源,包括内部逻辑、处理器核心等。Vdd_IO则专门提供给IO电路使用。
  • 电压级别:Vdd通常连接到较高的电压,而Vdd_IO连接到较低的电压。这是为了在现代集成电路中实现低功耗设计和电压兼容性。

在 STM32 HAL 库中,xx_MspInit() 和 xx_Init() 函数是针对特定外设的初始化函数。

  1. xx_MspInit() 函数:该函数是外设的底层初始化函数,用于配置外设的时钟、引脚、中断等底层硬件资源。”xx” 是指特定外设的前缀,例如 GPIO、USART、SPI 等。xx_MspInit() 通常在应用程序初始化之前调用,主要目的是配置外设所需的底层硬件资源。
  2. xx_Init() 函数:该函数是外设的高层初始化函数,用于配置外设的工作模式、时钟频率、中断优先级等高层参数。它会调用底层的 xx_MspInit() 函数来初始化底层硬件资源,并进行一些高层配置。xx_Init() 通常在应用程序初始化阶段调用,用于配置外设的工作模式和参数。

HAL_ADC_ConfigChannel()是ADC常规通道配置,一次配置一个通道

HAL_ADC_PollForConversion()是轮询方式等待ADC常规通道转换完成

HAL_ADC_GetValue()读取常规通道转换结果寄存器的数据

HAL_ADC_Start()以软件方式启动ADC常规转换的通道,然后调用HAL_ADC_PollForConversion()来查询转换是否完成,如果转换完成,使用HAL_ADC_GetValue()读出常规结果寄存器的32位数据

stm32是32位的,所以指针总是32位的

image-20240322130525454

![(../images/image-20240322125751723.png)image-20240322130023148

image-20240322130246888

image-20240322130635769image-20240322195132792

工作模式:

image-20240322195540298

低功耗模式:

image-20240322195836292

image-20240322200333679image-20240323090001811

stm32的SPI的Clock Phase(CPHA)设置为2 Edge是什么意思

2024/3/23 14:29:32

在 STM32 微控制器的 SPI(Serial Peripheral Interface)模块中,Clock Phase(时钟相位,通常用 CPHA 表示)参数用于定义数据采样的时机。当设置为 2 Edge 时,表示数据采样会在时钟的第二个边缘上进行。

在 SPI 通信中,数据传输的时机是由时钟信号决定的。CPHA 参数定义了数据采样的时机相对于时钟信号的边缘。具体来说,CPHA 可以设置为 0 或 1,分别表示:

  • CPHA = 0:数据在时钟信号的第一个边缘上进行采样。也就是说,在时钟信号的上升沿或下降沿(取决于时钟极性)开始时采样数据。
  • CPHA = 1:数据在时钟信号的第二个边缘上进行采样。也就是说,在时钟信号的另一个沿(与上升沿或下降沿相反的沿)上采样数据。

因此,当将 SPI 的 CPHA 参数设置为 2 Edge 时,表示数据采样会在时钟的第二个边缘上进行,这种设置通常用于特定的 SPI 设备或者通信协议要求,确保数据的正确采样和传输。在实际应用中,需要根据外设设备的要求和通信协议的规范来选择合适的 CPHA 设置,以确保 SPI 数据传输的准确性和稳定性。

image-20240324102428755image-20240324102801798

image-20240324103200416image-20240324103611561image-20240324103705403

不使用预装载,设置的新ARR的值立即生效

使用,会在下一个UEV事件生效

PWM波

image-20240324105850607

image-20240324110915173image-20240324115944131

c
HAL_TIM_IC_CaptureCallback(htim);
HAL_TIM_OC_DelayElapsedCallback(htim);
HAL_TIM_PWM_PulseFinishedCallback(htim);
HAL_TIM_PeriodElapsedCallback(htim);
HAL_TIM_TriggerCallback(htim);
HAL_TIMEx_CommutCallback(htim);

image-20240324143451922image-20240324160106485

image-20240328093523112

mpu_prototypes.h

mpu_wrappers.h内存保护单元 ,内存保护单元(memory protection unit),简称:MPU,使用MPU可以设置不同存储区域的存储访问特性(如只支持特权访问或全访问)和存储器属性(如可缓存、可共享),从而提高嵌入式系统的健壮性,使系统更加安全。优先执行mpu_prototypes.h,mpu_wrappers.h里的函数

image-20240410131546745

image-20240410131717234

image-20240410141116783

image-20240410142357998

MPU:内存保护单元

FPU:浮点数单元

钩子函数类似于回调函数

image-20240410171152068

image-20240410171607710

image-20240410171723221

image-20240410172152947

image-20240411090500199

image-20240411090745706

freertos中任何时候都要有一个任务占用CPU,所以就有了空闲任务

systick只有定时中断功能,1ms中断一次

systick定时器不仅可以产生滴答信号,还可以产生任务切换申请

image-20240411092035829

image-20240411092600517

所以:Freertos的任务优先级总是低于系统中断的优先级

image-20240414171100213

image-20240414172301612

xTaskCreate()创建一个任务,以动态方式来分配内存

xTaskCreateStatic()

vTaskDelete()可以删除当前任务或者另一个任务

vTaskSuspend()可以挂起当前任务或者另一个任务

vTaskResume()恢复另一个挂起的任务的运行

调度器管理的函数:
vTaskStartScheduler()开启任务调度器

vTaskSuspendAll()挂起任务调度器,但是不禁用中断,调度器被挂起后,不再进行上下文切换

vTaskResumeAll()恢复调度器的执行,但是不会恢复vTaskSuspend()单独挂起的任务

延时和调度的函数:

中央对齐模式下:

txt
RCR = 0,更新事件没有延迟;
RCR = 1,更新事件延后了半个PWM周期;
RCR = 2, 更新事件延后了一个PWM周期;
RCR = 3,更新事件延后了 3 2 \cfrac{3}{2} 23个PWM周期;