0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32的IIC通信原理详解

CHANBAEK 来源:头条号秋天滴风 作者:头条号秋天滴风 2023-04-25 09:51 次阅读

本文将介绍STM32 IIC通信原理和协议

①IIC总线简介

②IIC总线协议与读写操作

③STM32 IIC控制器介绍

①IIC总线简介

IIC是inter integrated circuit的简称,IIC是由PHILIPS公司开发的两线式串行总线;该总线具有接口线少、易于控制、通讯速率高等有点,在微电子控制领域被广泛使用。

IIC总线具备以下特征:

1、同步通信,半双工,以字节为传输单位;

2、两条线路、SDA和SCL;

3、挂载在IIC总线上的设备均可为主设备、亦可为从设备;

4、具有3种传输速率,最高可达3.4Mbit/s;可通过总线时钟的频率和总线上拉电阻来配置传输速率;

5、多主机功能、7位和10位地址模式、可以软件复位、1字节缓冲带DMA功能;

IIC总线的物理连接如下图:

wKgaomRHMiuAJiZ1AAFCzFaaXMk575.jpg

SDA和SCL总线上会有上拉电阻,总线上可以挂在一定数量的设备通过总线进行通讯、当总线空闲时总线上处于高电平。

②IIC总线协议与读写操作

wKgZomRHMiuABQVPAAB673MwkaE255.jpg

IIC总线协议包括:起始信号、终止信号、数据、应答部分;

起始信号:当总线处于空闲状态时SDA SCL两根线上是高电平,若此时SDA由高变低、则定义为起始信号;

终止信号:当SCL处于高电平时,若此时SDA由低变高、则定义为终止信号;

起始信号、终止信号顾名思义是通信的开始和终止,这两个信号都有主设备发起;

数据:可分为地址数据、和真实意义上的地址内存储的数据;

应答:应答可以有应答信号和非应答信号,该信号是跟在数据后面;

若主设备向从设备写1个数据会有以下过程:

起始信号>从机地址+写位ACK>写入地址ACK>写入数据ACK>终止信号

wKgaomRHMiyATB1FAAAcPJmFsxU058.jpg

若主设备向从设备读1个数据会有以下过程:

起始信号>从机地址+写位ACK>要读的地址ACK>起始信号>从机地址+读位ACK>地址内的数据NACK>终止信号

wKgZomRHMiyAKXDoAAAkzK4W93g109.jpg

若读多个数据就是“从机地址+读位ACK>地址内的数据NACK”重复几次

③STM32 IIC控制器介绍

STM32这种芯片是具有IIC控制器的,这样可以通过硬件产生IIC时序;但有些简单的单片机就可能没有IIC控制器,那我们如何与IIC设备通讯呢?答案就是软件模拟IIC时序,软件模拟IIC时序相比更加操作繁琐、效率低。

STM32的IIC片上外设是用来专门实现IIC通讯协议的,我们只要配置好该外设,就可以产生通讯信号、收发数据并缓存起来,CPU检测外设的状态和访问数据寄存器就能完成数据的收发,这样减轻了CPU的工作负担、使得软件设计的效率提高。

以下是STM32 IIC控制器的框图:

wKgaomRHMi2AG_D2AAJkjKYFaiw398.jpg

引脚对应表:

wKgaomRHMi2AEdi2AACXiu1X8uc847.jpg

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    112

    文章

    16064

    浏览量

    176919
  • STM32
    +关注

    关注

    2264

    文章

    10852

    浏览量

    354100
  • IIC总线
    +关注

    关注

    1

    文章

    66

    浏览量

    20271
  • 通信原理
    +关注

    关注

    10

    文章

    124

    浏览量

    31721
  • 总线协议
    +关注

    关注

    0

    文章

    115

    浏览量

    14832
