嵌入式系统学习

article/2025/10/23 3:35:43

Lecture11-12

主要学习

➢ 总线基础

➢ UART协议

➢ I2C协议

➢ SPI协议

1.总线的基础 protocol 协议

总线只是一组导线的集合,在嵌入式板上的所有其他主要组件(包括I/O子系统、内存子系统和主处理器)之间传输各种数据信号、地址和控制信号(时钟信号、请求、确认、数据类型等)

有三条与处理器相关的内部总线:数据总线、地址总线和控制总线。这三者共同构成了“系统总线”

并行通信

当使用并行数据传输发送数据时,多个数据位(data bits)同时(at the same time)通过多个信道(channel)传输

串行通信

串行数据传输通过单个通道一个接一个(one after another)(按特定顺序(at special order))发送数据位

simultaneous同时的

二者作比较

哪种通信更适合总线系统  当然是串行通信

因为更少的花费 更少的连接 而且总线数据量不大

而并行通信使用在传输数据量大 对时间要求比较严格(time-sensitive)

比如 视频流

串行通信 两种分类:同步(synchronous)和异步(asynchronous)

同步传输:

▪ 数据位通过主时钟(master clock)在时间上以连续流的形式传输。

▪ 数据发射器(transmitter)和接收器(receiver)都使用同步时(synchronized clock)钟频率工作。

 异步传输:

▪ 数据位可以在任何时间点发送。

▪ 需要停止位和开始位

idle:怠速发动机或其它机械装置的怠速状态

二者比较

USRT协议

Universal Asynchronous Reception and Transmission (UART)

Protocol for Asynchronous communication in BUS system

TX: Transmitter

RX: Receiver

One connection for data transmission

 Frequently used in conjunction(结合) with the RS-232 standard

在没有时钟的情况下,RX如何正确理解数据?

 Start bit — indicates the beginning of the data word ▪

Stop bit(s) — indicates the end of the data word

 Data length — how many bits does TX transmit

 Transmission speed (Baud rate波特率) — the bit rate of the serial port (bits/second)

发送

数据长度:8 bit 开始位(start bit)都是低的 终止位都是高的

传输速度(transmission speed)是保证接受数据正确的基础

否则就会

优势

✓ 操作简单,有很好的文档记录,因为它是一种广泛使用的方法,有很多在线资源

✓ 不需要时钟

✓ 允许错误检查的奇偶校验位

▪ 缺点:

✓ 不能用于多个主系统和从系统

✓ 每个UART的波特率必须在彼此的10%以内,以防止数据丢失。

✓ 低速

2.I2C协议

I2C是什么

