社区
单片机/工控
帖子详情
IIC_SDA=(txd&0x80)>>7为什么要右移七位?
jiaobiedeng1738
2017-08-20 09:37:57
以前学51的时候,写的I2C是没有右移七位的,然后现在学STM32的时候看到I2C发送函数里面有右移七位,请问这是怎么回事?
...全文
2202
2
打赏
收藏
IIC_SDA=(txd&0x80)>>7为什么要右移七位?
以前学51的时候,写的I2C是没有右移七位的,然后现在学STM32的时候看到I2C发送函数里面有右移七位,请问这是怎么回事?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ckc
2017-08-20
打赏
举报
回复
把最高位转移到最低位吧 51只能一位一位移动,所以这样做很不合适 也许stm32可以一次性移动7位
tianxj001
2017-08-20
打赏
举报
回复
6
IIC_SDA=(txd&0x80)>>7 没看见其他源代码,这里,txd应该是一个寄存器,&0X08 也就是和0B10000000 逻辑与,也就是结果取最高位,然后右移7位,最高位变成最低位,IIC_SDA是一根串口数据, 这个代码的意思就是把txd 最高位 发送到IIC_SDA。 再看看这个代码,如果是这个目的,貌似IIC_SDA=txd>>7; 就可以了,和0X80做逻辑与好像是多余的哈。
【通信协议】
IIC
通信协议详解
IIC
的基本介绍
IIC
总线的发展: 芯片间总线(Inter Interface Circuit,
IIC
),是应用广泛的芯片间串行扩展总线。目前世界上采用的
IIC
总线一共有两个规范,分别由荷兰飞利浦公司和日本索尼公司提出的,现在基本采用荷兰飞利浦的
IIC
总线的技术规范。
IIC
总线的优点: 1、
IIC
总线优点中最主要的优点是其简单性(
IIC
只有两条信号线)和有效性(根据SCL线上的时钟线来判断)。带有
IIC
总线的接口的单片机都可直接与具有
IIC
总线接口的各种扩展器件...
IIC
通信---EEPROM24C02---STMF4
IIC
通信协议
IIC
是同步半双工通信,一个数据线
SDA
和一个时钟SCL线,可以接受和发送数据。在CPU与被控IC之间、IC与IC之间进行双向传送。 空闲状态
IIC
总线的
SDA
和SCL两条信号线同时处于高电平时,规定为总线的空闲状态。 起始信号 当SCL为高期间,
SDA
由高到低的跳转 代码实现为: //产生
IIC
起始信号 void
IIC
_Start(void) {
SDA
_OUT(); //
sda
线输出模式
IIC
_
SDA
=1;
IIC
_SCL=1; delay_us(4)
iiC
通信协议详解以及STM32
iic
代码理解
反之,若为非应答信号,则会让主机发送终止信号,来结束传输。传入的数据
txd
会和
0X80
(1000000)进行与运算,然后结果
右移
七位
,换句话说就是把传进来的字节的最高位单拿出来,赋值给
SDA
,以便于传输,然后将字节左移一位,就会把第二位变为最高位,以此类推,将每一位都传入
SDA
。6.寻址:因为每个设备都有自己的专属地址(有7,8,10位),每种设备的因为出产的厂家不一样,所以id不同,为了放置相同的设备id号一样,所以低三位可以自定义,所以一个总线可以接8个相同的设备。最后一位bit0,来判断读写。
IIC
的使用
总线空闲:
SDA
= 1,SCL = 1;启动信号:SCL = 1,
SDA
1 -> 0;停止信号:SCL = 1,
SDA
0 -> 1;数据传输:SCL为1时,
SDA
必须保持稳定,即为0或1(停止时相反,所以在停止前要改变
SDA
都要先把SCL置为0);SCL为0时,才允许改变
SDA
状态;SCL在上升沿时写入数据,在下降沿时读出数据;应答信号:为0时,是有效应答,为1时,是无效应答;传输到最后一个字节后,要发送一个无效应答,再发送停止信号;
正点原子
IIC
例程讲解笔记(二)——my
iic
.c中函数理解
正点原子
IIC
例程讲解笔记(二)——my
iic
.c中的函数理解
单片机/工控
27,375
社区成员
28,769
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章