I2C_delay(); if(SDA_read) return FALSE;//SDA线为高电平则总线出错,退出 SDA_L; I2C_delay(); #else SDA_OUT(); //sda线输出 IIC_SDA=1; IIC_SCL=1; Delay_us(I2C_Delayus); IIC_SDA=0;//START:when CLK is high,DATA change form high to low Delay_us(I2C_Delayus); ...
STM32用GPIO模拟IIC(I2C)通讯C语言源码 实测可用
i2c-gpio.c它是gpio模拟I2C总线的驱动,总线也是个设备,在这里将总线当作平台设备处理,那驱动当然是平台设备驱动,看它的驱动注册和注销函数 static int __initi2c_gpio_init(void){int ret;ret=platform_driver_register(&i2c_gpio_driver);if(ret)printk(KERN_ERR"i2c-gpio:probe failed:%d\n",ret);returnret...
[源码](https://gitee.com/super_glob/linux-driver-code/tree/master/2023.06.24_i2c_gpio) ## 1. 设备树 gpio模拟iic ```c i2c_gpio: i2c-gpio { /* gpio模拟iiccompati
1、linux gpio 模拟 i2c 的使用用 GPIO 模拟 I2C 总线这个结构专门用于数据传输相关的 addr 为 I2C 设备地 址, flags 为一些标志位, len 为数据的长度, buf 为数据。 这里宏定义的一些标志还是需要了解一下。I2C_M_TEN 表示 10 位设备地址I2C_M_RD 读标志I2C_M_NOSTART 无起始信号标志I2C_M_IGNORE_NAK...
来看这个具体的i2c_outb函数 [html] view plaincopyprint? 1.1. static int i2c_outb(struct i2c_adapter *i2c_adap, unsigned char c) 2.2. { 3.3. int i; 4.4. int sb; 5.5. int ack; 6.6. struct i2c_algo_bit_data *adap=i2c_adap->algo_data;...
void I2C_Stop(void){ SDA_OUT;SCL_L;//SCL = 0 SDA_L;//SDA = 0 myDelay;SCL_H;//SCL ...
在I2C_SCL时钟信号高电平期间, * * 保持发送信号I2C_SDA保持稳定 * 输 入 : num ,ack * 输 出 : 0或1。发送成功返回1,发送失败返回0 * 备 注 : 发送完一个字节I2C_SCL=0, 需要应答则应答设置为1,否则为0 ***/ uchar I2C_SendByte(uchar dat, uchar ack) { uchar a = 0,b = 0;//最大...
一般来讲AD单元的扩展有两种方法,一种是通过英创工控主板的精简ISA总线扩展,另一种则是通过同步串口的方法,如SPI、I2C接口,与AD连接。前一种方法所涉及的AD芯片一般具有并行接口,如MAX197等;而后一种方法的AD芯片则带有SPI或I2C接口。采用SPI或I2C接口的AD芯片,可使芯片的管脚数大幅减少,进一步使芯片本身的尺寸也...
View Code .c View Code 6、中断 View Code 7、Sensor参数 View Code 8、总结: (1)、USART配置时,RX和TX脚都设置为复用模式GPIO_Mode_AF,TX设置为推挽输出,RX设置为开漏,并都上拉。 (2)、I2C配置时,由于是用GPIO 模拟I2C,所以都设置为开漏、无上拉(SCL和SDA都外接了上拉4.7K的电阻)、输出模式,注意...