单片机第二次答辩

IIC总线协议

一、定义

半双方、同步、串行传输

通过电平触发(写)采样(读)

主从架构

主设备 (Master) : 控制通信过程,生成时钟信号

SCL(时钟线)在整个通信过程中始终由主机控制输出

从设备 (Slave) : 被动响应主设备的命令

支持多主多从

同一总线上可以连接多个主设备和从设备(同一时刻只能有一个主机和从机进行通信), 但需要进行冲突检测和仲裁

从机地址唯一性

每个从设备都有唯一的 7 位或 1 0 位从机地址 , 主设备通过从机地址指定要通信的从设备

时钟来源于APB1

二、引脚内部结构

2.1 上拉电阻

I 2C 芯片的 SCL 和 SDA 引脚是开漏输出 的所以需要接一个上拉电阻来输出高电平

由于输出的时候总是电平相反的,所以需要输出控制,输出相反的电平;这负负得正

2.2 开漏输出

为了实现可以支持多主多从, 以及多主仲裁

只有 主机让MOS管截至的时候上拉电阻才能拉成高电平 ;不然3.3V的上拉电阻还不够把地拉成高电平

实现线与

所有从机的接收的时候的都是MOS导通输出低电平;

任何一个设备输出低电平 → 总线为低电平;所有设备都输出高阻 → 总线为高电平(上拉电阻拉高);不会发生短路冲突

仲裁等待

当主设备一号在进行数据传输的时候会把电平拉低,当主设备二号想数据传输的时候读取到了低电平就会进行仲裁等待

IIC芯片的引脚上都有一个寄生电容,没接入一个设备就会导致等效电容增大

三、IIC协议

3.1 协议规则

只能由主机产生

起始信号:SCL线高电平的时候SDA线产生下降沿

终止信号:SCL高电平的时候SDA线产生上升沿

主机和从机都能产生

应答信号:时钟线SCL高电平期间,SDA低电平

非应答信号:SCL高电平期间,SDA高电平

总线共闲:SCL和SDA一直为高电平

数据有效:在时钟线高电平期间只能读数据(数据线电平不能变)低电平期间可以写入数据(数据线电平才能变)

IIC线以字节为单位进行传输;顺序为高位开始传输

由主机发:从机地址为7位(移位表明加了读写位)(一般,用一位表明方向)或者10位

3.2 主机读数据

从机内部无寄存器或地址

① 仅读取一个字节的数据

S:开始信号,ACK:应答;NACK:非应答;P:结束

② 连续读取多个字节的数据

从机内部有寄存器或地址区分

① 仅读取一个字节的数据

W表示要去传感器里面寻址;

主机先发从机的地址;然后发内部寄存器的地址;地址确定好了后,开始第二次通信读

② 连续读取多个字节的数据

3.3 主机写数据

由于I2C从机都需要通过寄存器来存储和区分不同类型的数据,所以没有寄存器的从机非常罕见。

从机内部有寄存器或地址区分

① 仅写入一个字节的数据

② 连续写入多个字节的数据

四、传感器手册

CRC校验

从机地址

通信方式

温湿度计算

复制代码
// 温度计算(摄氏度)
温度(°C) = -45 + 175 × (温度原始值 / 65535)

// 湿度计算(%RH)
湿度(%RH) = -6 + 125 × (湿度原始值 / 65535)

// 华氏度(可选)
温度(°F) = -49 + 315 × (温度原始值 / 65535)

示例代码

采集时间:高精度测量最多需要 8.3 毫秒

数据传输类型

采集模式命令

五、实现现象

SPI协议

一、定义

SPI 是一个同步的数据总线,也就是说它是用单独的数据线和一个单独的时钟信号 来保证发送端和接收端的完美同步

边沿触发

总线接口 ( 引脚 ) SCK 、 MOSI 、 MISO 、 CS

CS信号线进行从机的选择

遵循一主多从或者一主一从的结构

数据帧长度 8bit 或 1 6bit

数据传输的格式 MSB 或 LSB

MSB表示先发送最高位;LSB表示发送最低位

工作过程

通信总是由主机发起;主机通过MOSI引脚给从机发数据;从机同时通过MISO引脚给主机发送数据;由同一个时钟进行的同步全双工(也可以半双工和单工)

二、通信协议

SPI控制器挂在APB2总线上的

通信过程

  • 主机先将 NSS 信号拉低,这样保证开始接收数据;

  • 接收端检测到时钟的边沿信号时 ,它将立即读取 数据线上的信号,这样就得到了一位数据(1 bit);

由于时钟是随数据一起发送的,因此指定 数据的传输速度并不重要,尽管设备将具有可以运行的最高速度。

  • 主机发送到从机 :主机产生相应的时钟信号,然后数据 一位一位 地从 MOSI 信号线上进行发送到从机;

  • 主机接收从机数据 :如果从机需要将数据发送回主机,则主机将继续生成预定数量的时钟信号 ,并且从机会将数据通过 MISO 信号线发送;

时钟极性

除了配置串行时钟速率(频率)外,SPI主设备还需要配置 时钟极性

时钟极性通常写为 CKPCPOL

时钟极性和相位共同决定读取数据的方式,比如信号上升沿读取数据还是信号下降沿读取数据;

  • CKP = 0:时钟空闲 IDLE 为低电平 0;

  • CKP = 1:时钟空闲 IDLE 为高电平 1;

时钟相位

除配置串行时钟速率和极性外,SPI主设备还应配置时钟相位(或边沿)。

时钟相位通常写为 CKECPHA

