stm32备份

存储器的分类:
存储器首先根据断电后存储的数据是否会丢失,可以分为易失存储器和非易失存储器,易失存储器主要应用于内存,非易失存储器主要用于外存。
易失存储器以RAM随机存储器为代表,随机的含义是存储器中的数据读取或写入所花费的时间与位置无关。根据存储机制RAM可分为DRAM动态随机存储器和SRAM静态随机存储器,DRAM以电容电荷表示数据,电荷会随着时间发生变化,因此需要定期的刷新操作,DRAM又可以根据通讯时是否需要时钟信号分为同步和异步两种,同步SDRAM使用同步时钟通讯速度更快,所以SDRAM使用更加广泛,之后推出的双数据速率同步动态随机存储器DDR SDRAM更进一步提高了SDRAM的通讯速率,DDRIII SDRAM速度得到了进一步的提升。静态SRAM以锁存器存储数据,不需要刷新充电也能保持状态。DRAM结构更简单,生成成本低,存储速度较慢,一般用于外部拓展内存,SRAM结构复杂生产成本高,存储速度快,一般用于CPU内部的高速缓存。
非易失存储器种类较多,半导体类的有ROM和FLASH,其他有光盘、机械硬盘等。
只读存储器ROM随着技术的发展,也可以写入数据。mask ROM在出厂时使用特殊的工艺固化内部数据,一旦出厂数据就不可修改,主要优势是大批量生产时成本低。OTPROM是一次性可编程存储器,可以使用专用的编程器将自己的资料写入,但只能写入一次,写入后不能修改。EPROM是可重复擦写存储器,可使用专用设备通过紫外线照射芯片内部擦写数据,现已被淘汰、EEPROM是电可擦写存储器,不需要外部设备就能按字节重复擦除和写入数据,EEPROM成为了ROM的主流。EEPROM主要存储一些配置信息,以便重新上电时候加载配置数据。
FLASH称为闪存,容量比EEPROM大得多,多个字节组成一个扇区,最小擦除单位是一个扇区,在写入数据前都需要进行擦除操作,根据电路不同,FLASH可分为NOR FLASH和NAND FLASH,NOR FLASH的地址数据线分开,NOR FLASH可以按照字节读取数据,可以直接存储代码指令,NAND FLASH数据线和地址线共用,只能以扇区为单位读数据,无法之间直线代码指令,需要相机指令从NAND FLASH加载到RAM上,再由CPU执行。NOR FLSAH一般应用于代码存储场合例如嵌入式控制器内部的程序存储空间,NAND FLASH一般应用于大数据量存储场合,例如SD卡U盘固态硬盘等。

I2C

多主机模式?
在这里插入图片描述

I2C是一个支持多设备的总线,支持多个主机和多个从机。主机是拥有总线控制权力的设备,从机是被允许后才能控制总线的设备。I2C一共只能使用两根线,双向串行总线SDA和串行时钟线,两根线通过上拉电阻拉高至高电平,总线上的设备使用开漏输出的模式,设备空闲地时候会输出高阻态,因此总线是高电平,当总线上的一个设备输出低电平的时候会将总线拉低至低电平。这么做的目的是为了避免数据传输过程中两个设备输出没有协调导致的短路问题
在这里插入图片描述

当前地址写

S是由主机产生的开始信号,然后发送一条7位的从机地址和一个读写位,对应地址的从机接收到数据后向主机发生一个应答位,表示收到了数据,当主机向从机写数据时,主机发送一条数据,从机接收的数据后从机发送一个应答,收到应答后主机接着发送下一条数据,表示需要在从机写入的地址,收到应答后主机发送需要写入的数据,结束通讯时由主机发送一条停止位。

当前地址读

当主机向从机读数据时,由主机产生的开始信号,然后发送一条7位的从机地址和一个读写位,对应地址的从机接收到数据后向主机发生一个应答位,表示收到了数据,主机释放SDA控制权开始接受数据,然后从机发送当前地址指针指向的数据,主机接收到之后发送一位应答,从机接收应答信号后发下一条数据,当主机希望停止接收数据时,就向从机发送一个非应答信号,然后发送一个停止位。
每个设备都将寄存器地址映射到一个线性区域中,并由当前地址指针指向当前读取的数据,主机每读取一个寄存器的数据,当前地址指针就递增。

指定地址读

