查看: 1770|回复: 0

【赚周年币】+技术贴+Fireduino的IIC接口学习(一)

[复制链接]
  • TA的每日心情
    奋斗
    2024-9-22 22:20
  • 签到天数: 944 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2016-12-27 12:46:56 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 9robot 于 2016-12-27 12:53 编辑

    I2C是一种多向控制总线,也就是说多个芯片可以连接到同一总线结构下,同时每个芯片都可以作为实时数据传输的控制源。
    SCL – 时钟线
    SDA – 数据线
    I2C总线是各种总线中使用信号线最少,并具有自动寻址、多主机时钟同步和仲裁等功能的总线。因此,使用I2C总线设计计算机系统十分方便灵活,体积也小,因而在各类实际应用中得到广泛应用。
    I2C串行总线一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。所有接到I2C总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。任何设备都可以作为主设备,也可以作为从设备,主要看发起传输的是哪一个设备。由于I2C有寻址、起始、应答、结束等等机制,所以很容易区分主从设备。

    Fireduino Wire
    Fireduino I2C / TWI 设备库允许Fireduino通过I2C 接口与外设备通信,Fireduino 有2个 I2C 接口,且 只支持Master 模式。
    以下是Fireduino的IIC的API函数,这部分内容在Fireduino的网站上有,
    http://wiki.t-firefly.com/index.php/Fireduino/wire
    Fireduino Wire APIbegin()  
    说明       对库进行初始化,加入I2C总线作为主机,通常只被调用一次。
    语法       Wire.begin()
    参数       无
    返回值    无


    requestFrom(...)   
    说明        向从机请求数据。这些字节可以通过以下两个函数进行检索available()和 read()  
    语法        Wire.requestFrom(addr,number);
    参数        address :7比特地址,向该地址发送请求      
                  quantity:请求的字节个数
    返回值     返回的字节个数


    beginTransmission(address)  
    说明        根据已给地址,开始向I2C的从机进行传输。随后,调用函数 write() 对传输的字节进行排列,调用函数                   endTransmission() 进行传输 。
    语法        Wire.beginTransmission(addr);
    参数        address:传输指向的设备的7位比特地址
    返回值     无


    endTransmission()   
    说明        停止对从机的传输,传输开始时调用 beginTransmission(),传输的字节由 write() 排列。
    函数       Wire.endTransmission()
    参数       无
    返回值    无


    write()  
    说明        由从机中写入数据,回应主机的请求,或排列将要从主机传输给从机的字节(在beginTransimission()和                     endTransmission()中调用)。
    语法        Wire.write(value)      
                  Wire.write(string)      
                  Wire.write(data,length)
    参数       val: 以单个字节形式发送的值
                  str: 以一串字节的形式发送的字符串      
                  data:以字节形式发送的数组
                  length:传输的字节数
    返回值    byte:write()将返回写入的字节数,但是否读取这个返回值可判断是否写入buf


    available()
    说明        返回可被调用的字节数 。调用函数 requestFrom()后,可在主机中调用此函数。
    语法        Wire.available();
    参数        无
    返回值     可读取的字节数。


    read()   
    说明        读取一个由从机发送给主机的字节,在调用 requestFrom() 函数后。   
    语法        Wire.read()   
    参数        无   
    返回值     返回下一个接收到的字节

    评分

    参与人数 1 +15 收起 理由
    loveeeboard + 15

    查看全部评分

    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-11-23 09:24 , Processed in 0.138495 second(s), 19 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.