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

关于I2C读写问题

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
下面是一个I2C写函数,但是始终不能理解这个函数里面的“I2C_SDA = dat >> 7;”这句话,请高手解答一下!谢谢!!!!8 S2 N# [; _8 f1 R: K% ?

0 _5 e4 T5 ~1 V/ @3 F# auchar I2C_SendByte(uchar dat, uchar ack)
9 N! t: w' Y. r3 ^) _7 x: ?{
! W( I- c2 O) \7 u! Z0 Z* o        uchar a = 0,b = 0;//最大255,一个机器周期为1us,最大延时255us。
9 u/ q) K* T# K                       
" ~  J& h: _( X8 _; l        for(a=0; a<8; a++)//要发送8位,从最高位开始. n" `; m( E4 N& j* |. |
        {
- o, l& ^. |4 O  G, f2 _7 {3 t8 C                I2C_SDA = dat >> 7;         //起始信号之后I2C_SCL=0,所以可以直接改变I2C_SDA信号# ?) M1 E, c) Y; X
                dat = dat << 1;
2 p0 T. P; v  |                I2C_Delay10us();$ G& a; f) I+ v& J; T5 O( k
                I2C_SCL = 1;6 w2 U0 O6 K' u: ], H( M9 U/ F
                I2C_Delay10us();//建立时间>4.7us4 O0 y+ o" T+ z" Z
                I2C_SCL = 0;( H7 V# W/ G, G9 G/ l  W5 k
                I2C_Delay10us();//时间大于4us                % p) X9 {9 k! `7 H
        }) m' F; `) g, _) W# X; V4 D# n' h$ V

- A0 l( K& _8 q9 H        I2C_SDA = 1;
) w6 T% l5 K1 G+ R  ^0 W4 X        I2C_Delay10us();
' z' t( N& A) a. l) O        I2C_SCL = 1;
  Z6 ?$ [7 ^+ C  |        while(I2C_SDA && (ack == 1))//等待应答,也就是等待从设备把I2C_SDA拉低& x/ ^: ~! \# Q; K9 [
        {# L& u; ]% S: U4 w" z
                b++;4 z5 X% P+ c+ G, l: u  |. _  [
                if(b > 200)         //如果超过200us没有应答发送失败,或者为非应答,表示接收结束
7 u% S3 x0 W) Y$ b* m                {; A9 }1 o/ q* W2 U
                        I2C_SCL = 0;
# A8 A2 t) t8 J                        I2C_Delay10us();
. l' w- ]/ t0 I& b$ s' L                        return 0;
  I  F: i" o- {' F0 K3 Y! {3 e                }
* v- S) v  J4 p6 t/ R, h0 m        }
: ^% S8 t* R/ M  S
( C& S0 v8 `6 ~        I2C_SCL = 0;
( A) _* k; O" n6 G        I2C_Delay10us();, @. y2 d, I& X/ Z2 T" A( ]$ b
        return 1;                " D; @' F8 Z, G% G; r& i; E
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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