指定地址读可以读取指定设备的指定地址的数据,首先向指定设备的当前指针寄存器写入需要读取的地址,然后再读取指定设备的数据。
首先主机发送起始位,然后发送从机地址和写标志位,接收到应答后发送写入地址,使从机的当前地址指针指向指定的地址,主机接收应答后重新发送一个起始位,然后发送从机地址和读标志位,从机应答后主机放弃SDA控制器读取数据,最后由主机发送非应答,并发送停止信号结束传输。
在这里插入图片描述

时钟线高电平时表示数据线此时的数据有效,不允许数据线在此时发生电平变化,由接收方读取数据,时钟线在低电平的时候,数据线数据无效,允许数据线电平变化,当时钟线是高电平时数据线由高电平转换到低电平的时候,表示起始信号,数据线由低电平转换到高电平的时候,表示停止信号。无论主从机,当接收方接收到数据后,若接收方希望对方继续发送数据,就需要向对方发送一个高电平应答信号,发送方才会发送下一个数据,若接收方希望对方停止发送数据,则需要向对方发生一个低电平非应答信号,发送方接受到该信号后产生一个停止信号,结束信号传输。
每个设备都有自己的地址,其中高四位是由厂商确定的,低三位可由引脚电平进行配置,保证每个地址的唯一性。
可以通过直接控制STM32的GPIO引脚根据I2C协议进行传输数据,这种方式称为软件模拟协议方式。STM32中包含专门复杂I2C通讯的外设,只需要配置好该外设,即可根据协议要求产生通讯信号,完成数据收发
接收时序图?

SPI通讯

SPI是一种全双工的通讯总线,广泛应用于ADC、LCD等通讯速率要求较高的设备。
SPI设备使用三条总线和片选线进行通信,总线分别是SCK、MOSI、MISO。SPI通讯中设备没有地址,而是通过片选线进行寻址,将对应设备的片选线拉低,从而使该设备被选中。SCK时钟线的时钟信号由主机产生,决定了通讯的速率,MOSI主机向从机发送数据,信号由主机产生,MISO由从机向主机发送数据,信号由从机产生。
在这里插入图片描述
起始信号指的是片选线拉低,片选线拉高后表示结束信号。SCK的上升沿允许MOSI和MISO改变数据,SCK下降沿表示MOSI和MISO数据有效,此时数据被采样,
在这里插入图片描述
SPI一共有四种通讯模式,时钟极性CPOL是指SPI通讯设备空闲时SCK的电平信号,CPOL=0时SCK空闲为低电平,CPOL=1时SCK空闲为高电平。CPHA是指数据采样时刻,CPHA=0时SCK奇数边沿采样数据,CPHA=1时SCK偶数边沿采样数据。
在这里插入图片描述
把要发送的数据写入到数据寄存器DR中,由移位寄存器将数据一位一位地发送出去,发送完一帧后数据寄存区DR为空,TXE标志位会被置1,此时可以再向发生缓冲区里写数据,当接收完一帧数据后接收缓冲区满,RXNE标志位被置1,此时可以在接收缓冲区里读数据。如果是能了TXE或RXNE中断,TXE或RXNE置1时会产生SPI中断信号,进入同一个中断函数,可以通过检查寄存器位来判断是哪个事件,再分别进行处理。
在这里插入图片描述
在这里插入图片描述

I2S

声音是一种模拟信号,首先根据编码器将模拟量转换为数字量保存,在需要还原声音的地方将数字量转换成模拟量输出。
在这里插入图片描述
AD的过程可以分为三步,分别是采样、量化和编码,首先使用比声音频率高的采样信号对声音信号进行采样,在每个采样点量化声音信号的大小,最后通过编码的方式将数据保存。采样频率越高,量化位数越高,AD转换的精度就越高。
在这里插入图片描述
数字编译码器WM8978内部集成了DAC和ADC,可实现声音模拟信号和数字量音频数据转换的功能,可以通接收其他设备传输的音频数据,转换为模拟信号再传输至扬声器,也可以接收声音模拟信号,将其转换至数字信号传输至其他设备。数字编译码器是通过I2S与其他设备通信的。
I2S是专门传输音频信号的总线协议,可以实现数据的半双工传输,I2S主要有3个主要信号,分别是SD串行数据线,用于发送或接受两个时分复用的数据通道上的数据,WS字段选择线和CK串行时钟线,表示表示当前传输数据的通道,0代表左通道的数据,1代表右通道的数据,CK为时钟线,每一位脉冲用于对应数字音频信号的一位数据,它的频率等于采样频率X量化位数X通道数,CK下降沿改变SD电平,CK上升沿读取SD电平。
I2S分为左对齐、右对齐和Philips标准。Philips标准中,数据在WS改变电平后的第一个位之后有效,数据之后的位强行清零,左对齐标准中,WS翻转后同时开始传输数据,右对齐同理。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ADC

