找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 296|回复: 0
打印 上一主题 下一主题

关于I2C读写问题

[复制链接]

3

主题

4

帖子

95

积分

二级会员(20)

Rank: 2Rank: 2

积分
95
跳转到指定楼层
1#
发表于 2014-7-24 20:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您!

您需要 登录 才可以下载或查看,没有帐号?注册

x
下面是一个I2C写函数,但是始终不能理解这个函数里面的“I2C_SDA = dat >> 7;”这句话,请高手解答一下!谢谢!!!!
9 T0 O/ U- r  K  ~& J. L
3 @" f' v" R3 K) u  suchar I2C_SendByte(uchar dat, uchar ack)( D3 o) n0 g  \2 w( b' {( M
{& d  b* P' a: }- e5 N9 c% g+ B" M
        uchar a = 0,b = 0;//最大255,一个机器周期为1us,最大延时255us。: j" P5 _. K8 x! L
                       
+ h' h, x: f/ d; y        for(a=0; a<8; a++)//要发送8位,从最高位开始$ M; w; x: o9 m+ c
        {8 t9 Z" o# g7 U* Y3 Q$ w
                I2C_SDA = dat >> 7;         //起始信号之后I2C_SCL=0,所以可以直接改变I2C_SDA信号& C& }8 V7 N2 O9 p7 H* j8 y6 G
                dat = dat << 1;
( ~7 L  ~7 Y( e4 e/ J: ~                I2C_Delay10us();4 ~- F3 y6 U3 c) r: c
                I2C_SCL = 1;
' u/ h- r6 V. l" \. f& R) t" K                I2C_Delay10us();//建立时间>4.7us
- ^& m$ e* E# @9 C8 N* y- a- b                I2C_SCL = 0;" I( ~+ [$ D, @! u+ Y( M
                I2C_Delay10us();//时间大于4us                " \6 e1 ^- I  M4 e; n' P3 i3 M
        }
! n& X& l0 o/ X1 H! C2 x% P6 E- |+ H' j0 U4 y7 r* N. j) B3 s
        I2C_SDA = 1;  d2 b6 H% `! `8 C
        I2C_Delay10us();/ l; c2 Z1 ?" b
        I2C_SCL = 1;
4 r, a( H7 q5 y) f; h9 E7 d        while(I2C_SDA && (ack == 1))//等待应答,也就是等待从设备把I2C_SDA拉低* e' a+ ~' A3 p4 K1 z" [
        {
8 I  w, b8 N, n                b++;6 d. _8 D9 w0 ~. g
                if(b > 200)         //如果超过200us没有应答发送失败,或者为非应答,表示接收结束' B, ^( k4 h, `) b/ |: X6 \2 ]
                {
! j, ]+ F6 c# B                        I2C_SCL = 0;1 s0 W) w" r( }
                        I2C_Delay10us();
, O% ]" S& M( q# e                        return 0;
- b6 Y; U; Y% D                }
0 ~5 j/ A. i! t5 q        }
! |" S, Q4 p: D3 `# M* z+ @/ [5 G! E
        I2C_SCL = 0;
$ S' Q" `1 X% x' |. T$ Q        I2C_Delay10us();8 u' s# c9 u$ o
        return 1;                - g3 H: g2 C' x! z7 P7 L5 m
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2025-2-2 04:30 , Processed in 0.051957 second(s), 33 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表