首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Linux下I2C设备驱动开发和实现 03

Linux下I2C设备驱动开发和实现 03

因此我们的驱动程序的开发主要集中在TMP75设备驱动程序这一层,用来实现针对TMP75设备的数据格式的解释以及实现一些专用的功能。
  根据TMP75的具体寄存器地址和功能定义:
      #define TMP75_REG_TEMP          0x00    //温度寄存器地址
    #define TMP75_REG_CONF          0x01    //配置寄存器地址
    #define TMP75_REG_TEMP_LOW  0x02    //低温阈值寄存器地址
    #define TMP75_REG_TEMP_HIGH 0x03    //高温阈值寄存器地址
  定义一个TMP75_data结构体和一系列函数实现总线初始化时的设备检测加载、设备删除时的数据操作。
  struct TMP75_data {
      struct i2c_client       client;
      struct semaphore    update_lock;
      char        valid;     /* !=0 if following fields are valid */
      unsigned long  last_updated; /* In jiffies */
      u16         temp_input;   /* Register values */
      u16         temp_max;
      u16         temp_hyst;
};
       static int TMP 75_attach_adapter(struct i2c_adapter *adapter);
     static int TMP 75_detect(struct i2c_adapter *adapter,int address,int kind);
     static void TMP 75_init_client(struct i2c_client *client);
     static int TMP 75_detach_client(struct i2c_client *client);
     static int TMP 75_read_value(struct i2c_client *client,u8 reg);
     static int TMP 75_write_value(struct i2c_client *client,u8 reg,u16 value);
     static struct TMP 75_data *tmp75_update_device(struct device *dev);
返回列表