ADC模拟数字转换器,可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁。有18个输入通道,分为16个外部通道,直接通过GPIO输入模拟电压,还有2个内部通道,输入内部温度传感器和内部参考电压。
在这里插入图片描述
INT0至INT7是输入通道,由通道选择开关选择其中一路,通过设置ADDA、ADDB、ADDC的高低电平确定输入通道号,然后通过ALE时地址锁存译码控制通道选择开关。逐次逼近寄存器SAR通过DAC和比较强与输入模拟电压进行比较,通过二分法逼近输入的模拟电压,从而完成AD转换,将获得的8位数字信号输出至D0值D7引脚,定时和控制获取时钟信号和开始信号,并输出结束信号,VREF+和VREF-输入参考电压。
在这里插入图片描述
ADC有规则组和注入组两种方式,规则组最多可以选择16位通道,但是对应的数据寄存器只有一个,需要配合DMA使用,注入组最多选择4位通道,可以完全存储在AD数据寄存器。模拟看门狗用于检测AD转换的范围,如果超出范围会发生中断信号。
转换模式可以根据是否连续转换和扫描模式分为四种方式。连续转换会同时对多个通道进行转换,开启扫描模式会循环转换指定的通道。
左对齐低位空出的补零,右对齐高位空出的补零

音频

参考文章:
TDM总线协议

DMA

DMA直接存储器存取,无需CPU干预,可完成外设、存储器之间的高速数据传输,
每个通道支持软件触发和特定硬件触发,软件触发多应用于存储器到存储器之间的数据转运,硬件触发多应用于存储器到外设之间的触发方式。
在这里插入图片描述
寄存器是连接软件和硬件的桥梁,寄存器的每一位都连接一根导线,控制相应电路的高低电平、开关通断、选择器选择等,或者可以作为计数器使用。
在这里插入图片描述
把小的数据传输到大的数据,高位补零,把大的数据传输到小的数据,高位就会舍弃。
在这里插入图片描述
在这里插入图片描述
每完成一个通道的AD转换,数据就会保存在ADC_DR中,然后由DMA及时将ADC_DR中的数据转移至相应的存储器

汽车域控制器

ECU负责控制汽车中的各种电子元器件,例如车灯、仪表、中控、发动机等等,随着车辆中的电子器件的增多,ECU的数量也随之增长,导致线束成本增加,系统复杂,为了解决ECU数量增多带来的问题,多个ECU被集成在了一个域控制器中,可以按照功能分为动力域、车身域、底盘域、座舱域、智能驾驶域等等,对于ABS等安全系数要求高的设备来说,处于安全的考虑,目前还是以单ECU控制为主。
为满足安全和性能的双重需求,目前主流的ADAS控制器解决方案大多采用微控制器MCU和异构微处理器SOC组合。

嵌入式设备启动过程

