• i2c_smbs 函数


    i2c_smbus系列函数有:

    
    s32 i2c_smbus_read_byte(const struct i2c_client *client);
    s32 i2c_smbus_write_byte(const struct i2c_client *client, u8 value);
    s32 i2c_smbus_read_byte_data(const struct i2c_client *client, u8 command);
    s32 i2c_smbus_write_byte_data(const struct i2c_client *client,u8 command, u8 value);
    s32 i2c_smbus_read_word_data(const struct i2c_client *client, u8 command);
    s32 i2c_smbus_write_word_data(const struct i2c_client *client,u8 command, u16 value);
    s32 i2c_smbus_read_block_data(const struct i2c_client *client,u8 command, u8 *values);
    s32 i2c_smbus_write_block_data(const struct i2c_client *client,u8 command, u8 length, const u8 *values);
    s32 i2c_smbus_read_i2c_block_data(const struct i2c_client *client,u8 command, u8 length, u8 *values);
    s32 i2c_smbus_write_i2c_block_data(const struct i2c_client *client,u8 command, u8 length, const u8 *values);
    
    1. i2c_smbus_read_byte()、i2c_smbus_write_byte()
      这两个函数是没有太大意义的,如果是read,则连读的基地址都没有,如果是write,则是简单将value发送过去了,设备或许都不知道这是发送写的基地址还是写的数据,这两个函数有点类似于i2c_master_recv()、i2c_master_send()。

    2. i2c_smbus_read_byte_data()、i2c_smbus_write_byte_data()
      首先是read,如果是read将传送两个msg,第一个msg用来传送读的基地址,第二个msg用来读取数据。
      然后是write,write只传送一个msg,只发送一个msg不好的地方是只能单方向传输,比如写就只能写,读就只能读(注意读的基地址是写方向)。但是这里为什么可以只传送一个msg呢,因为传输的方向并没有改变,包括写基地址,写数据都是写方向,但是写数据的长度为2,写基地址还是command,写的数据为value。

    3. i2c_smbus_read_word_data()、i2c_smbus_write_word_data()
      同上面类似,只是一次读写两个字节。

    4. i2c_smbus_read_block_data()、i2c_smbus_write_block_data()
      读注意,这里并没有指定读数据的长度。

    5. i2c_smbus_read_i2c_block_data()、i2c_smbus_write_i2c_block_data()
      同上面不一样的是,read时有长度指定。
      而write同上面不同的是,i2c_smbus_write_block_data()函数会将发送数据的长度一起发送给设备,而这里则不会。

    上面的一系列函数最终都是调用的i2c_smbus_xfer()函数,可以自己构造i2c_msg,然后调用i2c_transfer来发送数据。

  • 相关阅读:
    Codeforces Round #470 (rated, Div. 2, based on VK Cup 2018 Round 1)C. Producing Snow
    day69 Django--Form组件
    day68 Django--中间件
    day67 Cookie&Session
    day66 AJAX
    day62 Django框架--视图系统&路由系统
    day65 django--ORM3
    day63 django--ORM
    Day64 django--ORM2
    Day61 Django框架--模板语言2
  • 原文地址:https://www.cnblogs.com/chay/p/10615148.html
Copyright © 2020-2023  润新知