时钟相位/边沿,也就是采集数据时是在时钟信号的具体相位或者边沿:

  • CKE = 0 :在时钟信号 SCK 的第一个跳变沿采样;

  • CKE = 1 :在时钟信号 SCK 的第二个跳变沿采样;

三、硬件实现

在单片机上选PA4到7

引脚配置

STM32 手册规定 SPI 最大速率是 18 MHz

四、实现结果

采集到的数据为0x5a(01011010)

ADC

一、核心功能

连续变化的模拟信号 (如电压、电流)转化为离散的数字信号,以便微处理器(MCU/CPU)进行处理、存储和分析。

二、关键参数

(1)分辨率:细节捕捉的能力

定义:ADC 能区分的最小模拟信号变化,以二进制位数(bit)表示。

公式:最小可分辨电压 = 满量程电压 / (2ⁿ - 1)(n 为分辨率位数)。

示例:3.3V 满量程、12 位 ADC 的最小分辨率为 3.3V/4095≈0.806mV

常见规格:8 位(低精度)、12 位(主流)、16 位(高精度

(2)转换速率:采样的速度极限

定义:单位时间内完成的转换次数,单位为 SPS(每秒采样次数)。

应用场景:高速场景(如通信、视频)需选择高转换速率的 ADC,低速场景(如温度监测)则可优先考虑低功耗型号。

(3)信噪比(SNR):信号纯净度的衡量

定义:输出信号与噪声的比例,反映ADC在转换过程中引入的噪声大小。

关键理解:SNR越高,说明信号相对于噪声越强,转换结果越纯净。

影响因素:量化噪声、热噪声、时钟抖动等。

(4)总谐波失真(THD):信号保真度的标尺

定义:描述输出信号中,除去基频(原始信号)之外,其他谐波成分的相对强度。

(5)线性度:转换线性

定义:输入信号与输出数字码之间是否呈线性关系。

三、工作流程

  1. 采样:通过采样保持电路捕获模拟信号的瞬时值。

  2. 量化:将采样值映射到离散的数字等级(如 12 位 ADC 的 4096 个等级)。

  3. 编码:将量化后的等级转换为二进制代码(如 0x01FF 表示 511)。

看门狗

看门狗(WDT)是一个定时器 ,开启看门狗定时器之后(比如定时100ms),在单片机程序中每隔一段时间 (小于100ms)就要**"喂狗"一次** ,即将看门狗定时器清零。这样做的用处是,一旦单片机程序跑飞,没有在定时的时间之内去喂狗,那么定时达到200ms时,看门狗自动将单片机复位。

作用:检测内核有没有死机

内部结构

网络

复制代码
摩尔信使(电脑) ---(WiFi)---> ESP8266 ---(串口)---> STM32 ---> LED/开关/温湿度
  • ESP8266 在这里不做任何协议解析,只是把串口1收到的数据原封不动从串口2发出去

  • 电脑(摩尔信使)是 MODBUS 主站,单片机是从站

  • ESP8266 就是一根"智能串口线"

ESP8266像一个小网站,摩尔信使是浏览器。浏览器主动访问网站,网站返回数据。

STA模式即设备作为客户端连接至WiFi热点(AP),用于终端设备上网。

AP模式即设备作为无线接入点(热点),创建一个新的WiFi网络供其他设备连接。

指令 作用 返回值(示例/说明)
AT 测试ESP8266是否存活 OK
AT+CWMODE=1 设为Station模式 OK
AT+CWJAP="WiFi名","密码" 连接WiFi OKWIFI CONNECTED WIFI GOT IP
AT+CIFSR 查询本机IP地址 +CIFSR:STAIP,"192.168.1.100" +CIFSR:STAMAC,"xx:xx:xx:xx:xx:xx" OK
AT+CIPMUX=0 设为单连接模式 OK
AT+CIPSTART="TCP","电脑IP",端口 建立TCP连接到指定服务器 CONNECT OK
AT+CIPMODE=1 开启透传模式 OK
AT+CIPSEND 开始透传(进入数据发送状态) > (提示符) 之后输入内容即直接发送
相关推荐
广州灵眸科技有限公司10 小时前
瑞芯微RV1126B开发板(EASY-EAI-PI2) 开发(编译)方式说明
linux·服务器·单片机·嵌入式硬件·电脑
IT_阿水11 小时前
STM32 HAL库输入捕获配置
stm32·单片机·嵌入式硬件
nuoxin11411 小时前
WILX1200HC-5TG144I替代 LCMXO2-1200HC-5TG144I(富利威)
人工智能·嵌入式硬件·fpga开发·电脑·硬件工程·dsp开发
zlinear数据采集卡12 小时前
555触摸延时开关深度解析:从电路原理到智能楼道灯应用
单片机·嵌入式硬件
国科安芯15 小时前
国科安芯推出商业航天级抗辐照全双工 RS485/422 收发器 ASC491S2Y
网络·分布式·单片机·架构·安全性测试
czhaii15 小时前
LCD320240间接接口 RA8835控制器 温度MAX6675显示
单片机·嵌入式硬件·硬件工程
破晓单片机15 小时前
030、STM32项目分享:计时充电桩系统
stm32·单片机·嵌入式硬件
森利威尔电子-16 小时前
森利威尔SL3150H |PIN TO PIN 替换 MRDC88-1 10~150V 输入 0.6A 降压电源芯片
单片机·嵌入式硬件·物联网·集成电路·芯片
kebidaixu16 小时前
FreeRTOS 移植到 STM32F407VETX 记录
stm32·单片机