芯片的ROM中保存了最基础的代码,系统上电后,reset引脚接收到电平跳变,对于C51单片机来说,由硬件电路将代码段寄存器CS和指令指针寄存器IP进行复位,组成一个20位的地址,指向ROM中存放第一条代码的位置,对于ARM架构的MCU来说,上电或复位后,PC指针寄存器复位为零地址,然后由中断向量表获取下一步的跳转地址,从而可以执行更复杂的代码,执行硬件自检、基本初始化、输入输出支持等操作,以及将操作系统从外部FLASH转移至内部RAM中。
Boot ROM就是负责系统上电后启动软件的软件,通常是存放在EEPROM或者NOR FLASH中,没有权限修改Boot ROM程序,但是可以通过配置芯片的外部启动引脚配置Boot ROM程序,选择芯片的启动方式,例如通过拨码开关配置启动配置引脚的高低电平,每次复位后BootROM会存储启动配置引脚的电平组合。
BootROM用于启动固定的程序,功能无法定制,因此可以使用BootLoader程序对系统进行二次引导,用于加载OS、程序刷新等功能,例如智驾控制器在启动时需要提供统一诊断服务UDS的CAN诊断和CAN刷新服务,因此需要在BootLoader中完成这些操作。
MCU使用单核或多核重构的处理器,多基于Context-M、Cortex-R、TRICORE。C28内核主频小于1GHZ,没有MMU内存管理单元,最多只能运行实时操作系统,程序运行的介质大多是NOR FLASH,因为NOR FLASH与RAM一样用有分离的地址线和数据线,可以以字节长度精确寻址,所以程序可以直接在NOR FLASH中运行,不需要转移至RAM中运行。
运行Linux操作系统的SOC一般将操作系统、文件系统、应用程序存放在NAND FLASH中,代码在运行前需要将代码从NAND FLASH搬运至SRAM中,所以BootROM的任务就是将代码从NAND FLASH搬运至RAM中,SOC的BootLoader可以分为SPL(secondary Program Loader)和uboot,首先将SPL搬运至内部SRAM,初始化空间更大的外部DRAM,然后将uboot搬运至外部DRAM,uboot根据系统变量将OS内核搬运至外部RAM中,OS内核再完成根文件系统的加载等功能。
芯片启动大致可以分为三个步骤,首先是芯片出厂自带的BootROM,用于硬件的自检和部分初始化,并加载BootLoader,然后是用户写的BootLoader,通过访问外部RAM、NAND FLASH,完成用户自定义的初始化工作,最后就是应用程序,例如Linux操作系统等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/159373.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ARM 10.12

设置按键中断,按键1按下,LED亮,再按一次,灭 按键2按下,蜂鸣器响。再按一次,不响 按键3按下,风扇转,再按一次,风扇停 src/key.c #include"key.h"//按键3的配…

283 移动零

解题思路: \qquad 适用双指针,l:最左边‘0’元素坐标;r:l右边第一个非零元素坐标。 \qquad 最初的思路:将l和r初始化为0,遍历数组nums若任意一个指针到达数组末尾时停止。若当前nums[l] 0则移…

系统文件IO、文件描述符fd、重定向、文件系统、动态库和静态库

目录 C文件接口系统文件I/O系统调用和库函数文件描述符0 & 1 & 2FILE和fd的关系文件描述符的分配规则 重定向重定向的本质输出重定向输入重定向追加重定向 dup2函数 FILE理解文件系统了解磁盘的物理结构逻辑抽象文件系统文件系统的图解和解析通过文件系统来理解ls -al通…

1、验证1101序列(Moore)

