尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

STM32零基础教程(六):ADC、I2C、SPI与DMA

STM32零基础教程(六):ADC、I2C、SPI与DMA STM32 零基础系列第 6 篇完成模拟采集、传感器通信和高效率数据搬运。第 9 章ADC 模数转换章节介绍ADC 把连续电压转换成数字量。它像一把刻度尺把 0~3.3V 分成 4096 个格子读取电压落在哪一格。专业名词ADCAnalog-to-Digital Converter模数转换器。分辨率例如 12 位表示 0~4095。采样时间ADC 观察输入电压的时间。参考电压 Vref数字满量程对应的电压。触发源软件、定时器或外部事件。校准减少偏移和增益误差。HAL 读取示例uint32_tadc_value;floatvoltage;HAL_ADC_Start(hadc1);HAL_ADC_PollForConversion(hadc1,10);adc_valueHAL_ADC_GetValue(hadc1);HAL_ADC_Stop(hadc1);voltage3.3f*adc_value/4095.0f;不要把 ADC 数值直接当成物理量。光照、温度、电流等都需要结合传感器电路和标定公式转换。本章掌握标准能根据分辨率和参考电压换算输入电压。能配置单次转换、连续转换和多通道扫描。能解释采样时间、噪声、平均滤波和校准。未来使用场景电池电压、温度、光照、电流、电位器、麦克风和模拟传感器。第 10 章I2C 与 SPII2CI2C 像一条公交线路SCL 是统一时钟SDA 是共享数据线每个设备有地址。它只需要两根线适合多个低速传感器。专业名词主机/从机谁产生时钟谁就是主机。设备地址总线上区分不同设备的编号。ACK应答信号。重复起始不释放总线直接切换读写方向。上拉电阻I2C 开漏总线恢复高电平所必需。uint8_tdata;HAL_I2C_Mem_Read(hi2c1,0x481,0x00,I2C_MEMADD_SIZE_8BIT,data,1,100);STM32 HAL 的设备地址通常需要左移一位因为最低位用于读写方向。SPISPI 像一条专用高速传送带SCK 时钟 MOSI 主机发送 MISO 主机接收 NSS/CS 片选SPI 没有统一的设备地址每个设备通常单独占用一个 CS 引脚速度比 I2C 高。uint8_ttx0x9F;uint8_trx[3];HAL_GPIO_WritePin(FLASH_CS_GPIO_Port,FLASH_CS_Pin,GPIO_PIN_RESET);HAL_SPI_TransmitReceive(hspi1,tx,rx,1,100);HAL_SPI_Receive(hspi1,rx,3,100);HAL_GPIO_WritePin(FLASH_CS_GPIO_Port,FLASH_CS_Pin,GPIO_PIN_SET);本章掌握标准能区分 I2C 的地址和 SPI 的片选。能使用逻辑分析仪观察 SCL/SDA 或 SCK/MOSI/MISO。能处理 ACK、超时、总线忙和设备无响应。未来使用场景OLED、EEPROM、RTC、IMU、温度传感器、Flash、屏幕和无线芯片。第 11 章DMA章节介绍DMA 是 Direct Memory Access直接存储器访问。它像仓库搬运机器人CPU 只下达“把这批数据从 UART 搬到 RAM”的命令搬运期间 CPU 可以做其他工作。适合 DMA 的数据UART 连续接收。ADC 多通道采样。SPI 屏幕刷新。定时器波形输出。UART DMA 示例uint8_trx_buffer[128];HAL_UART_Receive_DMA(huart2,rx_buffer,sizeof(rx_buffer));DMA 完成或半传输时可以产生回调。实际协议应结合空闲线检测、环形缓冲区和帧解析。本章掌握标准能解释 DMA 源地址、目标地址、数据宽度和传输长度。能区分普通模式、循环模式和双缓冲。能处理 DMA 缓冲区与 CPU 同时访问造成的数据一致性问题。未来使用场景高采样率数据采集、音频、摄像头、网络数据、串口高吞吐和屏幕刷新。
返回列表