找回密码
 注册
关于网站域名变更的通知
查看: 834|回复: 0
打印 上一主题 下一主题

关于I2C读写问题

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
下面是一个I2C写函数,但是始终不能理解这个函数里面的“I2C_SDA = dat >> 7;”这句话,请高手解答一下!谢谢!!!!2 v# [4 z. m# C7 T  |# O

' g$ J" j+ Q5 X1 E1 u0 I% ^uchar I2C_SendByte(uchar dat, uchar ack)
+ ?! |" K8 E8 K4 P" ?- {{
+ Z: q+ M$ w7 E$ [9 y        uchar a = 0,b = 0;//最大255,一个机器周期为1us,最大延时255us。
8 [' Z8 Q! o# [8 o; w+ K                       
; _' ~9 \6 W# y9 p. O2 T6 p        for(a=0; a<8; a++)//要发送8位,从最高位开始
8 ?( c" A9 G0 Y: L8 O6 @        {* H7 [/ y- n2 l4 P
                I2C_SDA = dat >> 7;         //起始信号之后I2C_SCL=0,所以可以直接改变I2C_SDA信号. L8 J/ d+ l: @9 ]3 Q- k" Y
                dat = dat << 1;
; y- _* z/ H( H* J. }& v                I2C_Delay10us();
( X3 P( o$ m8 J% h. y                I2C_SCL = 1;
  a/ r' p, D* S! b$ Y4 k/ e                I2C_Delay10us();//建立时间>4.7us  Y8 ]) ^7 x2 b, R( F6 {1 T
                I2C_SCL = 0;8 I  x  N' p$ }* |, \
                I2C_Delay10us();//时间大于4us                / _' X% c/ I7 U. \% S! x  X
        }
/ q" u5 Y/ d* u$ m2 z3 z) J! Z. L
5 n+ X6 n8 o. K& W1 s7 E        I2C_SDA = 1;
4 `4 \5 }8 N5 U4 z$ ~& i        I2C_Delay10us();
' F$ Z, P. W' ?" G' `* \        I2C_SCL = 1;5 U: I/ P% H8 U* T8 \% _# b7 I
        while(I2C_SDA && (ack == 1))//等待应答,也就是等待从设备把I2C_SDA拉低
2 l) A9 S4 H3 p) Y5 }0 q        {& s7 A2 y& Q+ x/ t! P: D, z4 [
                b++;( |7 s8 ~2 p/ J2 n& \# F. s
                if(b > 200)         //如果超过200us没有应答发送失败,或者为非应答,表示接收结束
7 G! H  P( \) y                {
2 I1 q8 Z7 x+ T! i$ r9 F0 t# V                        I2C_SCL = 0;
: V0 N4 {( ]9 i3 g+ Z                        I2C_Delay10us();4 P- D8 d* ]% D  M9 s$ A
                        return 0;# V. b& S. v. a2 t! y8 _) ]2 Z2 t
                }
* E; _0 j+ e. H* O+ U2 A; \        }
. Y4 u" w; R; p, e6 I' }8 {, }7 l' q5 t, m; F
        I2C_SCL = 0;  _) @2 @7 f' Z) M0 B# @
        I2C_Delay10us();
4 G4 v6 r% ^. p7 S7 p3 j$ A         return 1;                / d/ W* w8 _, I; R' ]2 |
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-21 18:56 , Processed in 0.125000 second(s), 24 queries , Gzip On.

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

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

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