文章目录

  • I2C硬件电路原理图
  • I2C 简介
  • 添加相应的文件并添加进工程文件
  • I2C驱动程序结构
  • I2C驱动程序分析
  • LM75A温度传感器电路原理图
  • LM75A温度传感器驱动程序分析

杨桃32学习笔记,本文图片文字皆为转述

I2C硬件电路原理图


I2C要点

I2C总线是板级总线,连接线一般不超2米。
电路连接:两线总线连接,1~10K上拉电阻,复用开漏模式。
器件地址:每个器件都有唯一地址(7位16进制数),最多127个器件地址,新版I2C规范中最大器件地址数量可达1023个。
所有设备与单片机需要共地。

杨桃电子开发版中,将oled屏幕的从设备地址定为0x78,0x9e是温度传感器的设备地址。


I2C 简介





添加相应的文件并添加进工程文件



在工程文件夹LIB下添加stm32f10x_i2c.c

在工程文件夹Basic下添加i2c.c

在工程文件夹Hardware文件夹下添加lm75a.c


I2C驱动程序结构



接下来编写的i2c器件这里指的是温度传感器,也都是调用以上函数来完成。如下图

I2C驱动程序分析

i2c.h

#ifndef __I2C_H
#define __I2C_H
#include "sys.h"#define I2CPORT       GPIOB   //定义IO接口
#define I2C_SCL     GPIO_Pin_6  //定义IO接口
#define I2C_SDA     GPIO_Pin_7  //定义IO接口#define HostAddress 0xc0    //总线主机的器件地址
#define BusSpeed    200000  //总线速度(不高于400000)void I2C_Configuration(void);
void I2C_SAND_BUFFER(u8 SlaveAddr, u8 WriteAddr, u8* pBuffer, u16 NumByteToWrite);
void I2C_SAND_BYTE(u8 SlaveAddr,u8 writeAddr,u8 pBuffer);
void I2C_READ_BUFFER(u8 SlaveAddr,u8 readAddr,u8* pBuffer,u16 NumByteToRead);
u8 I2C_READ_BYTE(u8 SlaveAddr,u8 readAddr);#endif

i2c.c
初始化

发送一个字节数据

发送一个字节数据流程:
发送开始信号
等待完成
发送从器件地址及状态(写入)
等待完成
发送从器件内部寄存器地址
等待完成
发送要写入的内容
等待完成
发送结束信号



读取一个字节数据

读取一个字节数据流程:
判断总线是否繁忙
发送起始信号
等待操作完成
发送器件地址
等待操作完成
开启i2c功能
发送器件子地址
主机允许从器件产生开始信号 向主机发送数据 也就是主机开启接收
等待完成
给出器件地址
等待接收数据 收到数据则跳出 没有收到一直等待
最后有一个数据时关闭应答位
最后一个数据时使能停止位
接收数据存放到变量a中


发送和读取多字节数据

LM75A温度传感器电路原理图


LM75A温度传感器驱动程序分析






根据上表可知,掉电模式相关位。




例如D15 D11 D8为0 则意味着-9度

重新返回程序对应理解

