stm32平衡车mpu6050

硬件i2c,,, 重映射在 pb8 和 pb9


SMBus : system management bus : 系统管理总线,,本质是i2c的一个增强版,规范版


波特率:

i2c速度模式

大于100kbps

快速模式下,,波特率一定不能大于400kbps,,

因为i2c是开漏,,高电平靠的是上拉电阻慢慢拉上去,,,而不是MCU主动推上去,,,

拉低很快,,拉高很慢,,,如果过快,,电压都还没来得及升到高电平,,,下一个数据就来了,,通信就错了

SPI是推挽输出,,所以能到几十MHz

I2C天生适合 ,, 板内通信,短距离通信,,,而不适合,,高速,长距离,大数据量

因为传感器每秒几十到几百字节就够了,,而显示屏,,flash,SD卡,,每秒可能要传输几M数据,,I2C就明显不够用


只有在快速模式下,,设置时钟信号的占空比才有效,, 占空比仅在快速模式下有效

占空比 : 高电平时间 / 总时间

为什么要设置占空比:

到了400kHz,频率对了 不代表时序一定满足规范

400kHz ===》 周期 2.5us,,, 高电平 1.25us, 低电平1.25us,, 频率没问题,,但是I2C规范要求 T_LOW >= 1.3us, T_HIGH >= 0.6us,

低电平时间不够,,,, 频率正确,,但是时序不符合规范

低电平需要时间准备数据,,,高电平需要去充电容,,,时间不够就会出错

设置占空比是为了在同样的频率下,,让高电平和低电平持续时间满足I2C的时序要求


SR1 : status register

硬件I2C写起始位 : 将SDA的start寄存器 写成1 ,,, I2C模块就会主动帮我们将SDA下拉,,从而发送一个起始位

发送停止位,,, 将SDA的stop寄存器写成1


I2C总线,,不传输数据的时候,,就是空闲的,,,, BUSY寄存器为0: 总线空闲

SB标志位,,,查看起始位是否发送完成,,,start bit ===> 1:表示发送完了 ,,0 :未发送

发送数据的时候,,从机会返回ack,,,AF 标志位 acknowledge failure: 为1: 没有收到ack,,应答失败

寻址的时候,,ADDR标志位 address sent /matched :为1 : 寻址成功,, 0:寻址失败

ack寄存器,,只


MPU6050规格书 :

1101 000 R/W

0xD0 ,,, AD0 为 0

0xD2 ,,, AD0为1

1s钟旋转一圈,,, 360度每秒


陀螺仪 gyroscope,,测的是角速度 : angular velocity ,,, 单位 °/s, 每秒转了多少度,,,陀螺仪,,测转动速度

相关推荐
捷瑞电子工坊11 小时前
FreeRTOS任务管理:从入门到实践(标准库版)
stm32·嵌入式·freertos·实时操作系统·任务管理·标准外设库·任务挂起与恢复
莫浅子16 小时前
day01-USB架构与枚举
c++·单片机·嵌入式驱动
恒锐丰科技韩生16 小时前
SS8844T|8.2‑40V 四通道独立半桥驱动 ETSSOP28 带散热焊盘 工业自动化机器人专用
嵌入式硬件·硬件工程
Hello_Damon_Nikola17 小时前
INMP441从入门到精通
单片机·嵌入式硬件·物联网
恒锐丰小瑞17 小时前
率能SS6810H 32V/1A/双通道H桥驱动芯片,PWM电流控制与混合衰减模式,用于POS打印机/安防相机/机器人
嵌入式硬件·数码相机·机器人·硬件工程
恒锐丰科技林技术员17 小时前
SS8812T 双通道 H 桥电机驱动芯片应用解析
经验分享·嵌入式硬件·硬件工程
ye1501277745517 小时前
12V转3V-5V2A电位器无极调光调速WT7027
stm32·单片机·嵌入式硬件
恒锐丰-罗生18 小时前
国产电机驱动 SS6635E|宽压大电流单通道 H 桥芯片全面总结
驱动开发·嵌入式硬件·硬件工程
无损检测小白白18 小时前
STM32F407 串口3 DMA收发-标准库
stm32·单片机·嵌入式硬件
greatriver00719 小时前
e2studio R7FA6M5 卡死 rtc 需要如何配置时钟
单片机·瑞萨单片机