内部集成电路(I2C

▪ 总线系统中的同步通信协议

▪ 遵循主/从层次结构

▪ 一主多从

▪ 只有主机可以启动数据传输

▪ 广泛用于需要许多不同部件的项目

(例如传感器、引脚、扩展和驱动器)协同工作

▪ 标准数据传输速率为100kbits/s,而快速模式传输速率为400kbits/s。

Inter-integrated-circuit (I2C)

▪ Protocol for Synchronous communication in BUS system

▪ Follows a master/slave hierarchy

▪ One master, multiple slaves

▪ Only master can initiate a data transmission

▪ Widely used for projects that require many different parts

(e.g. sensors, pin, expansions and drivers) working together

▪ The standard data transfer rate is 100kbits/s while the Fast Mode transfer rate is 400kbits/s.

I2C结构

串行数据线(serial data line)(SDA):传输数据、地址和

控制信号

串行时钟线(serial clock line)(SCL):用于同步

数据长度是8位

启动条件:

✓ 始终发生在传输开始时,并由主设备启动

✓ 唤醒总线上的空闲从属设备

SDA线路从高状态转换为低状态,而SCL为高状态

停止条件与之相反,但同样由主设备发出

地址字节

✓ 从机地址以8位字节格式发送

✓ 上7位构成从机地址

✓ 第8位用作读/写命令位

0:写入从机;1:从从从机读取

Address Byte:

✓ A slave address is sent in 8-bit byte format

✓ the upper 7 bits, constitute the slave address

✓ the 8th bit serves as a READ/WRITE# command bit

✓ 0: write to a slave; 1: read from a slave

确认(acknowledge)和不确认位(Not acknowledge)(ACK/NACK

✓ 在每个字节传输之后,接收设备发送一个ACK或NACK位。

✓ ACK用于表示字节(地址或数据)已成功发送和接收

✓ NACK表示某个地方发生了错误

由接收器产生的ACKSDA低和SCL

数据位

✓ 8位字节格式

✓ 从地址字节开始

✓ 每个字节必须在ACK/NACK之后

✓ SDA线上的数据在高时钟周期内必须保持稳定。

✓ 接收器仅在SCL高时读取数据位

✓ 仅当时钟信号低时,才允许更改数据线。

在时钟信号是高位时 数据信号是稳定的

SPI协议

▪ 串行外围接口(SPI)

▪ 总线系统中的同步通信协议

▪ 遵循主/从层次结构

▪ 一个主设备,一个/多个从设备

▪ 全双工,可同时发送和接收数据

Serial Peripheral Interface (SPI)

▪ Protocol for Synchronous communication in BUS system

▪ Follows a master/slave hierarchy

▪ One master, one/multiple slaves

Full-duplex, where data can be sent and received simultaneously

四种逻辑信号

SCLK: Serial Clock, set by Master 时钟信号

 MOSI: master output, slave input 输入信号

 MISO: master input, slave output 反馈信号

 SS (or CS): slave select or chip

select (slaves are daisy-chained) daisy-chained 菊花链

第一步主机输出时钟信号

第二步主电源将SS/CS引脚切换至低电压状态,从而激活从电源:

第三步:主设备沿MOSI线路一次向从设备发送一位数据。从机在接收位时读取位

第四步如果需要响应,从机将沿MISO线一次向主机返回一位数据。主机在接收位时读取位

SPI中的两个时钟参数

✓ 时钟极性(clock polarity)(CPOL)-设置空闲状态下时钟信号的极性

✓ 时钟相位 (clock phase)(CPHA)-选择时钟相位

四种不同组合

Clock idle state 是0  数据在时钟从低到高转换时采样

Clock idle state是0 数据在时钟从高到低转换时采样

剩下的情况分别是从高到低和从低到高

优势

✓ 无启动和停止位,因此数据可以连续传输而不中断

✓ 没有像I2C这样复杂的从寻址系统

✓ 数据传输速率高于I2C(几乎是I2C的两倍)

✓ 分开的MISO和MOSI线路,因此可以同时发送和接收数据(全双工)

缺点

✓ 使用四根导线(I2C和UART使用两根导线)

✓ 未确认数据已成功接收(I2C有此功能)

✓ 没有像UART中的奇偶校验位那样的错误检查形式

✓ 仅允许单个主控形状


http://chatgpt.dhexx.cn/article/AfbfTN9x.shtml

相关文章

嵌入式要学习哪些内容?

嵌入式要学习哪些内容? 嵌入式概括一下就是写程序,用软件控制硬件。嵌入式的学习应该是自上而下的。 1.语言先行 首先是写代码,写用户的应用程序。每种语言的使用目的是不同的,我们嵌入式选择的语言是C语言。 所以首先要学习C语言…

【嵌入式】超详细的嵌入式路径学习精选合集,建议收藏

超详细的嵌入式路径学习精选合集,纯干货,建议收藏! 本合集归类汇总了嵌入式开发技术相关的学习路径、知识与经验总结,以及一些源码、资料分享等。将其分类列出目录,一来为了避免有些知识长时间不用,会很容…

【毕业季|进击的技术er】作为一名职场人,精心总结的嵌入式学习路线图

活动地址:毕业季进击的技术er 文章目录 0、作者介绍1、前言2、嵌入式基础必备知识2.1、学习内容2.2、学习建议2.3、学习资料 3、嵌入式入门篇——51单片机3.1、学习内容3.2、学习建议3.3、学习资料 4、STM32进阶篇4.1、学习内容4.2、学习建议4.3、学习资料 5、小而美…

【单片机/嵌入式】最完整学习路线

一.什么是单片机?什么是嵌入式?它们之间的区别与联系。 关于这个问题我在网上寻找到了相关文章解释得很详细,不了解的同学可以参考一下这篇文章:到底什么是嵌入式?什么是单片机? - 知乎 二.学习路线 一个人…

STM32理论 —— 看门狗

文章目录 1. 简述2. 独立看门狗 IWDG2.1 IWDG 相关寄存器2.1.1 键值寄存器IWDG_KR2.1.2 预分频寄存器IWDG_PR与重装载寄存器IWDG_RLR 2.2 核心代码 1. 简述 STM32 内部自带了 2 个看门狗:独立看门狗(IWDG)和窗口看门狗(WWDG&#…

STM32看门狗配置说明

系统时钟: The WWDG clock is prescaled from the APB clock and has a configurable time-window that can be programmed to detect abnormally late or early application behavior. /** defgroup WWDG_Prescaler WWDG Prescaler* {*/ #define WWDG_PRESCALER_1…

看门狗要素以及stm32看门狗

阅读看门狗资料,要把握以下部分 原理图复位CPU条件使能以及关闭看门狗喂狗(方式 时间)寄存器Debug模式下是否使能stm32包括2个看门狗,拥有不同的时钟 内置 low-speed clock (LSI 40KHZ) ,用于 Independent watchdog …

STM32 CubeMX 看门狗

文章目录 看门狗STM32的内置看门狗WWDG-窗口看门狗CubeMX操作步骤1)使能 WWDG时钟2)设置窗口值 ,分频数 和计数器初始值3)开启 WWDG4)使能中断通道并配置优先级(如果开启了 WWDG中断)5) 编写中断…

