电子产业一站式赋能平台

PCB联盟网

搜索
查看: 786|回复: 2
收起左侧

IIC通信协议

[复制链接]

604

主题

947

帖子

5151

积分

四级会员

Rank: 4

积分
5151
发表于 2023-5-11 08:21:08 | 显示全部楼层 |阅读模式
有没有大佬知道这句if(data&0x80)SDA=1
else SDA=0条件语句里面是判断最高位是否为1,为什么要对最高位进行判断呢?
回复

使用道具 举报

35

主题

892

帖子

1091

积分

三级会员

Rank: 3Rank: 3

积分
1091
发表于 2023-5-11 08:21:51 | 显示全部楼层
iic通信为两条线,一条为时钟线,一条为数据线。
而数据线上只能有0 1表示,要完整的传输data就需要将data一位一位传过去,所以在循环中,一位一位传输,在循环中应有data向左移位的运算。
回复 支持 反对

使用道具 举报

0

主题

829

帖子

622

积分

二级会员

Rank: 2

积分
622
发表于 2023-5-11 08:22:41 | 显示全部楼层
data是16位数据 按位与(&)1000 0000,按照与运算,date最高位会与最高位1进行一次与运算,如果data最高位是1,那么与运算结果为1,SDA数据引脚置1,反之置0。
这步算完以后data数据要左移1位,与运算过的最高位移出去,在末尾补上0,此时出现新的最高位,继续参与&1000 0000 按位与运算,如此往复循环16次,才能读全一个16位数据。
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条


联系客服 关注微信 下载APP 返回顶部 返回列表