嵌入式 STM32(四)

更多专栏:

超详细的嵌入式面经专栏(适用于小白学习和大佬复习):https://www.nowcoder.com/creation/manager/columnDetail/mGYoDz

校招公司汇总专栏:https://www.nowcoder.com/creation/manager/columnDetail/0ybKdp

目录:

1.请你说说扇区 块 页 簇的区别?

2.IWDG简介(看门狗)

3.你使用过SPI吗?请你讲讲SPI协议?

4.你使用过I2C吗?请你讲讲I2C协议?

5.UART和USART的区别是什么?

6.对I2C,USART,SPI,USB对比总结

内容

1.请你说说扇区 块 页 簇的区别?

扇区

  • 扇区是磁盘的最小存储单位。传统的硬盘驱动器 (HDD) 通常将一个扇区定义为512字节,现代硬盘可能使用更大的扇区,如4KB。
  • 每个扇区是磁盘中可以单独读写的最小单位。

  • 在文件系统层面,块是文件系统中存储数据的最小单位。文件系统会将磁盘上的扇区组织成块。
  • 一块通常由多个扇区组成(例如4KB块可能包含8个512字节的扇区)。在文件存储中,操作系统会将数据存储为一个或多个块。

  • 页是内存管理中的最小单元。现代操作系统通常将内存划分为多个页,每一页的大小通常为4KB(但也有更大的页,如2MB或1GB,具体取决于体系结构)。
  • 页是虚拟内存和物理内存之间交换的单位,操作系统将虚拟内存中的页映射到物理内存中的实际地址。

  • 簇是文件系统中,尤其是FAT文件系统和NTFS文件系统中的一个单位。簇是文件系统分配磁盘空间的基本单位,每个簇由若干个扇区组成。
  • 例如,如果一个簇包含4个扇区(2KB),即使文件实际大小小于簇的大小,操作系统也会为该文件分配一个完整的簇。簇的大小是文件系统格式化时决定的。

2.IWDG简介(看门狗)

STM32 有两个看门狗,一个是独立看门狗(IWDG)另外一个是窗口看门狗(WWDG)

IWDG特征

  1. 独立看门狗是一个 12 位的递减计数器,当计数器的值从某个值一直减到 0 的时候,系统就会产生一个复位信号如果在计数没减到 0 之前,刷新了计数器的值的话,那么就不会产生复位信号,这个动作就是我们经常说的喂狗。
  2. 时钟信号是有独立RC振荡器产生。
  3. 可以在待机和停止模式下运行。

IWDG功能

独立看门狗时钟

独立看门狗的时钟由独立的 RC振荡器 LSI提供,即使主时钟发生故障它仍然有效,非常独立。LSI的频率一般在 30~60KHZ之间,根据温度和工作场合会有一定的漂移,我们一般取 40KHZ,所以独立看门狗的定时时间并一定非常精确,只适用于对时间精度要求比较低的场合。

计数器时钟

递减计数器的时钟由 LSI经过一个 8位的预分频器得到,我们可以操作预分频器寄存器 IWDG_PR 来设置分频因子,分频因子可以是:[4,8,16,32,64,128,256,256],计数器时钟CK_CNT= 40/ 4*2^Psc,一个计数器时钟计数器就减一。

计数器

独立看门狗的计数器是一个 12 位的递减计数器,最大值为 0XFFF,当计数器减到 0时,会产生一个复位信号:IWDG_RESET,让程序重新启动运行,如果在计数器减到 0 之前刷新了计数器的值的话,就不会产生复位信号,重新刷新计数器值的这个动作我们俗称喂狗。

重装载寄存器

重装载寄存器是一个 12 位的寄存器,里面装着要刷新到计数器的值,这个值的大小决定着独立看门狗的溢出时间。超时时间 Tout = (4*2^Psc) / 40 * RIr (s) ,Psc是预分频器寄存器的值,RIr是重装载寄存器的值。

IWDG溢出时间计算公式

T=(Psc*Rlr)/f(IWDG)

  1. T是看门狗溢出时间
  2. f(IWDG)是看门狗的时钟源频率
  3. Psc是看门狗预分频系数
  4. RIr是看门狗重装载值