关于我对stm32看门狗的一些理解(基于正点原子)

咕咕咕之后想更会儿stm32哈哈哈,但是其实是之前自己写的笔记,想着以后就写在一起吧,我自己也更好去找到自己写的玩意~毕竟总所周知,博客都是写给自己的。 (虽然好像现在自己都看不懂了我的天哪) 一.什么是…

stm32看门狗的定义与分类

stm32看门狗 一、定义 由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料…

STM32看门狗超时时间计算

独立看门狗 公式 超时时间的公式为 :超时时间 :IWDG_PR寄存器中位2:0的十进制值 :重装载寄存器IWDG_RLR所对应的重装载数值 公式解读 首先,我们要明白: 独立看门狗内部是一个递减计数器。如果寄存器中的装载数值…

5.stm32看门狗

1. STM32-独立看门狗IWDG剖析 2. STM32-独立看门狗实例讲解 3. STM32-窗口看门狗WWDG剖析 4. STM32-窗口看门狗实例讲解 一.基础原理 1. 简单理解: 使用LSI(外部低速时钟),计数,及时喂狗不会复位(看门狗没有减到0喂狗,就认为程序正常工作),不及时喂狗就会导致复位. 2. 看…

STM32——看门狗

一、简介 STM32F10xxx内置两个看门狗,提供了更高的安全性、时间的精确性和使用的灵活性。两个看门狗设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障;当计数器达到给 定的超时值时,触发一个中断(仅适用于窗口型看门狗)或产…

单片机STM32看门狗详解(嵌入式学习)

单片机STM32看门狗 什么是看门狗为什么需要看门狗?STM32CubeMX配置和应用示例独立看门狗(IWDG)窗口看门狗(WWDG) 注意事项 什么是看门狗 单片机STM32的看门狗(Watchdog)是一种硬件定时器&#…

STM32配置看门狗

一、看门狗时间计算公式 时间计算(大概):Tout((4*2^prer)*rlr)/40 (ms). prer:分频数:0~7 rlr:重装载寄存器值 举例(4 * 2^4 * 625) /401000ms1s 二、如何实际使用? 放狗和喂狗总是一起使用的,程序在溢出时间内喂狗才算合理 在…

stm32看门狗定时器记录

文章目录 1、看门狗介绍2、独立看门狗3、窗口看门狗 1、看门狗介绍 STM32 有两个看门狗,一个是独立看门狗另外一个是窗口看门狗。 独立看门狗简单来说就是一个 12 位的递减计数器,当计数器的值从某个值一直减到 0 的时候,系统就会产生一个复位…

STM32看门狗(独立看门狗与窗口看门狗)

简介 STM32 有两个看门狗,一个是独立看门狗(IWDG)另外一个是窗口看门狗(WWDG),独立看门狗号称宠物狗,窗口看门狗号称警犬。 独立看门狗用通俗一点的话来解释就是一个 12 位的递减计数器&#…

STM32看门狗简述

概述 看门狗一般分为硬件看门狗和软件看门狗,主要用来解决程序CPU异常,程序跑飞挂死等问题,提高系统的可靠性。 硬件看门狗是利用一个定时器电路,其定时输出连接到电路的复位端,程序在一定时间范围内对定时器清零(俗…

STM32看门狗作用

STM32F103 独立看门狗 学习笔记 引言 STM32是一系列基于ARM Cortex-M处理器的微控制器。看门狗(Watchdog)是STM32的一个重要功能模块,它能够帮助程序员实现系统的可靠性和稳定性。 看门狗的作用 在嵌入式系统中,软件有时会因为…

STM32看门狗详解

看门狗的作用:防止单片机因未知原因死机或比我们预期的时间过长长时间不能响应,如果出现这种问题,看门狗就会把单片机复位 独立看门狗(IWDG): 时钟来源:内部低速时钟(LSI&#xff0…