找回密码
 立即注册
查看: 511|回复: 1

易灵思 IIC配置代码解析

[复制链接]

5

主题

0

回帖

42

积分

版主

积分
42
发表于 2025-3-20 23:04:25 | 显示全部楼层 |阅读模式
本帖最后由 CrazyCat 于 2025-3-21 00:17 编辑
IIC的重要意义:
    易灵思FPGA在图像方面具有巨大的优势(低功耗、接口丰富、实用的MIPI_IP),而图像的数据来源基本都是来自于摄像头或者其他视频输入子卡(如AD7611接收视频数据源),不管是摄像头还是其他芯片,基本都是用IIC协议去配置,在易灵动思的各个Demo中,基本都能看到"i2c_timing_ctrl_reg16_dat8_wronly.v"这个.v文件,该IIC配置文件也是ISP处理时自动曝光增益调节串口实时控制显示模式的核心部分,本帖子将从整体代码解析,到该.v文件的进阶应用入手,玩转IIC协议。

上电延时

    一般FPGA在上电后到摄像头开始正常工作之前,有一段时间,在这段时间里面,对摄像头进行IIC配置操作是无效的(具体可以看摄像头的手册规定),所以一般我们在FPGA上电后,延时一段时间后才对摄像头进行配置
//----------------------------------------
//Delay xxus until i2c slave is steady
reg [19:0]  delay_cnt;
localparam  DELAY_TOP = CLK_FREQ/1000;  //1ms Setting time after software/hardware reset
always@(posedge clk or negedge rst_n)
begin
    if(!rst_n)
        delay_cnt <= 0;
    else if(delay_cnt < DELAY_TOP)
        delay_cnt <= delay_cnt + 1'b1;
    else
        delay_cnt <= delay_cnt;
end
wire    delay_done = (delay_cnt == DELAY_TOP) ? 1'b1 : 1'b0;   

在延时一段时间后(CLK_FREQ/1000个CLK_FREQ的周期为1ms,大家可以随便拿一个频率的时钟来验证下,如50Mhz),拉高delay_done,作为我们后续的一个使能条件。
SCL、SDA信号的生成

SCL和SDA的生成是代码的核心部分,后续状态机的跳转,信号的输出也是以该部分作为基础,其波形图大致如下

3

主题

24

回帖

115

积分

少年

积分
115
发表于 2025-3-21 09:55:53 | 显示全部楼层
手册上上电时序是有要求,按照手册上上电时序给配置就可以
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|CrazyFPGA ( 粤ICP备2023025753号 )

GMT+8, 2025-5-2 23:03 , Processed in 0.047691 second(s), 20 queries .

Powered by CrazyFPGA X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表