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

    文章

    16444

    浏览量

    179339
  • STM32
    +关注

    关注

    2272

    文章

    10923

    浏览量

    357438
  • IIC总线
    +关注

    关注

    1

    文章

    66

    浏览量

    20374
  • 通信原理
    +关注

    关注

    10

    文章

    124

    浏览量

    31844
  • 总线协议
    +关注

    关注

    0

    文章

    116

    浏览量

    14892
收藏 人收藏

    评论

    相关推荐

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

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

    IIC通信模式下,如何提高INA260测量电流的精度?

    IIC通信模式下,如何提高INA260测量电流的精度?
    发表于 08-19 06:18

    NSA2302iic通讯地址

    最近正在用NSA2302这个芯片,想问一下NSA2302的IIC通信地址是出厂时就设置好的吗,还是买回来后需要自己烧写,我使用数据手册里给出的通信地址一直无法建立IIC
    发表于 07-04 09:55

    使用STM32F103的硬件IIC,出现BUSY去重新初始化IIC之后,为什么会每次卡在设备地址发送不出去?

    使用STM32F103的硬件IIC,查询的方式,进行通讯,出现BUSY之后,去重新初始化IIC之后,之后为什么会每次卡在设备地址发送不出去啊。求教,求教
    发表于 05-28 06:43

    示波器如何捕获和分析IIC波形?

    示波器捕获和分析IIC(集成电路间通信)波形是一项重要的电子测量任务,特别是在嵌入式系统和微控制器的调试过程中。
    的头像 发表于 05-20 15:08 3478次阅读

    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

    lis3dh使用IIC通讯,CS引脚悬空也能正常IIC通信吗?

    芯片手册上CS引脚接高电平是IIC通讯,接低电平是SPI通讯;接手的项目中,CS引脚是悬空的,IIC通讯能进行,我想知道悬空能IIC可靠通讯嘛?
    发表于 03-28 09:44

    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 1347次阅读
    FPGA实现<b class='flag-5'>IIC</b>协议的设计

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

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