stm32专题十六:IIC(一)硬件结构框图

最新更新时间:2021-10-22来源: eefocus关键字:stm32  IIC 手机看文章 扫描二维码
随时随地手机看文章

STM32的I2C特性及架构:


1 硬件实现协议:


        由STM32的I2C片上外设专门负责实现I2C通讯协议,只要配置好该外设,它就会自动根据协议要求产生通讯信号,收发数据并缓存起来,CPU只要检测该外设的状态和访问数据寄存器,就能完成数据收发。这种由硬件外设处理I2C协议的方式减轻了CPU的工作,且使软件设计更加简单。


        stm32的硬件IIC,在某些情况下会出现错误,但也没有必要去纠结这个问题。


2 软件模拟协议:使用CPU直接控制通讯引脚的电平,产生出符合通讯协议标准的逻辑。


        STM32的I2C外设可用作通讯的主机及从机,支持100Kbit/s和400Kbit/s的速率,支持7位、10位设备地址,支持DMA数据传输,并具有数据校验功能。


stm32硬件IIC的内部:

1 通讯引脚


IIC1

IIC2

2 时钟控制逻辑


时钟控制逻辑,直接通过一些信号线与SCL引脚相连,通过这些硬件逻辑控制SCL线。时钟控制寄存器CCR,配置了SCL线的模式(标准模式100kHz,快速模式400kHz)、速度、占空比等参数,而实际上,标准库函数会帮我们计算好的,不需要每次都去手动计算。

这里计算分频系数,如何理解?


以标准模式为例,APB1总线的时钟信号PCLK1 = 36M,则T(PCLK1) = (1/36)ns,要产生100kHz的频率,则CCR必须写入的值为:2 * CCR * (1 / 36)ns = 100kHz,计算得到CCR = 180。

3 数据控制逻辑


        连接到SDA引脚。


        I2C的SDA信号主要连接到数据移位寄存器上,数据移位寄存器的数据来源及目标是数据寄存器(DR)、地址寄存器(OAR)、


PEC(帧校验)寄存器以及SDA数据线。


首先来看数据寄存器DR


当向外发送数据的时候,数据移位寄存器以“数据寄存器”为数据源,把数据一位一位地通过SDA信号线发送出去;


当从外部接收数据的时候,数据移位寄存器把SDA信号线采样到的数据一位一位地存储到“数据寄存器”中;

比较器的作用:IIC会有一个自身地址寄存器,用于作为从机。当作为从机时,必须要有IIC设备地址,通过软件配置可以写入到自身地址寄存器内。当主机寻址时,比较器会将地址比较,来确定主机是否在叫自己。

PEC寄存器:用于做数据校验,几乎不用。


4 整体控制逻辑


        包含控制寄存器CR1 CR2和状态寄存器SR1 SR2。


整体控制逻辑负责协调整个I2C外设,控制逻辑的工作模式根据我们配置的“控制寄存器(CR1/CR2)”的参数而改变。其中,CR1寄存器控制各种起始、结束的使能,CR2寄存器管理中断。

还有一个比较重要的地方:

配置的是CR2寄存器的FREQ[5:0]位:

在外设工作时,控制逻辑会根据外设的工作状态修改“状态寄存器(SR1和SR2)”,只要读取这些寄存器相关的寄存器位,就可以了解I2C的工作状态,这个非常重要,我们编程时要参考这些标志位。接下来,详细的看一下每个标志位的意义。

这些标志位,对应了IIC的时序图种,产生的各种事件标志。

然后是状态寄存器CR2


关键字:stm32  IIC 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic552244.html

上一篇:stm32专题十五:IIC通讯
下一篇:stm32专题十六:IIC(二)stm32 IIC通讯过程 标志位

推荐阅读

