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

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

3天内不再提示

AS32系列MCU芯片I2C模块性能解析与调试

安芯 来源:jf_29981791 作者:jf_29981791 2025-06-20 16:31 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

国科安芯推出的AS32X601内置的I2C模块提供了符合工业标准的两线串行制接口,可用于MCU和外部IIC设备的通讯。IIC总线使用两条串行线:串行数据线SDA和串行时钟线SCL。 IIC接口模块实现了IIC协议的标准模式和快速模式,支持多主机IIC总线架构。其中标准模式为100K,快速模式400K。

  • 硬件设计

I2C 总线内部使用漏极开路输出驱动器,因此 SDA和 SCL 可以被拉低为低电平,但是不能被驱动为高电平,所以每条线上都要使用一个4.7K上拉电阻,默认情况下将其保持在高电平。

  • I2C时序

①Start开始信号、Stop停止信号:

这两个信号由主机产生,不属于数据域交互:

在SCL的高电平时,主机将SDA的电平由 高–>低是Start信号(下降沿);

在SCL的高电平时,主机将SDA的电平由 低–>高是Stop信号(上升沿);

②7位寻址

AS32X601的I2C只支持7位寻址模式,配置过程中从机地址需要左移1位才为实际地址。

③数据方向

0写/1读

④应答ACK、非应答NACK

在SCL的一个时钟周期内,从机在SCL的高电平时,将SDA的电平由高拉低(或者继续保持低电平状态) 则是ACK信号;

从机在SCL的高电平时,如果SDA的电平一直是 高电平 则是NACK信号;

  • 时钟

I2C0、I2C1时钟来自APB0,I2C2、I2C3时钟来自ABP1。具体配置可见I2C_CTLR寄存器

  1. 配置I2Cx需要的GPIO为复用功能。
  2. 通过配置I2C_INITSTRUCT初始化I2Cx,包括时钟分频,从机地址,ACK,高低电平时间等。

  1. 按需求配置中断,并配置IRQ_HANDLER;
  2. 调用收发接口,并处理数据
  • I2C挂死原因解析

由于I2C采用线与结构,只要总线上任何一个器件拉低了SDA或者SCL,其他器件都无法拉高它们,看到的都是低电平。如果有器件不释放总线,则整个总线上的通讯都会被暂停 。

在实际操作中,I2C主是可编程器件,如果主机主动拉低了总线,可以通过调试代码了解原因,也可以通过复位I2C外设或者复位芯片来退出。而I2C从机往往不带RESET引脚,如果挂死了总线即使整个系统复位都无法解除,仅重新上下电才可以恢复,因此分析I2C从机挂死。

首先I2C从机在两种情况下会拉低SDA线。

①主机向从机写数据或地址时,从机如果发出ACK应答,则会第9个CLK的期间拉低SDA;

②主机读数据的时候,从机会在bit为0时对应的CLK期间拉低SDA。

根据I2C协议,SCL为高的时候,SDA电平应保持,而等到SCL为低后(也就是下降沿后)才能发生改变。若SCL拉高后主机不再拉低,从机会持续拉低SDA,直到见到SDA的下降沿。

最常见的情况是主机在通讯的过程中产生了复位。由于复位动作通常会立刻执行,外设状态机都恢复到默认状态,也就发不出完整的CLK。那么等到主机复位完成回来后,SCL为高,SDA被从机拉低。主机无法发起START起始条件,不能开始下一次与从机的通讯,这称为SDA挂死。

我们一般情况下用GPIO在SCL线上模拟一个下降沿,让从机状态机继续走下去。只发一个下降沿并不一定能将SDA释放,因为并不清楚当主机复位异常发生时刻从机到底处于哪一个状态,所以需要逐个CLOCK去抓波形,直到见到SDA被释放了,我们才终止并且发送STOP条件告诉从机这次通讯结束。

