iic (软件)

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印


串口是异步时序对每移位的时间要求严格 就很少用软件模仿的
对于iic这样的同步时序 软件实现便很简单灵活

硬件:外设配置->外设引脚配置

软件:外设引脚配置

这里随意选取引脚 配置的话

变成通用模式是因为我们要通过软件的方式来模拟出iic的波形所以我们直接向IO引脚写0写1

初始化电压为高 是因为如果不配置 配置为输出模式时默认引脚为低电平的 一开始总线处于空闲状态所以为高电压

初始准备

起始位 停止位

发送一个字节

这里我觉得有点问题 发送地址的话第8位应该为0 但他直接把8个一起发了 我觉得应该是发7个然后最后一位固定给0 (自己的思考)

这里的sda_write(x)具体如下

读取一个字节

这里的NAK 和ACK是因为硬件上的话是 1是ACK 0是NAK 为了和上一节保持一致所以取反

接下来要软件读写iIC的具体操作了和上节课一样

等待总线空闲->发送起始位->发送地址->发送数据->发送停止位

少了一个return(0)

这里他发送了地址就解决了刚才我的疑问

这里我觉得有点问题 发送地址的话第8位应该为0 但他直接把8个一起发了 我觉得应该是发7个然后最后一位固定给0 (自己的思考)

少了一个return(0);

然后铁头山羊up做了封装

用硬件时:初始化 初始化外设 初始化引脚

用软件时:初始化

hal库软件iic先不写了 回来再出

建议使用江科大的 比较方便

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值