STM32-I2C总线驱动程序分析相关推荐

  1. omap3630 linux i2c总线驱动分析,OMAP3630 Linux I2C总线驱动分析

    4 OMAP3630 I2C device驱动在Linux内核中,I2C device驱动位于drivers/i2c/chips目录下,可以看到该目录下有很多相关的device驱动,这里以xxxx项目 ...

  2. Linux设备驱动---OMAP3630 Linux I2C总线驱动分析(2)

    4 OMAP3630 I2C device驱动     在Linux内核中,I2C device驱动位于drivers/i2c/chips目录下,可以看到该目录下有很多相关的device驱动,这里以x ...

  3. OMAP3630 Linux I2C总线驱动分析(2)

    4 OMAP3630 I2C device驱动     在Linux内核中,I2C device驱动位于drivers/i2c/chips目录下,可以看到该目录下有很多相关的device驱动,这里以x ...

  4. i.MX6ULL终结者Linux I2C驱动实验IMX6ULL的I2C总线驱动分析

    在上一节中我们了解了I2C框架分为I2C核心.I2C总线驱动和I2C设备驱动三部分.其中I2C总线驱动就是SOC的I2C控制器驱动,一般来说都是SOC厂家实现好的.而I2C设备驱动是用户根据自己不同的 ...

  5. OMAP3630 Linux I2C总线驱动分析(1)

    1 Linux I2C驱动架构 Linux下I2C驱动的架构图如下: 图1.1 Linux下I2C驱动架构 如上图所示,每条I2C总线会对应一个adapter,而每条I2C总线上则可以有多个 clie ...

  6. Linux设备驱动---OMAP3630 Linux I2C总线驱动分析(1)

    原文地址:http://blog.csdn.net/kellycan/article/details/6394737 1 Linux I2C驱动架构 Linux下I2C驱动的架构图如下: 图1.1 L ...

  7. OMAP3630 Linux I2C总线驱动分析

    1 Linux I2C驱动架构 Linux下I2C驱动的架构图如下: 图1.1 Linux下I2C驱动架构 如上图所示,每条I2C总线会对应一个adapter,而每条I2C总线上则可以有多个 clie ...

  8. STM32 I2C总线从机发送接收源码下载,有图有真相!

    功能: 1.接收主机发送的数据并储存在内部缓冲区,然后通过串口打印输出: 2.主机读取数据时,将内部缓冲区中的数据返回: 3.发送接收都采用中断方式实现,经验证基本上没什么问题: 串口打印输出的数据: ...

  9. linux下的iic驱动程序,实战经验吐血推荐:怎样在Linux环境下轻松实现基于I2C总线的EEPROM驱动程序...

    4开发实例本文引用地址:http://www.eepw.com.cn/article/279351.htm Linux内核已经提供了I2C驱动中所需要的基本模块.i2c-core.i2c-dev和i2 ...

最新文章

  1. iOS从零开始学习直播之2.采集
  2. python【蓝桥杯vip练习题库】BASIC-5查找整数
  3. 深度学习与神经网络关系(BP网络【浅层】与深层网络)
  4. 12、oracle数据库下的存储过程和函数
  5. 使Docker容器拥有可被宿主机以外的机器直接访问的独立IP
  6. 计算机职业素养结尾,IT职业素养读后感
  7. 结构梁配筋最牛插件_结构分析|结构抗震概念——强柱弱梁
  8. 惊呼!633个中国城市数据调查:五分之二的城市在流失人口
  9. 湘潭大学计算机网络安全学院,省委网信办与湘潭大学共建网络空间安全学院签约暨揭牌仪式举行...
  10. 发票专用驱动sjz_税务局紧急提醒!10月31日前,不能领票,不能勾选!11月1日后,发票开具将大不同!...
  11. 计算机安全模式怎么消除计,win10如何解除安全模式,教您如何解除电脑安全模式...
  12. 在Excel中批量生成条形码
  13. 高效工具-requirement生成和配置
  14. 软件开发工具【七】 之 Eclipse入门
  15. C|倒三角(trangle)
  16. 昨天公司年会抽奖,居然抽中了特等奖
  17. Python制作专属有声小说(调用百度语音合成接口)
  18. 【java】-XX:-OmitStackTraceInFastThrow只有空指针,没有堆栈信息
  19. 关于小程序中保留小数点后几位的问题
  20. 2022年全国职业院校技能大赛(中职组)网络安全竞赛试题

热门文章

  1. 机器学习 | 图像检索开源项目合集
  2. opencv Mat 函数--CheckVector
  3. php传递数据给javascript
  4. PySCF :基于Python的化学模拟框架
  5. RDKit | 基于Lipinski规则过滤化合物库
  6. 【错误归纳】E: Sub-process /usr/bin/dpkg returned an error code (1)子进程 已安装 post-installation 脚本 返回了错误号 1
  7. pycharm windows 服务器_环境配置 | Pycharm远程开发的环境配置
  8. iphone11边框喇手问题_苹果全系 iPhone 11 频频翻车,问题频频呈现,你的新机占几点...
  9. python异常处理语句编程题_一篇文章让你掌握Python异常处理所有知识点,记得收藏...
  10. 中科院基因组所高远组诚聘生物信息学方向助理/副研及博士