版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1STM32原理及其应用2内部集成电路总线接口I2C
教学基本内容:I2C概述、应用实例。重点:I2C内部结构及相应的功能,了解各类寄存器。难点:熟练应用I2C库函数。本章主要教学要求:I2C结构及寄存器、库函数说明。3第一节I2C概述(了解)第二节
I2C结构及寄存器(理解)第三节库函数说明(重点)第四节应用实例(了解)4第一节I2C概述I²C总线是InterIntegratedCircuitBus的缩写,通常译为“内部集成电路总线”或“集成电路间总线”,简称为总线,I²C总线是一种高效、实用且可靠的双向二线串行数据传输结构总线。5一、ADC1.概念:ADC,Analog-to-DigitalConverter的缩写,指模/数转换器或者模数转换器,即A/D转换器,是将连续变化的模拟信号转换为离散的数字信号的器件。2.功能:通常的模数转换器是将一个输入电压信号转换为一个输出的数字信号。6二、
I2C接口具有4种工作模式:
从发送器模式;
从接收器模式;
主发送器模式;
主接收器模式。
7I²C设计可以由I²CEEPROM库函数程序设计实现可以通过以下6个步骤利用EEPROM库函数设计实现实现:新建工程添加C语言源文件修改C语言源文件添加库文件生成目标程序文件使用调试器运行目标程序GPIO仿真I²C库函数程序设计实现。1.添加C语言源文件2.修改C语言源文件3.添加库文件4.生成目标程序文件5.使用调试器运行目标程序9第二节
结构及寄存器
I²C由数据和时钟两部分组成,数据部分由数据寄存器、数据移位寄存器和数据控制等组成。时钟部分由控制状态器、控制逻辑电路、时钟控制器寄存器和时钟控制等组成。控制状态寄存器通过控制逻辑电路等控制时钟的行为。I²C方框图如图8-2。图8-2I²C方框图10I²C使用的GPIO引脚I²C使用的GPIO引脚见表8-1。I²C引脚GPIO引脚I2C1I2C2配置SDAPB7(PB9)(1)PB11复用开漏输出SCLPB6(PB8)(1)PB10复用开漏输出SMBALERTPB5PB12
表8-1I²C使用的GPIO引脚注:(1)括号中的引脚为复用功能引脚11寄存器偏移地址名称类型复位值说明0x00CR1读/写0x0000控制寄存器10x04CR2读/写0x0000控制寄存器20x08OAR1读/写0x0000自身地址寄存器10x0COAR2读/写0x0000自身地址寄存器20x10DR读/写0x00数据寄存器0x14SR1读/写0清除0x0000状态寄存器10x18SR2读0x0000状态寄存器20x1CCCR读/写0x0000时钟控制寄存器
0x20
TRISE
读/写
0x0002上升时间寄存器(主模式)标准模式:TRISE=int(100ns*FREQ+1)快速模式:TRISE=int(300ns*FREQ+1)I²C需要通过9个寄存器进行操作,见表8-2(I2C1和I2C2的基地址分别为0x40005400和0x40005800)。表8-2I²C寄存器12第三节库函数说明(**)
常用I²C库函数在stm32f10_i2c.h中声明如下:voidI2C_Init(I2C_TypeDef*I2Cx,I2C_IninTypeDef*I2C_InitStruct);voidI2C_Cmd(I2C_TypeDef*I2Cx,FunctionalstateNewstate);voidI2C_GenerateSTART(I2C_TypeDef*I2Cx,FunctionalstateNewstate)voidI2C_GeneratesTOP(I2C_TypeDef*I2Cx,FunctionalstateNewState)voidI2CAcknowledgeConfig(I2C_TypeDef*I2Cx,FunctionalStateNewState);voidI2C_SendData(12C_TypeDef*I2Cx,u8Data)u8I2C_ReceiveData(I2C_TypeDef*I2Cx);voidI2C_Send7bitAddress(I2C_TypeDef*I2Cx,u8Address,u8I2C_Direction);u16I2C_ReadRegister(I2CTypeDef*I2Cx,u8I2CRegister);voidI2C_SoftwareResetCmd(I2C_TypeDef*I2Cx,FunctionalstateNewstate);u32I2C_GetLastEvent(I2C_TypeDef*I2Cx);ErrorStatusI2C_CheckEvent(I2C_TypeDef*I2Cx,u32I2C_EVENT);FlagStatusI2C_GetFlagStatus(I2C_TypeDef*I2Cx,u32I2CFLAG);voidI2C_ClearFlag(I2C_TypeDef*I2Cx,u3212C_FLAG);(1)初始化I²CvoidI2C_Init(I2C_TypeDef*I2Cx,I2C_InitTypeDef*I2C_Initstruct);参数说明:12Cx:I²C名称,取值是12C1或者12C2等
(2)使能I²CvoidI2C_Cmd(I2C_TypeDef*I2Cx,FunctionalStateNewState);参数说明:I2Cx:I²C名称,取值为I2C1或I2C2等NewState:I²C新状态,ENABL为允许,DISABLE为禁止I2Cx:I²C名称,取值为I2C1或I2C2等NewState:I²C新状态,ENABL(1)为允许,DISABLE(0)为禁止(3)产生起始条件voidI2C_GenerateSTART(12C_TypeDef*12Cx,FunctionalstateNewstate)参数说明:I2Cx:I²C名称,取值为I2C1或I2C2等NewState:I²C新状态,ENABL(1)为允许,DISABLE(0)为禁止(4)产生停止条件voidI2C_GeneratesTOP(I2C_TypeDef*I2Cx,FunctionalStateNewstate);参数说明:I2Cx:I²C名称,取值为I2C1或I2C2等NewState:I²C新状态,ENABL(1)为允许,DISABLE(0)为禁止
(5)配置应答voidI2C_AcknowledgeConfig(I2C_TypeDef*I2Cx,FunctionalStateNewstate);参数说明:I2Cx:I²C名称,取值为I2C1或I2C2等NewState:I²C新状态,ENABL(1)为允许,DISABLE(0)为禁止
(6)配置自身地址2voidI2C_OwnAddress2Config(I2C_TypeDef*I2Cx,u8Adress);参数说明:I2Cx:I²C名称,取值为I2C1或I2C2等Adress:7位自身地址(7)发送数据voidI2C_ReceiveData(I2C_TypeDef*I2Cx,u8Date);参数说明:I2Cx:I²C名称,取值为I2C1或I2C2等Data:8位发送数据
(8)接收数据u8I2C_ReceiveData(I2C_TypeDef*,I2Cx);参数说明:I2Cx:I²C名称,取值为I2C1或I2C2等
返回值:8位接收数据
(9)发送7位地址voidI2C_Send7bitAddress(I2c_TypeDef*I2Cx,u8Address,u8I2C_Direction);参数说明:I2Cx:I²C名称,取值为I2C1或I2C2等I2C_Direction:方向,在stm32f10x_i2c.h中定义如下:#defineI2C_Direction_Transmitter((u8)0x00)#defineI2C_Direction_Receiver((u8)0x00)(10)读寄存器u16I2C_ReadRegister(I2C_TypeDef*I2Cx,u8I2C_Register);参数说明:I2Cx:I²C名称,取值为I2C1或I2C2等I2C_Register:I²C寄存器返回值:寄存器值
(11)使能软件复位voidI2C_SoftwareResetCmd(I2C_Typedef*I2Cx,FunctionalStateNewState);参数说明:I2Cx:I²C名称,取值为I2C1或I2C2等NewState:软件复位新状态,ENABL(1)为允许,DISABLE(0)为禁止
(12)获取最后事件u32I2C_GetLastEvent(I2C_TypeDef*I2Cx,FunctionalStateNewState);参数说明:I2Cx:I²C名称,取值为I2C1或I2C2等
返回值:I²C事件
(13)检查事件ErrorStatus_I2C_CheckEvent(I2C_TypeDef*I2Cx,u32I2C_EVENT):参数说明:I2Cx:I²C名称,取值为I2C1或I2C2等I2C_EVENT:I²C事件返回值:事件状态,SUCCESS代表最后事件是检查事件,ERROR代表最后事件不是检查事件。
(14)获取I²C标志状态FlagStatusI2C_GetFlagStatus(I2C_TypeDef*I2Cx,u32I2C_FLAG);参数说明:I2Cx:I²C名称,取值为I2C1或I2C2等I2C_FLAG:I²C标志返回值:I²C标志状态。SET(1)代表置位,RESET(0)代表复位
(15)清除I²C标志voidI2C_ClearFlag(I2C2_TypeDef*I2Cx,u32I2C_FLAG);参数说明:I2Cx:I²C名称,取值为I2C1或I2C2等12C_FLAG:I²C标志
19第四节应用实例引脚功能方向说明引脚功能方向说明1A0输入器件地址05SDA双向串行数据2A1输入器件地址16SCL输入串行时钟3A2输入器件地址27WP输入写保护4GND-地8VCC输入电源(2.7~5.5V)以2线串行EEPROM24C02为例,讲述通过I
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年县乡教师选调考试《教育学》通关练习题和答案附答案详解(综合卷)
- 2026年一级注册建筑师之建筑材料与构造考试黑钻押题含答案详解【培优A卷】
- 2026年县乡教师选调考试《教育学》练习题(一)含答案详解(考试直接用)
- 2026年土地登记代理人之土地登记相关法律知识经典例题【综合题】附答案详解
- 水生动物苗种繁育工保密强化考核试卷含答案
- 普通过磷酸钙生产工安全规程水平考核试卷含答案
- 2025年压力管道检验员试题库
- 2025年押题宝典县乡教师选调考试《教育学》题库附答案详解【完整版】
- 2026年县乡教师选调考试《教育学》通关提分题库完整答案详解
- 2025年县乡教师选调考试《教育学》预测试题附参考答案详解(完整版)
- (二模)2026年合肥市高三第二次教学质量检测语文试卷(含答案)
- 广东省广州市白云广雅中学2024-2025学年八年级下学期数学期中考试卷(含答案)
- 2025年四川省烟草专卖局(公司)招聘考试笔试试题(含答案)1
- 2026年西部计划志愿者招募考试题库及答案
- 2025-2026人教版高中地理选择性必修二期末综合检测练习卷(含解析)
- 产业链数字化全链条协同机制研究
- 2026年水利工程质量检测员网上继续教育考试题库200道完整版
- GB/Z 141-2025蓄电池和蓄电池组起动用铅酸蓄电池减少爆炸危险的装置性能检验的试验方法
- 校服代售合同范本
- 2026年河南交通职业技术学院单招职业适应性考试题库及参考答案详解
- 前瞻性队列研究的随访失访控制策略
评论
0/150
提交评论