QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
goto3d 说: 此次SW竞赛获奖名单公布如下,抱歉晚了,版主最近太忙:一等奖:塔山817;二等奖:a9041、飞鱼;三等奖:wx_dfA5IKla、xwj960414、bzlgl、hklecon;请以上各位和版主联系,领取奖金!!!
2022-03-11
全站
goto3d 说: 在线网校新上线表哥同事(Mastercam2022)+虞为民版大(inventor2022)的最新课程,来围观吧!
2021-06-26
查看: 1610|回复: 5
收起左侧

[讨论结束] 想学习I2C的编程,不知如何入手?

 关闭 [复制链接]
发表于 2008-6-19 14:50:34 | 显示全部楼层 |阅读模式

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

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

x
我想学习I2c的编程,不知如何入手,哪位能否给点儿指导,谢谢
4 \1 L  m; m0 X/ z' w5 x- o7 G% Y* I1 ?
[ 本帖最后由 zhous_ch 于 2008-6-19 20:06 编辑 ]
发表于 2008-6-19 21:02:21 | 显示全部楼层
你说的是不是i2c串行总线啊,还是什么,恕我孤陋寡闻
 楼主| 发表于 2008-6-20 08:13:48 | 显示全部楼层
就是i2c总线,是不是有些厂商提供的程序可以直接调用
发表于 2008-6-20 18:52:05 | 显示全部楼层
看看i2c通信协议,然后看看一些单片机上的i2c程序。
发表于 2008-8-1 16:09:00 | 显示全部楼层
就是啊,首先你要看懂I2C协议,在就是根据某个芯片,看一下控制程序就大概可以了!下面就是24C02的读写程序:" w2 p, F  X. r8 O9 @
# N0 T% |& U4 _
& [1 P0 t. M- c+ E  @7 ?  k
  #define uchar unsigned char
! h( N( ]9 B- i  #define uint unsigned int
+ r$ [9 R: ?. U  #include <reg52.h>
# u, S9 E' q) r; E1 g  #include <stdio.h>
% l4 U" _1 z" ?! H& `) K/ J  #include <absacc.h>
" [- P2 r6 ?6 O. |6 N  sbit scl=P3^5;  //24c02 SCL
+ P( Z+ `& P, e* D3 A( Y! L: E  sbit sda=P3^4;  //24c02 SDA
/ E! W  W0 r2 k8 y8 T" l  sbit DOG=P1^7;  //狗
' u" \8 X. s& w4 S0 r7 B4 C  uchar x24c02_read(uchar address);  //从24c02的地址address中读取一个字节数据
: u6 \; e' Q( Y* J4 j  void x24c02_write(uchar address,uchar info);  
- `/ s( U2 ~, l$ d& C  //向24c02的address地址中写入一字节数据info
0 J6 D: l( X5 L  void x24c02_init();   //24c02初始化子程序
! \3 x- S/ i' r5 ]0 ~  void delay1(uchar x);
, H) d  V4 ]0 E0 T" g, n. y) d) g  X  void flash();1 }+ P! e+ D; g1 N, W5 e+ a
  void x24c01_init();: ?) |7 h  |2 G2 s5 I
  void start();+ g( o8 d- \+ o! n  G) W
  void stop();  h% G+ ]6 S3 ^# t# K0 O0 a
  void writex(uchar j);
& n% r  t5 y# Q7 v) M  uchar readx();; y% }1 M. B  u& o# w
  void clock();+ n- C) ~  e* }5 j$ d# E' R1 _5 `
  void delay1(uchar x)
+ H' F2 b, b1 h8 @4 N, n# [) E  {% a  r4 u2 o: l; C; \  ?
     uint i;
3 a4 B' K1 K& A& h% o     for(i=0;i<x;i++);
- ?( ~  c" S3 c* A8 U# e' _( w     DOG=~DOG;
8 `+ P' e7 V4 i7 z4 u8 m  }
, c& j* a; p. g" Q- m6 x! h5 u2 I9 k  void flash()* s5 D/ M6 V- X& I$ ?' l. D
  {
! o6 G  t0 `2 w* d7 O% l, c     uchar u;
% K' [, c, X2 O* B2 e0 R9 G     DOG=~DOG;
5 N* \* f1 u4 s7 N+ W, W2 s  }
/ ^, F& _1 _& r$ @, ?- G2 `  void x24c02_init()
% B: n0 ^/ U1 J. k+ K% q  {
2 n! [  p& B1 R( S5 N     scl=1; flash(); sda=1; flash();
! }$ h" @; s6 n" L- R  }
+ m( o$ c( ^" d  void start()0 X& u& \) n5 e3 n( p0 G  `! k
  {+ b/ y3 V9 h: F/ M
     sda=1; flash(); scl=1; flash(); sda=0; flash(); scl=0; flash();1 a2 C" K7 e+ q3 q3 T
  }
$ f. a$ J+ v7 h2 D5 ^4 P  void stop()
4 R2 Q  w) B  L% p1 E' V! |+ U  {$ n8 s5 K( ?+ I& \' C
     sda=0; flash(); scl=1; flash(); sda=1; flash();
/ l( Z# P; e& M+ V% f, _  }  i; Z  i& ?  C4 v
  void writex(uchar j)  Q8 ~5 e4 h8 ?* T6 {
  {3 S: F! S5 n1 |+ S4 c
     uchar i,temp;
; ?0 n9 {; F5 a     temp=j;* @0 }4 H5 n: D2 {
     for (i=0;i<8;i++){
& d; U2 V- X/ Q* v8 v9 w- X        temp=temp<<1; scl=0; flash(); sda=CY; flash(); scl=1;
' ]) I2 a. K; q5 d  flash();
. p8 C* k7 u5 j$ [" n: S     }
; P3 }% c& t, C: f$ C! q6 r     scl=0; flash(); sda=1; flash();6 N: d- N( _- q4 o( g$ G1 }  a
  }; P/ x1 f) `! M: h
  uchar readx()% q! m% I6 u( l8 L. k
  {
* {" E% N$ l& j  R     uchar i,j,k=0;$ L( \  c, R0 G% l& @* Z
     scl=0; flash(); sda=1;
$ z" A% F5 D3 f5 _; ]' x/ Y     for (i=0;i<8;i++){3 }, Q! r5 F3 B/ L! ~5 e3 Y
        flash(); scl=1; flash();
$ O* n5 j$ U. z* s* ^$ m/ K        if (sda==1) j=1;" u# Q( A& q( ^6 Y# Y# p
        else j=0;$ ~: Y- P. B' C9 ^7 s
        k=(k<<1)|j; scl=0;
) v; N" l% Y1 O# F1 R4 Z     }
! S- ^# ^1 ?: d" }! y     flash(); return(k);
/ y7 W/ @# U0 f3 X% G- c  }
' ]( z  i4 v" J+ p& a  void clock()
$ n7 c: m7 v( A5 k9 h  {$ v" i. o5 o: a' T2 }' Q( q
     uchar i=0;' H# b; P+ M: Q$ ]8 f) G  \$ Q7 o
     scl=1; flash();; r( ~; Z2 e* Y; W9 X9 Y+ p/ K
     while ((sda==1)&&(i<255))i++;
; C( C: `2 T5 G5 {! A     scl=0; flash();
. m1 S( [- H, N* T+ h9 f& }  }3 c4 v# F& m# T- {# M! i5 p2 H4 g
  uchar x24c02_read(uchar address): h3 h1 n7 Z5 g+ p  r% ~! o3 V& k
  {- p/ Z4 d7 p- j6 L
     uchar i;  Q& N. a, _! f4 u0 @# |& v
     start(); writex(0xa0);! _. y" ~# L! x9 K, q9 o, M7 d7 U
     clock(); writex(address);/ z" ^; h0 O8 t, O6 \7 H& |* R9 d( F
     clock(); start();
9 _3 {# Z( {6 U' @: o     writex(0xa1); clock();" X+ j, W: g" M) @3 X
     i=readx(); stop();
& ?: U) X8 d8 p     delay1(10);
& y) ^& n0 i/ |  S% q     return(i);8 a2 C8 w9 Q8 Z2 C/ O0 t) y
  }: I+ y" r% O* O9 J0 Y8 P
  void x24c02_write(uchar address,uchar info)% b3 k+ Y8 E7 k0 k/ k, i1 A
  {
1 V- Q! J$ @' P+ H1 Y     EA=0;
" d3 r# s* H) m" I! ~5 q     start(); writex(0xa0);" O) d& \$ Y4 J( \  z7 w
     clock(); writex(address);
5 s% ^) w- W1 u) b+ O( }     clock(); writex(info);
! X! v$ i9 Q+ K7 v9 |     clock(); stop();
' N7 f- k% K' N6 ~3 i     EA=1;
+ B" c3 b3 ?. ?4 D9 \+ n     delay1(50);, N% _* h, B# U; m2 g6 T
  }
发表于 2008-8-1 21:24:14 | 显示全部楼层
i2c 的软件模拟程序不难的,网上原程序多的是。5 m; e) K" h) Q/ c
不过你想学好还是找本讲协议的书看一下1 p) _6 F  ^+ K5 D- ]
I2C协议标准# e0 \; \- z( w% V* f* b" I' j) \
I2C协议标准.pdf (844.19 KB, 下载次数: 3)
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

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