26. 常见i2c地址_修改i2c速率

一、 如何修改i2c 速率
    1. 在设备驱动代码中i2c_probe(),添加:
        spin_lock(&kdsensor_drv_lock);
        g_pstI2Cclient->timing = i2cSpeed;    // 遇到过摄像头读不到id: 300 -> 100
        spin_unlock(&kdsensor_drv_lock);

    2. 直接修改默认值:
        dtsi:
        i2c2:i2c@11009000 {
            compatible = "mediatek,mt6735m-i2c";
            cell-index = <2>;
            reg = <0x11009000 0x1000>;
            interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_LOW>,
                        <GIC_SPI 101 IRQ_TYPE_LEVEL_LOW>;
            def_speed = <100>;        // 修改为300khz -> 没有生效
        };
    
        如果大于400,需要修改出错判断条件:
        kernel/driver/i2c/busses/i2c-qup.c
        qup_i2c_probe()
            of_property_read_u32(node, "clock-frequency", &clk_freq);
            if (!clk_freq || clk_freq > 400000) {    /* We support frequencies up to FAST Mode (400KHz) */
                dev_err(q
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这段代码是STM32单片机中I2C总线的初始化函数,主要包含以下几个步骤: 1. 配置I2C总线的GPIO引脚: ``` GPIO_InitStructure.GPIO_Pin = IIC_SCL_PIN | IIC_SDA_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(IIC_SCL_PORT, &GPIO_InitStructure); ``` 这里使用GPIO_Mode_AF_OD模式,表示这两个引脚是复用推挽输出模式,以便于与I2C总线进行通讯。同时,也开启了GPIOB总线时钟,使得GPIOB端口能够正常工作。 2. 配置I2C总线的时钟、模式、地址等参数: ``` I2C_InitStructure.I2C_Mode = I2C_Mode_I2C; I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2; I2C_InitStructure.I2C_OwnAddress1 = 0x00; I2C_InitStructure.I2C_Ack = I2C_Ack_Enable; I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit; I2C_InitStructure.I2C_ClockSpeed = 100000; I2C_Init(I2C1, &I2C_InitStructure); ``` 这里使用I2C_Mode_I2C模式,表示I2C总线是标准I2C模式。I2C_DutyCycle_2表示时钟周期的占空比为2。I2C_OwnAddress1表示自身的I2C地址,在本例中设为0x00。I2C_Ack_Enable表示使能应答信号,I2C_AcknowledgedAddress_7bit表示I2C总线的寻址模式为7位地址模式。I2C_ClockSpeed表示I2C总线的通信速率为100kHz。以上参数的具体含义可以参考STM32官方文档。 3. 使能I2C总线: ``` I2C_Cmd(I2C1, ENABLE); ``` 这里使用I2C_Cmd函数使能I2C总线,以便于进行I2C通讯。 综上,这段代码主要是用来初始化I2C总线并使能,以便于后续进行I2C通讯。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值