先随便写写一些思路, 以后再整理. 这段时间笔者做了一些硬件开发, 领悟了一些事情. 1 - 在常规创客的角度上, 硬件开发所需的知识面比较广, 非常广, 但不算太深. 2 - 发现硬件开发由于其特殊环境的原因, 开发难度很大, 难度绝大部分来源于很麻烦, 效率很低. 一般的开发者, 如果他们入门就直接学硬件, 他们是感觉不到这问题的.  没有对比
概述I2C 是一种串行同步半双工通信协议,总线上可以同时挂载多个主机从机。I2C 总线由串行数据线 (SDA) 串行时钟线 (SCL) 线构成。这些线都需要上拉电阻。I2C 具有简单且制造成本低廉等优点,主要用于低速外围设备的短距离通信(一英尺以内)。ESP32 有两个 I2C 控制器(也称为端口),负责处理在 I2C 两根总线上的通信。每个控制器都可以设置为主机或从机。例如,可以同时让一个控
STM32I2C 片上外设专门负责实现 I2C 通讯协议, 只要配置好该外设,它就会自动根据协议要求产生通讯信号,收发数据并缓存起来,CPU 只要检测该外设的状态访问数据寄存器,就能完成数据收发。架构图如下所示。通讯引脚:STM32 芯片有多个 I2C 外设,外设的 I2C 通讯信号引出到不同的 GPIO 引脚上,使用I2C时须配置这些指定的引脚。时钟控制逻辑:SCL 线的时钟信号,由 I2
STM32——I2C通信配置I2C的系统框架1、通讯引脚2、时钟控制逻辑3、数据控制逻辑4、整体控制逻辑通信过程写入过程读取过程I2C代码配置I2C的初始化结构体几个重要的函数 既上一篇文章对I2C的理论分析、讲解。基本原理已经大致了解了。本文就以I2Cstm32上的系统框架图的分析、讲解I2C的代码配置。 基于平台:STM32F407ZG 参考资料:STM32f4参考手册、STM32f
转载 2024-01-21 20:15:47
15阅读
ESP32语音播报 MP3播放存储方法ESP32语音播报MP3播放的存储方法介绍存储实现文件合并烧录位置映射与注意事项测试 ESP32语音播报MP3播放的存储方法介绍在实际项目中,往往需要产品能具有语音提示功能,这样可以带来很好的产品体验。 ESP实现语音提示可以使用wav未压缩的音频格式直接播放,但此种方法需要占用大量的FLASH存储空间,而使用MP3格式的音频则只需要很少的FLASH空间,如
转载 2024-02-25 12:48:13
254阅读
电机控制另一个关键的模块就是ADC采样,这个模块配置的好坏决定了采样电流电压的精准度,因此有必要对其进行深入学习。简介:STM32 在片上集成的ADC 外设非常强大。STM32F103xC、STM32F103xD STM32F103xE增强型产品内嵌3个12位的ADC,每个ADC 共用多达 21 个外部通道,可以实现单次或多次扫描转换。如 STM32F103VET6,属于增强型的CPU,它有1
转载 2024-07-22 12:55:22
228阅读
stm32f103上解决硬件I2C总是busy的问题问题在使用stm32f103的硬件I2C的时候,读写I2C总线总是busy,即下面的代码总是无法退出: while (I2C_GetFlagStatus(I2C1,I2C_FLAG_BUSY)) { ; }解决方法在将io管脚复用成I2C之前,先作为输出GPIO管脚,然后拉高,即下面代码里的i2c_pin_init,并且在每次读写的时候都调用一次i2c_pin_init,代码如下:#include "
原创 2021-05-26 21:32:46
2180阅读
00. 目录文章目录00. 目录01. I2C简介02. I2C主要特性03. I2C功能说明0器 2 (I2C_OAR2)5.5 I2C 数据寄存器 (I2C_DR)5.6 I2C 状态寄存器 1 (I2C_SR1)5.7 I2C 状态寄存器 2 (I2C_SR2)5.
原创 2022-03-16 14:17:38
1294阅读
00. 目录文章目录00. 目录01. I2C简介02. I2C主要特性03. I2C功能说明04. I2C中断05. I2C相关寄存器5.1 I2C 控制寄存器 1 (I2C_CR1)5.2 I2C 控制寄存器 2 (I2C_CR2)5.3 I2C 自有地址寄存器 1 (I2C_OAR1)5.4 I2C 自有地址寄存器 2 (I2C_OAR2)5.5 I2C 数据寄存器 (I2C_DR)5.6 I2C 状态寄存器 1 (I2C_SR1)5.7 I2C 状态寄存器 2 (I2C_SR2)5.
原创 2021-09-02 14:26:41
1510阅读
最近做一个IPC的项目,其中用了海思的一套解决方案,用Hi3518e作为主芯片,上面搭载嵌入式linux系统。由于可行性验证阶段,没有做芯片级,而是先从系统级做起,用了一块已经移植好linux系统,带有网络文件系统服务的板子,该板子是专用于rtsp视频传输的,预留的引脚是在太少,只有两个用于IRCUT的引脚,而我们不仅仅需要rtsp服务,还需要在rtsp视频流中加入九轴陀螺仪的数据一起提供给上位机
物理层:(1) 它是一个支持多设备的总线。“总线”指多个设备共用的信号线。在一个 I2C 通讯总 线中,可连接多个 I2C 通讯设备,支持多个通讯主机及多个通讯从机。(2) 一个 I2C 总线只使用两条总线线路,一条双向串行数据线(SDA) ,一条串行时钟线(SCL)。数据线即用来表示数据,时钟线用于数据收发同步。(3) 每个连接到总线的设备都有一个独立的地址,主机可以利用这个地址进行不同设备之间
     我看了很多网上的解释,都是先官方的说明I2C协议,再潦草的给出不完整的程序,导致你们又看不懂I2C原理又调试不出程序,所以我这篇文章先专门针对程序,先使你们的程序调试成功,再利用仿真或其他方式回去理解I2C的原理!我自己就是这么来的,所以把这种方法推荐给你们!  潦草的说明一下先,不懂不要紧!!! I2C 有四条连接线,SCL、SDA、VCC、GN
