首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
软件与程序人生
›
DevOps与敏捷开发
›
STM32——I2C通讯外设
返回列表
发新帖
STM32——I2C通讯外设
[复制链接]
发表于 2026-2-4 01:20:25
|
显示全部楼层
|
阅读模式
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
软件只必要CR控制寄存器,DR数据寄存器,为实时
监控
状态,软件必要读取SR状态寄存器,比如:开车时CR是控制汽车方向,踩油门等,SR是仪表盘。
由于I2C是半双工,因此发送和吸取数据都是在移位寄存器和DATA 寄存器中举行,发送数据时,在数据向移位寄存器转移时,新的数据就会进入到DATA寄存器中。
吸取数据时先到移位寄存器,之后转移到DATA寄存器
简化如下:由于I2C是高位先行,因此发送数据是左移。
I2C的GPIO为开漏输出模式
此处时钟可以输入也可以输出
之后是主机发送部门:
起首是10位的帧头,11110+2位地点位+1位读写位,后边是剩余8位地点位
发送数据:数据写入DR中,之后当移位寄存器空时,将数据转入移位寄存器中举行发送,当DR中的一个数据被全部转移到移位寄存器时,就会有新的数据进入到DR中,等候举行下一次转移到移位寄存器中,当吸取应答位后,数据就被转移到移位寄存器中
主机吸取部门:以当前地点读的情势展示主机吸取
起始条件——从机地点+读——应答——吸取数据——应答——吸取数据——非应答——制止
代码
部门,在硬件中不必要用软件配制I2C协议的内容,全由硬件实现
起首是初始化部门,相对比与软件来说,硬件这部门初始化必要增长部门:1、开启I2C和GPIO口的时钟;2、对GPIO口举行设置并为复用开漏输出模式(复用:GPIO控制权交给外设);3、对I2C举行设置;4、开启I2C使能
对MPU6050的设置生存。
时钟速率在100KHz下是尺度模式,高低电寻常间同等,占空比为1:1;凌驾100KHz后,进入快速模式,低/高近似=2:1;400KHz最大时钟速率
和软件同等。
之后是写寄存器的
代码
必要举行更换:
根据上面的主机发送图可得:
先设置起始条件——EV5事故——发送从机地点并应答——EV6(发送数据的
代码
)——发送寄存器地点并应答——EV8——发送数据(一个字节)——EV8_2——制止条件
为代码更加轻便,增长了一个等候函数,当超时时就不再等候事故的发生,防止卡死
之后是主机吸取的过程:
起始条件——EV5——发送从机地点并应答——EV6(发送数据的代码)——发送寄存器地点并应答——EV8_2/8——重新发送起始条件——EV5——发送从机地点并应答——EV6(吸取数据的代码)—ACK=0失能(只读取一个字节时)——制止条件——EV7——吸取数据——ACK=1使能(默认是1使能)——返回数据
实验效果与上一篇同等
回复
使用道具
举报
返回列表
浏览过的版块
数据仓库与分析
物联网
Java
Oracle
勿忘初心做自己
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表