`
应用笔记
N32G45X系列硬件I2C常见问题 V1.0
前言
I2C 总线是由 Philips 公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线
上的器件之间传送信息。目前,I2C 依然是最常见的通信总线之一,现在绝大部分 MCU 都内部集成了 I2C 控
制器。
本文所讲 I2C 模块包适用于 N43G45x、N32G43x、N32L4xx、N32G03x 系列,主要内容为硬件 I2C 使用
中常见问题及解决方法。
I
目录
I2C 简介 ................................................................................................ 1
1.1 简述 ........................................................................................................................................................................... 1
1.2 功能框图 ................................................................................................................................................................... 1
1.3 I2C 中断事件 ............................................................................................................................................................ 2
1.3.1
错误状态触发条件
............................................................................................................................................ 2
硬件 I2C 常见问题 ............................................................................... 4
2.1 MCU 做主机,上电后无法正常发送数据 .............................................................................................................. 4
2.2 MCU 做主机接收,最后无法发出 STOP 信号 ........................................................................................................ 4
2.3 MCU 起始信号发不出来,STARTGEN 一直被置位 ............................................................................................ 5
2.4 发送了起始信号,延迟一个 CLK 周期后直接出现了停止信号,中间总线都为低 ............................................ 6
2.5 通讯波形存在过充/过放现象,波形上升/下降存在毛刺 ...................................................................................... 6
2.6 I2C 配合 DMA 使用,通信失败 .............................................................................................................................. 6
I2C 恢复机制 ........................................................................................ 7
3.1 主机恢复:MCU 作为通讯主机自恢复 .................................................................................................................. 7
3.2 从机恢复(NS 为主机): ........................................................................................................................................... 7
3.3 MCU 做主机异常恢复流程(以 N32G45X I2C1 为例) ...................................................................................... 8
综合改进措施 ....................................................................................... 9
历史版本 ............................................................................................. 10
声明 ..................................................................................................... 10
1
I2C 简介
1.1 简述
I2C 总线是一种广泛应用的总线结构,它只有两根通讯线,即数据总线 SDA 和时钟总线 SCL,通过这两
根线,所有与 I2C 总线兼容的设备都可以通过 I2C 总线彼此直接通信。
I2C 接口模块实现了 I2C 协议的标速模式(100Kbit/s)和快速模式(400Kbit/s),具备 CRC 计算和校
验功能、支持 SMBus(系统管理总线)和 PMBus (电源管理总线),此外它提供多主机功能,控制所有 I2C 总线
特定的时序、协议、仲裁和定时。
1.2 功能框图
图1.2.1-I2C功能框图
2
1.3 I2C 中断事件
I2C 支持多种中断事件,用户可以根据应用需要开启或禁止中断。
图1.2.2-I2C中断请求表
1.3.1 错误状态触发条件
总线错误: 当接口检测到错误的起始或停止条件,硬件将该位置‘1’。该位由软件写‘0’清除,或在
EN=0 时由硬件清除。
仲裁丢失:当接口失去对总线的控制给另一个主机时,硬件将置该位为‘1’。 该位由软件写‘0’清
除,或在 EN=0 时由硬件清除。
响应失败:当没有返回应答 ACK 时,硬件将置该位为‘1’。 该位由软件写‘0’清除,或在 EN=0 时由
硬件清除。
过载/欠载:当 NOEXTEND =1 时,在从模式下该位被硬件置位,同时:
接收模式中当收到一个新的字节时(包括 ACK 应答脉冲),数据寄存器里的内容还未被读出,则新接收
的字节将丢失。在发送模式中当要发送一个新的字节时,却没有新的数据写入数据寄存器,同样的字节将
被发送两次。 该位由软件写 ‘0’清除,或在 EN=0 时由硬件清除。。
PEC
错误:在接收时发生 PEC 错误(PEC Error in reception)
评论0