• 正文
  • 相关推荐
申请入驻 产业图谱

【黑金云课堂】FPGA技术教程FPGA基础:I2C 总线通信技术

06/14 09:37
198
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

FPGA 基础第 11 期 I2C 总线通信技术,选自ALINX 黑金云课堂 FPGA 免费直播课。该课程由 ALINX 资深工程师团队倾力打造,从 0 到 1 系统化教学,帮助每位工程师跨过 FPGA 开发门槛。

🔍 ALINX:关注 ALINX,进入视频号即可查看完整黑金云课堂 FPGA 视频教程。配合笔记学习效果更佳。

一、I2C基本原理

总线特点半双工、同步、多主多从的串行通信总线,仅需两根线:SDA(数据线) 和 SCL(时钟线)。

物理层关键

开漏输出 + 上拉电阻实现“线与”逻辑。

上拉电阻影响上升时间和功耗:标准模式(100kHz)推荐 4.7kΩ,快速模式(400kHz)推荐 2.2kΩ / 1.8kΩ。

协议层核心

起始条件 (START):SCL高电平时SDA由高→低。

停止条件 (STOP):SCL高电平时SDA由低→高。

数据帧:8位数据,高位优先,每字节后跟1位应答位(ACK/NACK)。

地址帧:7位从机地址 + 1位读写位(0=写,1=读)。

通信流程

写操作:START → 地址+写 → ACK → 数据 → ACK → STOP。

读操作:START → 地址+写 → ACK → 寄存器地址 → ACK → 重复START → 地址+读 → ACK → 读数据 → NACK → STOP。

二、EEPROM读写实验(AT24C02)

实验目标通过FPGA对AT24C02进行字节/页写和读操作。

硬件连接SDA/SCL接上拉电阻(4.7kΩ)至5V。

关键注意写入操作后需等待至少 5ms(写入周期),或通过轮询ACK确认。

FPGA实现通过状态机模拟I2C时序,控制起始、地址、数据、停止及应答检测。

// I2C主设备模块定义
module i2c_master
(input clk, rst_n,
inout sda, scl,
input [6:0] addr);

// 写EEPROM状态机
case (state)
IDLE: begin scl=1; sda=1; end
START: sda=0; // 起始条件
ADDR: sda=addr[bit]; // 发地址
DATA: sda=data[bit]; // 发数据
STOP: sda=0; scl=1; sda=1; // 停止
endcase

// 读EEPROM状态机
case (state)
RD_ADDR: sda=addr[bit];
RD_DATA: begin // 释放SDA
sda=1'bz; // 高阻态
data_rd=sda; // 采样数据
end
endcase

三、LM75温度传感器读取实验

实验目标FPGA通过I2C读取LM75温度值。

LM75要点

地址格式:1001 A2 A1 A0,最多挂载8个设备。

温度寄存器地址:0x00,16位数据,高9位有效(符号位+整数位)。

温度计算公式:实际温度 = (原始数据 >> 7) × 0.5°C

FPGA实现状态机先写寄存器地址(0x00),再读2字节数据,最后移位计算温度。

```verilog
// 状态机:写寄存器地址 & 读温度数据
always @(posedge clk) begin
    case (i2c_state)
        WRITE_ADDR: begin  // 阶段1: 写0x00
            sda_out <= lm75_addr[7:0];
            if (ack) i2c_state <= READ_DATA;
        end
        READ_DATA: begin  // 阶段2: 读2字节
            temp_raw[15:8] <= sda_in; // 高8位
            temp_raw[7:0]  <= sda_in; // 低8位
            i2c_state <= IDLE;
        end
    endcase
end

四、总结与进阶

核心回顾

双线、开漏、上拉电阻、起始/停止、地址/数据帧、应答机制、主读/主写流程。

常见总线对比

I2C:2线,多主多从,低速,常用于传感器、EEPROM。

SPI:4线,单主多从,高速,常用于ADC/DAC。

UART:2线(TX/RX),异步,常用于上位机通信。

进阶学习

多主设备仲裁、10位地址模式、软件I2C(Bit-Banging)、逻辑分析仪调试。

💡 完整视频讲解可前往 ALINX 视频号进行直播回看

更多细节欢迎关注我们黑金云课堂全年免费直播课,黑金云课堂六月直播日历 我们将在每周二、三、四,同步推进 Verilog开发、Vitis开发、Linux开发三大系列,带你从零开始,稳扎稳打掌握 FPGA 开发全流程!

系列 内容定位
Verilog开发 硬件描述语言基础、逻辑设计、仿真调试
Vitis开发 Zynq软硬件协同、外设驱动、网络协议
Linux开发 嵌入式Linux系统移植、驱动编写、应用开发

相关推荐

登录即可解锁
  • 海量技术文章
  • 设计资源下载
  • 产业链客户资源
  • 写文章/发需求
立即登录

芯驿电子自 2012 年成立以来,旗下 AUMO 与 ALINX 两大品牌,在智能车载与 FPGA 行业解决方案领域持续深耕。 ALINX 聚焦 FPGA 解决方案高端产品市场,并积极参与 FPGA 国产化应用发展。至今已推出 100 多款 FPGA SoM 模组和配套板卡,基本完成对 AMD FPGA 产品、紫光同创 FPGA 产品的全系列覆盖,产品远销海外 40 多个国家。 AUMO 专注智能车载,为自动驾驶技术开发破题。至今已推出车载仿真测试系统、视频数据采集、视频数据旁路采集分流、视频数据注入、车载摄像头、车载后视镜等产品线,满足车企和汽车产业链的车载产品开发需求。

微信公众号