3.你使用过SPI吗?请你讲讲SPI协议?

在上一篇提到USART串口通信,由于串口没有时钟线,所以发送和接收到的数据可能会出现问题。所以在串口中加入了起始位和终止位,还要有相同的波特率。由于每个字节发送的时候都需要额外的起始位和停止位以及在发送和接收数据所需的复杂硬件,所以大大增加了很多开销。

什么是SPI

SPI,是一个同步的数据总线,是用单独的数据线和一个单独的时钟信号来保证发送端和接收端的完美同步。并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。

注:

  1. 时钟是一个振荡信号,它告诉接收端在确切的时机对数据线上的信号进行采样。
  2. 产生时钟的一侧称为主机,另一侧称为从机。总是只有一个主机,但是可以有多个从机,所以SPI是一主多从。
  3. SPI是全双工
  4. 通信速度快,通常能达到甚至超过10 Mbps。

信号线

四条信号线通信:SDI(数据输入),SDO(数据输出),SCK(时钟),CS(片选)

  • MISO: 主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数据。
  • MOSI: 主设备输出/从设备输入引脚。该引脚在主模式下发送数据,在从模式下接收数据。
  • SCK:串行时钟信号,由主设备产生。

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

嵌入式/C++八股 文章被收录于专栏

本人双飞本,校招上岸广和通。此专栏覆盖嵌入式常见面试题,有C/C++相关的知识,数据结构和算法也有嵌入式相关的知识,如操作系统、网络协议、硬件知识。本人也是校招过来的,大家底子甚至项目,可能都不错,但是在面试准备中常见八股可能准备不全。此专栏很适合新手学习基础也适合大佬备战复习,比较全面。最终希望各位友友们早日拿到心仪offer。也希望大家点点赞,收藏,送送小花。这是对我的肯定和鼓励。 持续更新

全部评论

相关推荐

1.解释一下栈和队列的概念。2.数组和链表有什么区别?3.请解释一下 static、validate、const 这些关键字的作用。4.如何去除字符串中的空格?5.如何合并两个链表并保持顺序?6.请说明蓝牙芯片在产品中的作用。7.什么是蓝牙软件成品模式?8.请介绍一下蓝牙协议栈的架构和分层。9.比较蓝牙协议栈和网络协议栈的架构。10.蓝牙芯片是否基于 Linux 或其他常用架构?11.描述一下蓝牙软件的软件架构。12.什么是 event-driven 类型的软件架构?13.请解释函数指针和指针函数的区别。14.请用简单的代码示例表示函数指针。15.请用简单的代码示例表示指针函数。16.操作系统任务切换的关键是什么?17.请介绍您的项目,包括难点和解决方法。18.在函数中定义一个大数组,是直接定义还是使用 malloc 分配内存?19.函数中使用 static 定义的变量存在于哪个区域?20.请解释 DMA 是什么?21.SPI 有几种模式?22.请解释进程间通信中锁和同步的概念。23.当一个低优先级进程获取到锁时,高优先级进程会怎样?24.如何解决优先级反转问题?25.在用户态开发中,如何定位程序跑飞或出现段错误?26.程序分成哪几个段?27.堆和栈有什么区别?28.请说明如何使用中断方式代替查询方式。29.请解释 UART 的奇偶校验。30.请介绍队列、栈和二叉树。31.如何确定多个线程的执行顺序?32.请解释 Linux 中线程的调度方式。33.你了解整个 SPI 通信过程吗?上述问题 已经整理到面经中,面经地址在下方!!https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
点赞 评论 收藏
分享
神哥不得了:神哥来答疑啦,Python基本找不到实习的,走Java全栈可能会更好一点,cpp估计很难走,Java做两个高质量项目上去就行,如果走不同还能测开或运维
点赞 评论 收藏
分享
头像
02-08 14:05
已编辑
莆田学院 产品经理
点赞 评论 收藏
分享
评论
7
8
分享

创作者周榜

更多
牛客网
牛客企业服务