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

    文章

    15223

    浏览量

    171189
  • STM32
    +关注

    关注

    2239

    文章

    10671

    浏览量

    348744
  • IIC总线
    +关注

    关注

    1

    文章

    65

    浏览量

    20152
  • 通信原理
    +关注

    关注

    10

    文章

    124

    浏览量

    31592
  • 总线协议
    +关注

    关注

    0

    文章

    80

    浏览量

    14736
收藏 人收藏

    评论

    相关推荐

    STM32 IIC通信升级系统

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

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

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

    STM32基础知识:IIC概述与软件模拟IIC

    内部集成电路(Inter Integrated circuit )的简称叫做IIC,是一种简单的、半双工同步通信的串行通信接口,IIC总线是上世纪80年代(1982年)由飞利浦公司设计
    的头像 发表于 10-26 11:47 674次阅读
    <b class='flag-5'>STM32</b>基础知识:<b class='flag-5'>IIC</b>概述与软件模拟<b class='flag-5'>IIC</b>

    iic通信是什么原理?和rs232通信有什么区别 ?

    iic通信是什么原理,和rs232通信有什么区别 ?
    发表于 10-18 06:17

    STM32的软件模拟IIC和硬件IIC有什么区别?

    STM32的软件模拟IIC和硬件IIC有什么区别
    发表于 10-10 06:09

    STM32软件模拟IIC通信AT24C02,能读不能写?

    我在使用STM32软件模拟IIC通信,读写AT24C02的时候,出现了能读不能写的情况,一番纠结无果后,直接用上了正点原子的例程,仍然是能读不能写,我怀疑板子出问题了,但是换了一块板子也是同样的情况
    发表于 10-09 19:34

    STM32G4 Advanced Timer Break功能详解

    电子发烧友网站提供《STM32G4 Advanced Timer Break功能详解.pdf》资料免费下载
    发表于 09-19 15:09 1次下载
    <b class='flag-5'>STM32</b>G4 Advanced Timer Break功能<b class='flag-5'>详解</b>

    STM32 CRC使用详解

    电子发烧友网站提供《STM32 CRC使用详解.pdf》资料免费下载
    发表于 09-19 14:58 3次下载
    <b class='flag-5'>STM32</b> CRC使用<b class='flag-5'>详解</b>

    STM32库函数SystemInit()详解

    STM32库函数SystemInit()详解
    的头像 发表于 09-18 15:45 1978次阅读
    <b class='flag-5'>STM32</b>库函数SystemInit()<b class='flag-5'>详解</b>

    STM32H7技术详解

    电子发烧友网站提供《STM32H7技术详解.pdf》资料免费下载
    发表于 08-01 14:49 2次下载
    <b class='flag-5'>STM32</b>H7技术<b class='flag-5'>详解</b>

    STM32数字电源设计关键外设详解与应用

    电子发烧友网站提供《STM32数字电源设计关键外设详解与应用.pdf》资料免费下载
    发表于 07-31 14:33 13次下载
    <b class='flag-5'>STM32</b>数字电源设计关键外设<b class='flag-5'>详解</b>与应用

    STM32CUBEIDE(13)----IIC之配置OLED

    本章配置STM32F103使用IIC进行驱动SSD1306的12864OLED。
    的头像 发表于 07-26 13:44 1061次阅读
    <b class='flag-5'>STM32</b>CUBEIDE(13)----<b class='flag-5'>IIC</b>之配置OLED

    STM32单片机学习笔记(4):24C02(模拟IIC)

    24C02的一个实例,IIC通信是一种比较典型的串行通信方式,在很多情况下都会有所使用,了解并熟悉IIC通信就显得十分重要。本项目之所以使
    发表于 07-19 15:34 948次阅读
    <b class='flag-5'>STM32</b>单片机学习笔记(4):24C02(模拟<b class='flag-5'>IIC</b>)

    基于STM32和HAL库创建一个IIC设备

    使用面向对象的编程思想封装IIC驱动,将IIC的属性和操作封装成一个库,在需要创建一个IIC设备时只需要实例化一个IIC对象即可,本文是基于STM3
    的头像 发表于 06-26 17:15 1249次阅读

    一文详解IIC总线

    IIC(Inter-Integrated Circuit)集成电路总线,它是一种两线式串行通信总线,又叫I2C,使用多主从架构,由飞利浦公司在1980年推出的。多用于主控制器和从器件间的主从通信
    发表于 06-07 15:38 5691次阅读
    一文<b class='flag-5'>详解</b><b class='flag-5'>IIC</b>总线