审核编辑 黄宇

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

    关注

    462

    文章

    53530

    浏览量

    458828
  • mcu
    mcu
    +关注

    关注

    147

    文章

    18604

    浏览量

    386553
  • I2C
    I2C
    +关注

    关注

    28

    文章

    1547

    浏览量

    130446
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何在CW32 MCU上优化I2C通信

    实现高效I2C通信的最佳实践,包括频率配置、信号完整性优化和系统调试技巧,帮助开发者在CW32 MCU平台上实现稳定、可靠的I2C通信。
    发表于 11-27 06:25

    AS32系列MCU芯片中CRC计算模块的应用介绍

    、执行器动作异常甚至整个控制系统宕机。循环冗余校验(CRC)作为一种高效的错误检测技术,如同数据传输与存储过程中的"安全校验屏障",持续保障MCU与外部设备交互数据的准确性。本文将系统阐述国科安芯推出的AS32系列
    的头像 发表于 11-21 15:20 1094次阅读
    <b class='flag-5'>AS32</b><b class='flag-5'>系列</b><b class='flag-5'>MCU</b><b class='flag-5'>芯片</b>中CRC计算<b class='flag-5'>模块</b>的应用介绍

    FreeRTOS 在 AS32系列RISC-V 架构MCU电机驱动中的应用实践与优化

    一、AS32系列 RISC-V MCU与 FreeRTOS 融合的电机驱动架构解析 1.1 硬件层: AS32
    的头像 发表于 11-13 23:33 513次阅读

    深入剖析I2C协议

    I2C也是一种可以多主设备,多从设备的总线协议,通过地址索引,I2C可以使能所需从设备,I2C的出现主要是用来实现不同集成电路组件之间的控制功能,比如通过I2C协议,连接
    的头像 发表于 08-21 15:10 3259次阅读
    深入剖析<b class='flag-5'>I2C</b>协议

    AS32系列MCU调试教程 SPI调试的常见问题解析

    简介 AS32X601内置的I2C模块提供了支持全双工的同步串行通信。该接口可配置为主机或从机模式,配置为主机模式时,它可为外部从器件提供通信时钟(SCK),6个SPI每个都支持8个从机。 SPI
    的头像 发表于 06-27 18:10 537次阅读
    <b class='flag-5'>AS32</b><b class='flag-5'>系列</b><b class='flag-5'>MCU</b><b class='flag-5'>调试</b>教程 SPI<b class='flag-5'>调试</b>的常见问题<b class='flag-5'>解析</b>

    简单了解I2C接口

    在电子电路的复杂世界里,各种电路模块设备需要相互通信才能协同工作 ,I2C接口就像是电路模块设备间的沟通桥梁,今天就带大家深入了解它。
    的头像 发表于 05-08 14:15 2044次阅读
    简单了解<b class='flag-5'>I2C</b>接口

    是德DSOX4034A示波器I2C总线信号分析

    。然而,随着系统复杂度的提升,I2C总线的信号完整性和时序分析变得愈发重要。是德科技(Keysight Technologies)推出的DSOX4034A示波器凭借其高性能和先进的分析功能,为工程师提供了强大的工具,以深入分析和调试
    的头像 发表于 03-19 13:47 929次阅读
    是德DSOX4034A示波器<b class='flag-5'>I2C</b>总线信号分析

    I2C总线复用

    帝晶智慧屏I2C总线复用
    的头像 发表于 03-11 17:20 1852次阅读

    I2C总线与Arduino的接口示例

    在现代电子设计中,I2C总线因其简单性和灵活性而广受欢迎。它允许多个设备共享同一通信线路,从而节省空间和成本。Arduino,作为一个多功能的微控制器平台,自然也支持I2C通信。 I2C总线
    的头像 发表于 01-17 15:34 2354次阅读

    I2C总线协议详细解析

    1. I2C总线简介 I2C总线由Philips Semiconductor(现为NXP Semiconductors)在1980年代初期开发。它是一种多主机总线,允许多个设备共享同一总线。I2C
    的头像 发表于 01-17 15:22 1567次阅读

    I2C总线与单片机的连接

    在现代电子系统中,单片机(MCU)是核心控制单元,而I2C总线作为一种多主机、多从机的串行通信协议,因其简单、高效和节省引脚的特性而被广泛应用于各种电子设备中。 I2C总线概述 I2C
    的头像 发表于 01-17 15:18 1959次阅读

    I2C总线应用实例分析

    在现代电子系统中,I2C总线因其简单、灵活和高效的特点而被广泛应用于各种设备之间的通信。 I2C总线概述 I2C总线由Philips(现为NXP)在1980年代初期开发,最初用于音频和视频设备
    的头像 发表于 01-17 15:09 1230次阅读

    AN-806: ADuC70xxBCPZxxI系列芯片I2C下载协议

    电子发烧友网站提供《AN-806: ADuC70xxBCPZxxI系列芯片I2C下载协议.pdf》资料免费下载
    发表于 01-15 16:18 0次下载
    AN-806: ADuC70xxBCPZxxI<b class='flag-5'>系列</b><b class='flag-5'>芯片</b><b class='flag-5'>I2C</b>下载协议

    TMS320C6000 DSP内部集成电路(I2C)模块参考指南

    电子发烧友网站提供《TMS320C6000 DSP内部集成电路(I2C)模块参考指南.pdf》资料免费下载
    发表于 12-30 16:43 0次下载
    TMS320<b class='flag-5'>C</b>6000 DSP内部集成电路(<b class='flag-5'>I2C</b>)<b class='flag-5'>模块</b>参考指南

    TCA9406 I2C转换器评估模块

    电子发烧友网站提供《TCA9406 I2C转换器评估模块.pdf》资料免费下载
    发表于 12-23 15:17 0次下载
    TCA9406 <b class='flag-5'>I2C</b>转换器评估<b class='flag-5'>模块</b>