STM32处理器输入捕获分析
/比较模式寄存器TIMx_CCMR1(当然还有CCMR2,两个寄存器配置CH1~4的输入输出)捕获作为输入,因此我们只用图片中寄存器的后下部分;CC1S[1:0] : (1)决定定时为输出(比较)或输入(捕获)模式;(2)决定IC1信号源的选择(后边详细介绍);IC1PSC[1:0]:选择对IC1的分频模式(但是这个分频和定时器TIMx_PSC寄存器的分频并不太一样,但功能是一样的)IC1F[3:0]:输入捕获1滤波器(详细功能可以参考STM32手册,这里这个功能不作为细说,本博文也用不到)(2)捕获/比较使能寄存器TIMx_CCER1使能寄存器中除了对输入使能的控制之外,还有对输入输出极性的控制;(此时为输入模式下)CCxP
发表于 2021-11-29
<font color='red'>STM32</font>处理器输入捕获分析
STM32定时器输出比较(PWM)
前言:1.本博文基于ARM Cortex-M3内核的STM32F103ZET6处理器芯片和标准3.5.0库函数;2.不介绍PWM的基础概念,但是需要知道一点的是,PWM是输出比较的一种特例;3.如有不足指出,还望前辈多多指教;4.要想学会这个知识点,必须要掌握下面这位博友写的博客里的几个概念,不然后来很有可能会懵逼;http://blog.sina.com.cn/s/blog_3ba262a10101esd1.htmlⅠ 定时器和PWM(1)8个定时器中,除了TIM6和TIM7,其他定时器都可以产生PWM输出;(2)高级定时器TIM1和TIM8可以同时输出7路PWM(CH1~7,共7个通道),通用定时器同时可产生4个PWM输出(CH
发表于 2021-11-29
<font color='red'>STM32</font>定时器输出比较(PWM)
STM32处理器定时器分析(实现一个定时中断)
前言:1.本博文基于STM32F103ZET6芯片和ST官方提供的3.5.0库函数;2.学习过51单片机学习STM32定时器会容易理解一些,但是两个定时器的实力有很大的距离;3.定时器是难点也是重点;本博文以通用定时器TIM2~TIM5来说明;例程是TIM36.定时器结构稍复杂,寄存器较多,本博文根据一个简单的定时器中断实验展开,所列出的相关寄存器是专门针对本次实验来说的,其他不相关定时器不再列出;一 STM32定时器的分类1.高级定时器: TIM1和TIM82.通用定时器: TIM2,3,4,5;3.基本定时器: TIM6和TIM7;二 通用定时器的功能(1)16位向上,向下,向上/向下自动装载寄存器(TIMx_CNT)(向上
发表于 2021-11-29
<font color='red'>STM32</font>处理器定时器分析(实现一个定时中断)
STM32的USART分析
串口框图工程建立后,需要在工程中添加stm32f10x_usart.h和stm32f10x_usart.c文件;串口设置的一般步骤①串口时钟使能,GPIO时钟使能②串口复位③GPIO端口模式设置④串口参数初始化⑤开启中断并初始化NVIC(需要开启中断时开启)⑥使能串口⑦编写中断处理函数串口设置的相关函数以及解释1.串口使能RCC_APB2PeriphClockCmd(RCC_APB2Periph_USARTx,ENABLE);2.串口复位解释一下复位:当外设出现异常的时候通过复位设置实现该外设的复位,然后重新设置这个外设达到让其重新工作的目的。一般在系统刚开始的时候,都会执行复位该外设的操作。下面是复位所需的函数;void USAR
发表于 2021-11-29
<font color='red'>STM32</font>的USART分析
STM32处理器 RTC分析
前言:1.博客基于ARM Cortex-M3内核的STM32F103ZET6和标准3.5.0库;2.如有不足之处,还请多多指教一 RTC是什么?1. 从结构上讲就是一个独立的定时器;2. 从功能上来说就是为系统提供系统掉电不复位的日历时间;RTC分为两个完全能独立的部分:1. APB1接口;2. RTC核心;功能:(1)APB1总线连接APB1接口并负责驱动APB1接口,接口内部包含一组16位寄存器,可以通过APB1总线对其进行读写操作。(2)RTC核心由RTC20位预分频模块和32位可编程计数器模块组成;Ⅰ RTC预分频模块包含一个20位的可编程分频器RTC_DIV。预分频模块为32位计数器模块提供时基单元,这个很重要;预分频器内
发表于 2021-11-29
<font color='red'>STM32</font>处理器 RTC分析
STM32 Systick分析
为了两种情况:使用UCOSⅡ和不使用UCOSⅡ的情况程序开始之前先解释一下:下面的延时函数代码支持UCOSⅡ下使用,它可以和UCOSⅡ共用systick定时器;在UCOSⅡ下系统不许有一个节拍,而这个节拍必须是固定的,不能被打断,否则就不准了;举个例子:比如每5ms一个节拍,那么直接由OS_TICK_PER_SEC = 200即可,stm32下systick提供这节拍;由上可知:UCOSⅡ下的systick不能随意被更改;此时如果要sistick做delay_us和delay_ms的延时;这事有一个时钟摘取的办法(以delay_us(50)为例):刚进入函数之后,先计算出需要延时的这段时间内systick需要建多少数,假设系统时钟
发表于 2021-11-29
<font color='red'>STM32</font> Systick分析
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2021 EEWORLD.com.cn, Inc. All rights reserved