版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
任务七I2C总线概述I2C总线概述知识链接
I2C(Inter-IntegratedCircuitBus)由Philips公司推出一种通用数据总线,在微电子通信控制领域得到广泛应用。两根通信线:SCL(SerialClock)、SDA(SerialData)同步,半双工带数据应答支持总线挂载多设备(一主多从、多主多从)I2C总线概述知识链接主机从机SCLSDASCLSDASCLSDA单片机SCL(SerialClock,串行始终),负责传送时钟信号SDA(SerialData,串行数据线),负责传送数据SCL/SDA1高阻1高阻0高阻1高阻×××××VddSCL/SDAI2C总线概述知识链接逻辑线与1高阻1高阻1高阻1高阻×××××Vdd00I2C总线的数据通信过程四阶段起始位寻址数据传输停止位I2C总线概述知识链接主机从机SCLSDASCLSDASCLSDA单片机主机从机起始位寻址数据传输停止位起始位起始位:在SCL高电压时,向SDA发送下降沿SCLSDA空闲起始位I2C总线概述知识链接主机从机SCLSDASCLSDASCLSDA单片机起始位寻址数据传输停止位寻址主机向总线发送从机的地址从机地址有7位和10位,10位复杂,只学习7位0x780x7A0x220xF0
R/W#-用来填写数据传输的方向R/W#=0,写
R/W#=1,读
R-Read,读W-Write,写#-低电压有效
Ack-Acknowledge-应答寻址阶段NAK的原因地址填错,要寻址的从机不存在要寻址从机正忙,来得及回复ACK从机故障I2C总线概述知识链接起始位寻址数据传输停止位数据传输12C以字节为单位传输数据,每次可以传输多个字节主机从机SCLSDASCLSDASCLSDA单片机写读I2C总线概述知识链接起始位寻址数据传输停止位停止位停止位:在SCL高电压时,向SDA发送上升沿主机从机SCLSDA单片机停止位I2C总线概述知识链接1.向从机0x78写0x5a,0x332.读1个字节主机从机I2C总线概述知识链接主机从机I2C总线概述知识链接主机从机任务七STM32F4的I2C简介STM32F4的I2C简介STM32的I2C外设可用作通信的主机及从机,支持100kbit/s和400kbit/s的速率,支持7位、10位设备地址,支持DMA数据传输,并具有数据校验功能。STM32F4的I2C简介知识链接1.通信引脚表4-7STM32F4xx的I2C引脚引脚I2C编号I2C1I2C2I2C3SCLPB6/PB10PH4/PF1/PB10PH7/PA8SDAPB7/PB9PH5/PF0/PB11PH8/PC9I2C的所有硬件架构都是根据图4-16中左侧的SCL线和SDA线展开的。STM32芯片有多个I2C外设,它们的I2C通信信号引出到不同的GPIO引脚上,使用时必须配置好这些指定的引脚,如表4-7所示。图4-162.时钟控制逻辑SCL线的时钟信号由I2C接口根据时钟控制寄存器(CCR)控制,控制的参数主要为时钟频率。配置I2C的CCR寄存器可修改通信速率相关的参数。STM32F4的I2C简介知识链接2.时钟控制逻辑可选择I2C通信的“标准/快速”模式,这两个模式分别I2C对应100/400kbit/s的通信速率在快速模式下可选择SCL时钟的占空比,可选Tlow/Thigh=2或Tlow/Thigh=16/9模式,其实这两个模式的比例差别并不大,若不是要求非常严格,这里随便选就可以了CCR寄存器中还有一个12位的配置因子CCR,它与I2C外设的输入时钟源共同作用,产生SCL时钟我们的PCLK1=42MHz,想要配置400kbit/s的速率,经过计算得到CCR的值为35。3.数据控制逻辑I2C的SDA信号主要连接到数据移位寄存器上,数据移位寄存器的数据来源及目标是数据寄存器(DR)、地址寄存器(OAR)、数据包错误校验寄存器(PEC)以及SDA数据线。STM32F4的I2C简介知识链接3.数据控制逻辑当向外发送数据的时候,数据移位寄存器以“数据寄存器”为数据源,把数据一位一位地通过SDA信号线发送出去当从外部接收数据的时候,数据移位寄存器把SDA信号线采样到的数据一位一位地存储到“数据寄存器”中若使能了数据校验,接收到的数据会经过PEC(数据包错误校验)运算,运算结果存储在“PEC寄存器”中STM32F4的I2C简介知识链接当STM32的I2C工作在从机模式的时候,接收到设备地址信号时,数据移位寄存器会把接收到的地址与STM32的自身的“I2C地址寄存器”的值作比较,以便响应主机的寻址STM32的自身I2C地址可通过修改“自身地址寄存器”,支持同时使用两个I2C设备地址,两个地址分别存储在OAR1和OAR2中3.数据控制逻辑STM32F4的I2C简介知识链接整体控制逻辑负责协调整个I2C外设,控制逻辑的工作模式根据我们配置的“控制寄存器(CR1/CR2)”的参数而改变在外设工作时,控制逻辑会根据外设的工作状态修改“状态寄存器(SR1和SR2)”,只要读取这些寄存器相关的寄存器位,就可以了解I2C的工作状态了除此之外,控制逻辑还根据要求,负责控制产生I2C中断信号、DMA请求及各种I2C的通信信号(起始信号、停止信号、响应信号等)4.整体控制逻辑通信过程使用I2C外设通信时,在通信的不同阶段它会对“状态寄存器(SR1及SR2)”的不同数据位写入参数,我们通过读取这些寄存器标志来了解通信状态。1.主发送器主发送器发送流程及事件说明如下:①控制产生起始信号(S),当发生起始信号后,它产生事件“EV5”,并会对SR1寄存器的SB位置1,表示起始信号已经发送。通信过程知识链接1.主发送器②紧接着发送设备地址并等待应答信号,若有从机应答,则产生事件“EV6”及“EV8”,这时SR1寄存器的ADDR位及TXE位被置1,ADDR为1表示地址已经发送,TXE为1表示数据寄存器为空。③以上步骤正常执行,并对ADDR位清零后,我们往I2C的数据寄存器DR写入要发送的数据,这时TXE位会被重置0,表示数据寄存器非空,I2C外设通过SDA信号线一位一位把数据发送出去后,又会产生“EV8”事件,即TXE位被置1,重复这个过程,就可以发送多个字节数据了。1.主发送器④当数据发送完成后,控制I2C设备产生一个停止信号(P),这个时候会产生“EV8_2”事件,SR1的TXE位及BTF位都被置1,表示通信结束。假如我们使能了I2C中断,以上所有事件产生时,都会产生I2C中断信号,进入同一个中断服务函数,到I2C中断服务程序后,再通过检查寄存器位来了解是哪一个事件。2.主接收器主接收器通信过程,即作为I2C通信的主机端时,从外部接收数据的过程,如图4-18所示。图4-182.主接收器主接收器接收流程及事件说明如下:①同主发送流程,起始信号(S)是由主机端产生的,控制发生起始信号后,它产生事件“EV5”,并会对SR1寄存器的SB位置1,表示起始信号已经发送。通信过程知识链接2.主接收器②紧接着发送设备地址并等待应答信号,若有从机应答,则产生事件“EV6”,这时SR1寄存器的ADDR位被置1,表示地址已经发送。③从机端接收到地址后,开始向主机端发送数据。当主机接收到这些数据后,会产生“EV7”事件,SR1寄存器的RXNE被置1,表示接收数据寄存器非空,我们读取该寄存器后,可对数据寄存器清空,以便接收下一次数据。此时我们可以控制I2C发送应答信号(ACK)或非应答信号(NACK),若应答,则重复以上步骤接收数据,若非应答,则停止传输。2.主接收器④发送非应答信号后,产生停止信号(P),结束传输。在发送和接收过程中,有的事件不只是标志了我们上面提到的状态位,还可能同时标志主机状态之类的状态位,而且读了之后还需要清除标志位,比较复杂。我们可使用STM32的HAL库函数来直接检测这些事件的复合标志,降低编程难度。通信过程知识链接I2C初始化结构体解析STM32的HAL库提供了I2C初始化结构体及初始化函数来配置I2C外设。初始化结构体及函数定义在库文件stm32f4xx_hal_IIC.h及stm32f4xx_hal_IIC.c中。typedef
struct{uint32_tClockSpeed;/*设置SCL时钟频率,此值要低于400000*/uint32_tDutyCycle;/*指定时钟占空比,可选Tlow/Thigh=2/1及16/9模式*/uint32_tOwnAddress1;/*指定自身的I2C设备地址1,可以是7bit或者10bit*/uint32_tAddressingMode;/*指定地址的长度模式,可以是7bit模式或者10bit模式*/uint32_tDualAddressMode;/*设置双地址模式*/uint32_tOwnAddress2;/*指定自身的I2C设备地址2,只能是7bit*/uint32_tGeneralCallMode;/*指定广播呼叫模式*/uint32_tNoStretchMode;/*指定禁止时钟延长模式*/}I2C_InitTypeDef;任务四环境光照强度监测的应用开发环境温湿度监测的应用开发任务描述任务目标1(1)掌握常用的光照强度检测传感器的工作原理。(2)掌握STM32F407的I2C总线的工作原理。(3)会编写环境光照强度监测的应用程序。
任务内容2本任务要求设计一个应用程序,要求系统每隔2秒采集一次环境参数,把采集到的光照强度[单位:勒克斯lx]上报PC端即可。环境温湿度监测的应用开发任务分析
本任务要求设计一个应用程序,以实现对环境光照强度的监测。传感器硬件使用ROHM半导体公司的BH1750光照强度传感器模块,该模块的实物如下图所示,子图(a)为传感器模块正面,子图(b)为传感器模块背面。(a)传感器模块正面
(b)传感器模块背面BH1750光照强度传感器模块实物图I2C总线规范;BH1750光照强度传感器的特性;环境光照强度监测应用程序的编写方法。BH1750光照强度传感器模块与MCU的硬件接线表(1)使用STM32F407开发板和BH1750光照强度传感器进行连接。(2)设置STM32F407的时钟,并初始化I2C总线用于与BH1750通信。1.硬件准备
基于STM32F407的HAL库的环境光照强度BH1750检测的应用开发可按以下步骤进行:(1)实现开始测量函数,向BH1750发送命令以启动光照强度的测量。(2)编写读取数据函数,通过I2C总线从BH1750读取测量到的光照强度值。2.根据BH1750的规格书,编写初始化函数以配置BH1750的工作模式和采样速率。(1)初始化STM32F407的HAL库,并设置相应的GPIO和I2C引脚。(2)调用BH1750驱动程序的初始化函数进行初始化。(3)设计主循环。
①调用开始测量函数启动光照强度的测量。
②调用读取数据函数获取测量到的光照强度值。
③将光照值送串口1输出。3.应用程序开发4.优化设计任务实施前必须准备好表4-8所列的设备/资源。任务实施表4-8设备/资源清单表序号设备/资源数量是否准备到位(√)1STM32F407ZET6最小系统1
2BH17501
3杜邦线5
4BH1750软件包(模拟I2C时序)1
方案1使用GPIOPB6、PB7模拟I2C时序,实现BH1750光照数据的获取。环境光照强度监测的应用开发任务实施1.创建基础工程按图4-19所示的顺序配置I2C1。图4-19环境光照强度监测的应用开发任务实施2.添加代码包在MDK-ARM文件夹同级目录新建文件夹“bh1750”,将代码包中的gy30.h、gy30.c文件输入并保存在该目录下。环境光照强度监测的应用开发任务实施2.添加代码包gy30.c文件代码如下:41环境光照强度监测的应用开发任务实施3.编写应用层代码(1)在main.c文件对应位置输入如程序清单4-3所示的代码。环境光照强度监测的应用开发任务实施3.编写应用层代码(2)在usart1.c文件中添加USART1的串口重定向代码,具体代码参见任务4.1.2节。编译程序,下载程序到核心板,将bh1750模组的VCC接核心板3.3V,GND接GND,SCL接PB.6,SDA接PB.7,ADDR接地,系统上电。PC端打开串口调试助手,设置好串口。打开串口,可看到如图4-20的实验结果。用手遮挡BH1750模块,光照强度变小,移开手,光照数据变大。任务四环境光照强度监测的应用开发环境光照强度监测的应用开发任务实施方案2使用STM32F407的硬件I2C,实现BH1750光照数据的获取。
复制方案1的基础工程文件到hard_iic文件夹,使用KeilMDK打开main.c文件,在对应位置输入如程序清单4-4所示代码。环境光照强度监测的应用开发函数分析程序中用到了以下两个关键函数。(1)HAL_I2C_Master_Transmit()。函数名HAL_I2C_Master_Transmit()函数原型HAL_I2C_Master_Transmit(I2C_HandleTypeDef*hi2c,uint16_tDevAddress,uint8_t*pData,uint16_tSize,uint32_tTimeout)功能描述在阻塞模式下,主器件发送一定数量的数据输入参数1hi2c:指向I2C_HandleTypeDef结构的指针,包含指定I2C配置信息输入参数2DevAddress:目标设备地址,在调用接口之前,数据手册中设备的7位地址值必须右移以丢弃读写方向位输入参数3pData:数据缓冲区指针输入参数4Size:要发送的数据大小输入参数5Timeout:超时时间先决条件无注意事项无返回值HAL状态环境光照强度监测的应用开发函数分析程序中用到了以下两个关键函数。(2)HAL_I2C_Master_Receive()函数函数名HAL_I2C_Master_Receive()函数原型HAL_StatusTypeDefHAL_I2C_Master_Receive(I2C_HandleTypeDef*hi2c,uint16_tDevAddress,uint8_t*pData,uint16_tSize,uint32_tTimeou
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新邵县2025年三下数学期中试题(含解析)
- 新疆维吾尔巴音郭楞蒙古自治州博湖县2025届数学四年级第二学期期末复习检测模拟试题含答案
- 2026年中医内科喘测试题及答案
- 2026年失业保险测试题及答案
- 新疆维吾尔乌鲁木齐市2025届数学三年级下学期期末考试模拟试题含解析
- 新疆沙湾市2025-2026学年数学四年级第二学期期中达标测试试题含解析
- 新疆吐鲁番市高昌区亚尔镇中学2025年数学四年级第二学期期中学业水平测试试题含答案
- 第1节 硅 无机非金属材料教学设计高中化学鲁科版必修1-鲁科版2004
- 2025-2026学年走进秦川乐器店教学设计
- 食品原料与加工技术 教案全套
- 2025年江苏省中职职教高考统考英语试卷真题(含答案)
- 物业服务方案档案管理方案
- 2025年城管协管员考试题及答案
- 知道智慧树网课《分析化学(兰州大学)》课后章节测试答案
- 《打印管理软件技术规范》
- 成都市青羊区教育局2025年“蓉漂人才荟”赴高校公开考核招聘240名教师笔试参考题库附答案解析
- 水下设备连接可靠性分析报告
- 风电场防洪防汛课件
- 铝合金门窗委托加工合同4篇
- 2025年医院感染防控知识竞赛试题及答案
- 武警班组战术课件
评论
0/150
提交评论