最近使用 ESP32-C3 跑了下 softAP demo,阅读了 demo 源码及跑过 demo 之后,脑海中不禁有以下几个疑问:ESP32-C3 作为 SoftAP 时,默认的 IP 地址为 192.168.4.1,如何修改默认的 IP 地址?ESP32-C3 作为 SoftAP 时,有 Station 连接上了之后,如何获取 SoftAP 分配给这个 Station 的 IP 地址 ?笔者认
转载 2024-05-18 14:55:37
666阅读
一、相同点1)外围引脚PIN TO PIN兼容,每个引脚上的复用功能也完全相同。2)芯片内部寄存器、外部IP寄存器地址逻辑地址完全相同,但是有些寄存器默认值不同,有些外设模块的设计时序上STM32有差异,这点差异主要体现在软件上修改,详情见下文。3)编译工具:完全相同例如:KEIL 、IAR4)型号命名方式完全相同,所以替代只需找尾缀相同的型号即可,例如:STM32F103C8T6 与 GD3
使用stm32cubemx生成硬件I2C的代码 不过自动生成的代码,调用HAL_I2C_XXX的API工作不正常,返回错误代码为I2C_BUSY 使用STM32I2C接口使用时需要注意很多细节,不过HAL库中官方已经为用户根据这些细节做了处理,可以直接使用。不过这个I2C代码并不稳定,有些板子可以用,另一些则出错.出错现象为调用HAL_I2C的API时,返回I2C_BUSY查看寄存器 BUSY位
I2c学习笔记I2C总线通信过程起始信号停止信号起始信号:停止信号字节传送与应答同步信号经典I2C时序 I2C总线通信过程1. 主机发送一个起始信号启用总线2. 主机发送一个字节数据,表示从机地址和数据发送方向(字节中前七位确定从机地址。最后一位确定发送器接收器,0表示主机为发送器,从机为接收器;1表示从机为发送器,主机位接收器)3. 被寻址的从机发送一个应答信号,建立通讯4. 发送器发送一
我们了解了I2C的操作流程,这一篇,我们就使用I2C,来对EEPROM进行操作吧。我们做两种选择:1.时序由IO口模拟高低电平,需要了解协议并按照协议操作相应的IO口。2.时序由硬件自行产生,不需要人工干预;由硬件产生的I2C时序,我们借助Stm32Cube配置实现便可,我们这一篇,抛开Stm32Cube,手撕代码,根据I2C的时序,一步步地实现I2C对EEPROM的读写吧。 我们分为几
ESP32开发板控制OLED显示屏相关知识点 I2C总线是用于设备之间通信的双线协议,在物理层上,它由两根线组成:SCLSDA,分别是时钟线和数据线。 I2C对象使用特定的总线创建,可以在被创建时就初始化,也可以稍后再初始化。可以通过print I2C对象来查看相关的配置。方法说明machine.I2C(id=-1, *, scl, sda, freq=400000)构造方法,返回一个I2C对象
转载 2024-03-15 20:27:19
530阅读
 一、看电路图1、要得知那些信息从电路图上主要是要知道3点关键信息I2C设备挂载在I2C1、I2C2I2C3的哪一个总线上SDA、SCL接的是哪两个GPIOI2C设备地址(有的是可以选择的,比如这个EEPROM)2、挂在哪个I2C总线以及哪个GPIO从电路图上可以看出:挂载在I2C1上的SDA接的是PB7引脚SCL接的是PB6引脚这个一般硬件工程师都会在电路图上标出来吧。另外如果只标出
转载 2024-10-12 17:06:10
282阅读
由于ESP32-C3只有一条硬件I2C总线,然而我的程序中需要同时要两条I2C总线,所以不得不考虑同时使用硬件I2C软件I2C。硬件I2C作为Slave用于与上位机通信,效率比较高,代码也简单,本篇不做详细介绍。本篇重点介绍软件I2C方式驱动VL53L0X,其他I2C设备可参考。前面有篇文章写到了I2C总线驱动VL53L0X,这篇我们再深入点。本文的I2C均是Wire模式使用。软件I2C只能作为
  • 1
  • 2
  • 3
  • 4
  • 5