i2c_delay_us(I2C_DELAY); SW_I2C_SCL_HIGH; i2c_delay_us(I2C_DELAY); //再次将SCL=0,并且将SDA脚设置为输出 SW_I2C_SCL_LOW; i2c_delay_us(I2C_DELAY); SW_I2C_SDA_OUTPUT; i2c_delay_us(I2C_DELAY); return ack_nack; } 5、发送ACK给数据发送方 static void sw_i2c_send_ack(sw_i2c_gpio...
看视频分析i2c_outb函数:drivers\i2c\algos\i2c-algo-bit.c 分析上述函数可以发现传输一个bit用时2 *udelay,这个udelay就是在设备树里面设置的delay_us,如果其值为5,表示5us*2 freq=100KHZ 4. 怎么使用I2C-GPIO 设置设备数,在里面添加一个节点即可,示例代码看上面: compatible = "i2c-gpio"; 使用pinctrl把 ...
delay_us(4); IIC_SDA=0;//START:when CLK is high,DATA change form high to low delay_us(4); IIC_SCL=0;//钳住I2C总线,准备发送或接收数据 } //产生IIC停止信号 void IIC_Stop(void) { SDA_OUT();//sda线输出 IIC_SCL=0; IIC_SDA=0;//STOP:when CLK is high DATA change form low to...
i2c-gpio,delay-us = <5>; /* ~100 kHz */ #address-cells = <1>; #size-cells = <0>; }; 1. 2. 3. 4. 5. 6. 7. 8. 9. 把上述代码,放入arch/arm/boot/dts/100ask_imx6ull-14x14.dts的根节点下面。 3. 确认内核已经配置了I2C-GPIO 查看内核目录下的.config,如果未设置CONFIG_I2C_...
#define DELAY(us) time_delay_us(us) /* * I2C by GPIO simulated clear 0 routine. * * @param whichline: GPIO control line * */ static void i2c_clr(unsigned char whichline) { unsigned char regvalue; if(whichline == SCL) { regvalue = HW_REG(GPIO_0_DIR); regvalue |= SCL; HW...
Delay()函数用于进行程序中SDA、SCL的高低电平延时,在例程中实际被定义成DELAY_US()函数。在移植过程需要根据实际情况修改宏定义,更改成适用用户MCU的延时函数,不需要对后续程序进行修改。 3.2 I2C通讯功能函数 void I2C_Start(void); void I2C_Finish(void); Uint16 I2C_Wait_Ack(void); v...
(1); delay_us(5); set_scl(0); delay_us(5); } set_sda(1); // 释放SDA线 set_scl(1); delay_us(5); ack = gpio_get_value(SDA_GPIO); set_scl(0); return ack == 0; // 0表示收到ACK,1表示NACK } // 通过SDA接收一个字节 unsigned char i2c_read_byte(int ack) { int i;...
(I2C_Delayus); IIC_SDA0;//START: CLK is ,DATA change form highto low Delay_us(I2C_Delayus); IIC_SCL=0;//钳住IIC总线,准备发送或接收数据 #endif }//*** ©2022 Baidu |由 百度智能云提供计算| 使用百度前必读 | 文库协议 | 网站地图 百度营销 ...
STM32用GPIO模拟IIC(I2C)通讯C语言源码 实测可用
TCA6418E www.ti.com.cn ZHCSA65 – SEPTEMBER 2012 由 I2C 控制的 18 通道通用输入输出 (GPIO) 扩展器 查询样品: TCA6418E 特性 1 • 1.65 V 至 3.6 V 的工作电源电压范围 • 18 个可被置为输入或输出的 GPIO • 在非 GPIO 引脚上静电放电 (ESD) 保护超过 JESD 22 标准 – 2000V 人体模型...