STM32-I2C总线驱动程序分析
文章目录
- 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总线驱动程序分析相关推荐
- omap3630 linux i2c总线驱动分析,OMAP3630 Linux I2C总线驱动分析
4 OMAP3630 I2C device驱动在Linux内核中,I2C device驱动位于drivers/i2c/chips目录下,可以看到该目录下有很多相关的device驱动,这里以xxxx项目 ...
- Linux设备驱动---OMAP3630 Linux I2C总线驱动分析(2)
4 OMAP3630 I2C device驱动 在Linux内核中,I2C device驱动位于drivers/i2c/chips目录下,可以看到该目录下有很多相关的device驱动,这里以x ...
- OMAP3630 Linux I2C总线驱动分析(2)
4 OMAP3630 I2C device驱动 在Linux内核中,I2C device驱动位于drivers/i2c/chips目录下,可以看到该目录下有很多相关的device驱动,这里以x ...
- i.MX6ULL终结者Linux I2C驱动实验IMX6ULL的I2C总线驱动分析
在上一节中我们了解了I2C框架分为I2C核心.I2C总线驱动和I2C设备驱动三部分.其中I2C总线驱动就是SOC的I2C控制器驱动,一般来说都是SOC厂家实现好的.而I2C设备驱动是用户根据自己不同的 ...
- OMAP3630 Linux I2C总线驱动分析(1)
1 Linux I2C驱动架构 Linux下I2C驱动的架构图如下: 图1.1 Linux下I2C驱动架构 如上图所示,每条I2C总线会对应一个adapter,而每条I2C总线上则可以有多个 clie ...
- Linux设备驱动---OMAP3630 Linux I2C总线驱动分析(1)
原文地址:http://blog.csdn.net/kellycan/article/details/6394737 1 Linux I2C驱动架构 Linux下I2C驱动的架构图如下: 图1.1 L ...
- OMAP3630 Linux I2C总线驱动分析
1 Linux I2C驱动架构 Linux下I2C驱动的架构图如下: 图1.1 Linux下I2C驱动架构 如上图所示,每条I2C总线会对应一个adapter,而每条I2C总线上则可以有多个 clie ...
- STM32 I2C总线从机发送接收源码下载,有图有真相!
功能: 1.接收主机发送的数据并储存在内部缓冲区,然后通过串口打印输出: 2.主机读取数据时,将内部缓冲区中的数据返回: 3.发送接收都采用中断方式实现,经验证基本上没什么问题: 串口打印输出的数据: ...
- linux下的iic驱动程序,实战经验吐血推荐:怎样在Linux环境下轻松实现基于I2C总线的EEPROM驱动程序...
4开发实例本文引用地址:http://www.eepw.com.cn/article/279351.htm Linux内核已经提供了I2C驱动中所需要的基本模块.i2c-core.i2c-dev和i2 ...
最新文章
- iOS从零开始学习直播之2.采集
- python【蓝桥杯vip练习题库】BASIC-5查找整数
- 深度学习与神经网络关系(BP网络【浅层】与深层网络)
- 12、oracle数据库下的存储过程和函数
- 使Docker容器拥有可被宿主机以外的机器直接访问的独立IP
- 计算机职业素养结尾,IT职业素养读后感
- 结构梁配筋最牛插件_结构分析|结构抗震概念——强柱弱梁
- 惊呼!633个中国城市数据调查:五分之二的城市在流失人口
- 湘潭大学计算机网络安全学院,省委网信办与湘潭大学共建网络空间安全学院签约暨揭牌仪式举行...
- 发票专用驱动sjz_税务局紧急提醒!10月31日前,不能领票,不能勾选!11月1日后,发票开具将大不同!...
- 计算机安全模式怎么消除计,win10如何解除安全模式,教您如何解除电脑安全模式...
- 在Excel中批量生成条形码
- 高效工具-requirement生成和配置
- 软件开发工具【七】 之 Eclipse入门
- C|倒三角(trangle)
- 昨天公司年会抽奖,居然抽中了特等奖
- Python制作专属有声小说(调用百度语音合成接口)
- 【java】-XX:-OmitStackTraceInFastThrow只有空指针,没有堆栈信息
- 关于小程序中保留小数点后几位的问题
- 2022年全国职业院校技能大赛(中职组)网络安全竞赛试题
热门文章
- 机器学习 | 图像检索开源项目合集
- opencv Mat 函数--CheckVector
- php传递数据给javascript
- PySCF :基于Python的化学模拟框架
- RDKit | 基于Lipinski规则过滤化合物库
- 【错误归纳】E: Sub-process /usr/bin/dpkg returned an error code (1)子进程 已安装 post-installation 脚本 返回了错误号 1
- pycharm windows 服务器_环境配置 | Pycharm远程开发的环境配置
- iphone11边框喇手问题_苹果全系 iPhone 11 频频翻车,问题频频呈现,你的新机占几点...
- python异常处理语句编程题_一篇文章让你掌握Python异常处理所有知识点,记得收藏...
- 中科院基因组所高远组诚聘生物信息学方向助理/副研及博士