PWM 与 I2C 本节内容仍然使用 STM32F103C8T6 作为实验板。 呼吸灯 在没有 DAC 的情况下,我们可以使用 PWM 来模拟一个 DAC,从而实现类似于呼吸灯的效果。通过改变 PWM 的占空比,我们可以控制 LED 的亮度,从而实现呼吸灯的效果。 PWM 的原理不过多介绍,具体可以参考 脈衝寬度調變 - Wikipedia 的相关…
调试与 GPIO 初步 本次测试使用 STM32F103C8T6 进行调试。 开始调试 在使用 C 开发的时候,我们通常使用 SWD 通过 GDB 调试,或者通过串口打印调试信息。Rust 通过一些类似的方法也可以进行调试。 其中,使用 probe-rs 配合 Visual Studio Code 进行调试,方式类似于在 Keil 或 IAR 中使…
环境配置 使用 Rust 进行嵌入式开发需要配置相应的开发环境。由于 Windows 系统在嵌入式开发中可能会遇到一些兼容性问题,建议使用 Linux 或 macOS 系统进行开发。如果你使用的是 Windows 系统,可以考虑使用 WSL(Windows Subsystem for Linux)来创建一个 Linux 开发环境。 本文档采取 WS…
此处使用 Raspberry Pi 400 作测试,使用官方 Raspberry Pi OS演示,基本同于 Debian 系其它 Linux。 Linux 上的 GPIO 设备 通过在 Linux 的 /dev 目录查看本机外设,可以看到以下内容。 ls -l /dev/gpiochip* crw-rw----+ 1 root gpio 254, …
CAN FD FD CAN (Flexible Data-Rate) is an extension of the original CAN protocol that allows for higher data rates and larger payloads. It was introduced to meet the increasing…
卡尔曼滤波和虚拟串口 卡尔曼滤波 卡尔曼滤波是一种递归算法,用于估计动态系统的状态。它基于线性高斯状态空间模型,通过结合测量数据和系统模型来提供最小均方误差意义下的最优状态估计。卡尔曼滤波器由两个主要步骤组成:预测和更新。 以一维平衡数据为例演示滤波过程。 一个简单的状态空间模型可以表示为: #[derive(Clone, Copy)] struc…
i2c-pca9555-extension 基于 ESP-IDF 的 PCA9555/TCA9555 I2C I/O 扩展驱动(支持多设备 & 中断回调) 该项目实现了一个简单的 16 路数字 I/O 扩展驱动(PCA9555/TCA9555 系列),并包含了示例代码: 支持多个设备(最多 8 个) 支持中断(INT)引脚与回调处理 支持读…
概述 这是一个适用于 ESP32 微控制器的完整 MPU6050 I2C 驱动程序,提供完整支持来读取加速度计和陀螺仪数据,并使用互补滤波和四元数表示法计算3D方向角。 MPU6050 是一个6轴惯性测量单元(IMU),结合了: - 3轴加速度计 (可选范围 ±2g 到 ±16g) - 3轴陀螺仪 (可选范围 ±250°/s 到 ±2000°/s)…