题目要求: 用Moore型状态机验证1101序列。 题目描述: 用使用状态机验证1101序列,注意:允许重复子序列。如图 端口描述: module moore_1101(input clk,//时钟信号input clr,//reset复位信号,高电平有效in…

微信小程序备案流程操作详解

1、2023年9月1号小程序开始必须备案了,各位小程序商城只需要按流程自主去微信小程序后台操作即可; 2、对未上架的微信小程序,从2023年9月1号开始需先备案才能上架; 3、对存量已上架的小程序,需在2024年3月31号前完成备案即可。逾期未完成备案,平台将按照备案相关规定于…

hadoop组成

在hadoop1.x时代,Hadoop中的MapReduce同时处理业务逻辑运算和资源调度,耦合性较大; 在hadoop2.x时代,新增了yarn,主要负责资源的调度,MapReduce仅负责运算; 在hadoop3.x时代,在组成上没有变化;

ARM汇编学习录 2 - 编码分析

本文记录笔者学习对应汇编指令相关编码知识 ARM32 首先阅读基础概念&#xff1a; ARM-instruction-set-encoding A32指令全部是32位且是4字节地址对齐. 位域如下 如何理解4字节地址对齐和指令长度&#xff1f; 0000139c <_start_main>:139c: e92d4800 …

【Docker】Harbor私有仓库与管理

搭建本地私有仓库 #首先下载 registry 镜像 docker pull registry#在 daemon.json 文件中添加私有镜像仓库地址 vim /etc/docker/daemon.json {"insecure-registries": ["192.168.220.101:5000"], #添加&#xff0c;注意用逗号结尾"registry-mi…

网络基础2(1)

HTTP 1.应用层协议2.send和recv单独使用不安全3.URL4.urlencode和urldecode5.HTTP协议格式6.HTTP中的常见请求方法POST&&GET7.HTTP的状态码8.HTTP常见Header &#x1f31f;&#x1f31f;hello&#xff0c;各位读者大大们你们好呀&#x1f31f;&#x1f31f; &#x1f6…

Git Commit Message规范

概述 Git commit message规范是一种良好的实践&#xff0c;可以帮助开发团队更好地理解和维护代码库的历史记录。它可以提高代码质量、可读性和可维护性。下面是一种常见的Git commit message规范&#xff0c;通常被称为"Conventional Commits"规范&#xff1a; 一…

Zabbix 使用同一ODBC监控不同版本MySQL

一、ODBC介绍 ODBC是Open Database Connect 即开发数据库互连的简称&#xff0c;它是一个用于访问数据库的统一界面标准。ODBC引入一个公共接口以解决不同数据库潜在的不一致性&#xff0c;从而很好的保证了基于数据库系统的应用程序的相对独立性。ODBC 概念由 Microsoft 开发&…

C++指针解读(3)-- 指针变量作为函数参数

函数执行是通过系统栈来实现的&#xff0c;系统栈分为若干个栈帧。栈帧就是函数运行的环境&#xff0c;每个函数在被调用时都会在系统栈区形成一个叫栈帧的结构。一次函数调用相关的数据保存在栈帧中&#xff0c;比如函数参数、函数的局部变量、函数执行完后的返回地址等数据。…

嵌入式C语言自我修养《GNU C编译器扩展语法》学习笔记

目录 一、C语言标准和编译器 二、指定初始化 三、宏构造“利器”&#xff1a;语句表达式 四、typeof与container_of宏 五、零长度数组 六、属性声明&#xff1a;section 七、属性声明&#xff1a;aligned 一、C语言标准和编译器 C语言标准的发展过程&#xff1a; ●…

机器学习笔记 - 使用3D卷积神经网络进行视频分类

1、导入相应的库 3D CNN 使用三维滤波器来执行卷积。内核能够在三个方向上滑动,而在 2D CNN 中它可以在二维上滑动。 首先安装并导入必要的库,用于处理ZIP文件内容的Remotezip 、用于使用进度条的tqdm 、用于处理视频文件的OpenCV 、用于执行更复杂的张量操作的einop…

flink教程

文章目录 来自于尚硅谷教程1. Flink概述1.1 特点1.2 与SparkStreaming对比 2. Flink部署2.1 集群角色2.2 部署模式2.3 Standalone运行模式2.3.1 本地会话模式部署2.3.2 应用模式 2.4 YARN运行模式2.4.1 会话模式部署2.4.2 应用模式部署 2.5 历史服务 3. 系统架构3.1 并行度3.2 …

Android 内存治理之线程

1、 前言 当我们在应用程序中启动一个线程的时候&#xff0c;也是有可能发生OOM错误的。当我们看到以下log的时候&#xff0c;就说明系统分配线程栈失败了。 java.lang.OutOfMemoryError: pthread_create (1040KB stack) failed: Out of memory这种情况可能是两种原因导致的。…

springcloud笔记(7)-限流降级Sentinel

官方文档&#xff1a;概述 | Spring Cloud Alibaba basic-api-resource-rule | Sentinel (sentinelguard.io) Sentinel是SpringCloudAlibaba的组件。 sentinel的功能 introduction | Sentinel 流量控制 熔断降级&#xff1a;降低调用链路中的不稳定资源 系统负载保护&am…

Stirling-PDF:一款优秀的开源PDF处理工具

最近我的朋友大雄需要将一个PDF转换为Word文档。于是他在网上尝试了多个PDF转换的在线工具&#xff0c;但要么需要会员&#xff0c;要么需要登录等繁琐操作&#xff0c;而且我们的文件也存在泄漏等安全隐患。因此&#xff0c;他向我咨询是否有可私有化部署且易于使用的PDF在线工…

orgChart.js组织架构图

OrgChart.js是什么&#xff1f; 基于ES6的组织结构图插件。 特征 支持本地数据和远程数据&#xff08;JSON&#xff09;。 基于CSS3过渡的平滑扩展/折叠效果。 将图表对齐为4个方向。 允许用户通过拖放节点更改组织结构。 允许用户动态编辑组织图并将最终层次结构保存为…

C# OpenVINO 人脸识别

效果 耗时 Preprocess: 1.41ms Infer: 4.38ms Postprocess: 0.03ms Total: 5.82ms 项目 代码 using OpenCvSharp; using Sdcb.OpenVINO; using System; using System.Collections.Generic; using System.Diagnostics; using System.Drawing; using System.Text; using Syste…