收藏 人收藏

    评论

    相关推荐

    IIC信号线需要增加上拉电阻,是因为IIC的IO是什么

    IIC通信中扮演着至关重要的角色,而上拉电阻的加入则是实现这种通信方式有效性和可靠性的关键。以下是对此现象的介绍: 一、IIC通信与开漏输出
    的头像 发表于 10-06 15:50 293次阅读

    stm8的供电电压是3.3V,IIC从机的供电电压是5V,请问这个IIC能正常通信吗?

    请教一下,stm8的供电电压是3.3V,IIC从机的供电电压是5V,请问这个IIC能正常通信吗?是不是只要stm8的耐压是5V就没问题?
    发表于 05-07 08:01

    stm32f103z系列硬件IIC从机不能用的原因?

    如题,我在STM32F103C8 48脚下写的IIC PB6 PB7 硬件IIC从机可以使用, 把上面的程序改为STM32F103ZE 144脚下的写的
    发表于 05-07 06:56

    stm8s103k与AT24C02的iic通信不稳定是什么原因导致的?

    stm8s103k与AT24C02的iic通信不稳定,有时可以读取数据,有时读不出 是什么原因? 有人与ADS1110用iic通信过吗?
    发表于 04-30 07:33

    请问STM32F429硬件IIC需要外围上拉电阻吗?

    如题,STM32F429使用IIC通信的时候,是否需要外加上拉电阻? 看过很多资料,都说是需要上拉电阻,让人郁闷的是,这次设计硬件的时候,偏偏忘记了加,于是乎我进行了测试, //使能IO引脚
    发表于 04-24 06:35

    STM32F407与LTC4151-1之间通过GPIO模拟的IIC进行数据通信,LTC4151-1没有回应答怎么解决?

    STM32F407与电源采样芯片(LTC4151-1)之间通过GPIO模拟的IIC进行数据通信,现在的现象是LTC4151-1没有回应答,哪位朋友做个类似的案列,请帮忙解决一下。
    发表于 03-27 07:57

    VC++串口通信详解

    电子发烧友网站提供《VC++串口通信详解.doc》资料免费下载
    发表于 03-24 09:36 0次下载

    STM32 IIC通信升级系统

    诸神,需求一套可以使用IIC通信升级固件的系统 1,STM32烧录板,型号自定,尽量低成本,程序 2,STM32G031G8U6目标板示例程序 有人能做这项目吗?或者大家有好的思路吗?
    发表于 03-20 12:40

    FPGA实现IIC协议的设计

    今天给大家带来的是IIC通信IIC协议应用非常广泛,例如与MPU6050进行通信,配置OV5640摄像头、驱动OLED屏幕等等,都需要使用到IIC
    的头像 发表于 03-04 10:49 1137次阅读
    FPGA实现<b class='flag-5'>IIC</b>协议的设计

    GD32 MCU碰到IIC总线卡死怎么办?

    大家在使用MCU IIC通信时,若碰到设备复位或者总线干扰等情况,可能会导致IIC总线卡死,表现上总线上SDA或者SCL其中一根线为低电平,IIC总线一直处于busy状态。此时若代码上
    的头像 发表于 02-24 09:46 3540次阅读
    GD32 MCU碰到<b class='flag-5'>IIC</b>总线卡死怎么办?

    【CW32学习笔记】IIC接口-主机发送

    接着就是比较重要的部分了,IIC接口的收发并不是全自动的,因为一个完整的通信不仅包括发数据(地址、数据什么的),还包含收数据(啥也不干也得接收ACK信号),所以IIC通信的每个部分基本
    的头像 发表于 01-10 15:59 576次阅读
    【CW32学习笔记】<b class='flag-5'>IIC</b>接口-主机发送

    芯知识 | 什么是语音芯片的IIC控制模式?

    Inter-IntegratedCircuit,是一种串行通信协议,用于连接微控制器和各种外设芯片。在语音芯片中,IIC控制模式是指通过IIC接口对语音芯片进行控制和数据传输的方式。与传统的
    的头像 发表于 12-20 08:41 506次阅读
    芯知识 | 什么是语音芯片的<b class='flag-5'>IIC</b>控制模式?

    stm32启动过程详解

    STM32启动过程详解 近年来,STM32微控制器在嵌入式系统中的应用越来越广泛。STM32微控制器具有高性能、低功耗、易扩展和丰富的外设接口等优势。而要让
    的头像 发表于 12-08 15:47 1417次阅读

    STM32里的串口通信

    STM32里的串口通信STM32里,串口通信是USART,STM32可以通过串口和其他设备进行传输并行数据,是全双工,异步时钟控制,设备
    的头像 发表于 11-10 15:58 2862次阅读
    <b class='flag-5'>STM32</b>里的串口<b class='flag-5'>通信</b>

    求助,关于stm32 IIC通信的问题

    从通讯协议上来讲,当IIC超时没有相应时,应退出本次通讯,重新发送restart指令,再尝试通讯。以免设备长期占用总线,只有一主一从IIC设备时还好,如果是一主多从的情况,会影响其他从机的相应。
    发表于 11-07 07:46