找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

关于I2C读写问题

[复制链接]

3

主题

4

帖子

95

积分

二级会员(20)

Rank: 2Rank: 2

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

EDA365欢迎您!

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

x
下面是一个I2C写函数,但是始终不能理解这个函数里面的“I2C_SDA = dat >> 7;”这句话,请高手解答一下!谢谢!!!!" P4 t4 G' M% K
8 O) \" A* S, H' v) Z& B6 {$ F# ~
uchar I2C_SendByte(uchar dat, uchar ack)/ F& M* O( H6 O
{
$ t, W( j- c$ t" A        uchar a = 0,b = 0;//最大255,一个机器周期为1us,最大延时255us。" B" m8 L: Z9 }3 d. H
                       
0 M3 t, r0 |, B4 y9 y5 ~        for(a=0; a<8; a++)//要发送8位,从最高位开始9 J# A% z, o) S; C4 K6 ~
        {( q5 ?) i; p- d$ c2 i6 R
                I2C_SDA = dat >> 7;         //起始信号之后I2C_SCL=0,所以可以直接改变I2C_SDA信号! [3 C' O5 I+ K& A6 F5 [6 C- d+ ~
                dat = dat << 1;
* W: T& |  U* l, k1 G$ ?                I2C_Delay10us();
* C- [* Z1 t% t                I2C_SCL = 1;: d- l/ B) d6 E% v! d3 ]
                I2C_Delay10us();//建立时间>4.7us( a. Z- ~- u9 Z. u
                I2C_SCL = 0;
1 k  Q! k, i' w( _3 w; f                I2C_Delay10us();//时间大于4us                . r5 u% X8 R4 b1 `# r$ w% a
        }3 N. B2 m* S. V  @4 b6 [
' n9 E" k% r" w6 x# o
        I2C_SDA = 1;
" Z( b. W9 w; B# L8 {* W" @1 E        I2C_Delay10us();
* w! B6 q6 B" N5 @+ a        I2C_SCL = 1;. Y# b4 N2 v: L$ w# Y
        while(I2C_SDA && (ack == 1))//等待应答,也就是等待从设备把I2C_SDA拉低, v% \9 f; O' H+ |! ^
        {
' W3 r" P: S; |, L- ]                b++;
  s( I9 F+ [! H* z# [                if(b > 200)         //如果超过200us没有应答发送失败,或者为非应答,表示接收结束8 y$ g5 }' F$ p+ E( }: ]1 c& M/ q' Y
                {$ H1 l( _# l0 H: U* C% K
                        I2C_SCL = 0;: z6 v! x* K6 g7 k5 }
                        I2C_Delay10us();- m. L, Z$ S3 i6 G& M7 c
                        return 0;7 h& d4 x( p( f7 N; [6 J% Q
                }: h' j6 N0 ]1 v8 h; k0 j. {
        }& H3 \: P* J$ S" K" v- Q. [

( M* x. h+ P* e% j( A: D/ B# Y        I2C_SCL = 0;* X" x* n* `; G9 o5 C
        I2C_Delay10us();9 y6 l7 [: b& D( d
        return 1;               
5 d! g0 R+ l6 ?; f) W}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2025-2-2 07:48 , Processed in 0.056198 second(s), 33 queries , Gzip On.

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

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

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