此部分实现源码为:i2c_bitops.c i2c_bitops.h 1)模拟i2c抽象对外接口 根据上述封装的对外API,使用时,首先需要实现入口参数“i2c_dev”实例化,用模拟i2c即是调用模拟i2c相关接口。 int i2c_bitops_bus_xfer(struct ops_i2c_dev *i2c_bus,struct i2c_dev_message msgs[],unsigned long num) { struct i2c_dev_...
I2C_InitStruct.I2C_Mode = I2C_Mode_I2C; I2C_InitStruct.I2C_DutyCycle = I2C_DutyCycle_2; I2C_InitStruct.I2C_OwnAddress1 = STM32_I2C_OWN_ADDR; I2C_InitStruct.I2C_Ack = I2C_Ack_Enable; I2C_InitStruct.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit; // 初始化 I2C_Init(EEPROM_I2C...
I2C_Delay(); SCL_L(); I2C_Delay(); } /* * 函数名:void I2C_Stop(void) * 输入参数: * 输出参数:无 * 返回值:无 * 函数作用:I2C 停止信号 */ void I2C_Stop(void) { I2C_SDA_OUT(); SDA_L(); I2C_Delay(); SCL_H(); I2C_Delay(); SDA_H(); I2C_Delay(); } 1. 2. 3. 4...
I2C_InitStructure.I2C_DutyCycle =I2C_DutyCycle_2;//时钟占空比,只有进入到快速状态时才有用 100kHZ -40kHZ。小于100kHZ占空比是1:1I2C_InitStructure.I2C_AcknowledgeAddress =I2C_AcknowledgeAddress_7bit ;//STM32作为从机,可以相应几位的地址。I2C_InitStructure.I2C_OwnAddress1 =0x00; I2C_Init(I2C2 ,&I...
I2C(Inter IC Bus)是由Philips公司开发的一种通用数据总线 两根通信线:SCL(Serial Clock)、SDA(Serial Data) 同步,半双工 带数据应答 支持总线挂载多设备(一主多从、多主多从) 使用同步时序可以极大降低单片机对硬件电路的依赖 I2C硬件电路 所有I2C设备的SCL连在一起,SDA连在一起 ...
都说stm32 iic的时序是有问题的,今天测试了一下iic的中断,怎么调试也进不去,大家看看是怎么回事,我把源代码贴上 void InitI2c(void) { NVIC_InitTypeDef NVIC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; I2C_InitTypeDef
首先看i2c.h:#include "stm32f10x.h"#include "delay.h"//应答信号extern u8 ack;//初始化函数externvoidI2c_Init(void);//起动总线函数externvoidStart_I2c(void);//结束总线函数 externvoidStop_I2c(void);//应答子函数externvoidAck_I2c(u8 a);//字节数据发送函数externvoidSendByte(unsignedchar c)...
2. STM32的I2C通讯过程 (1)主发送器通讯过程 (2)主接收器通讯过程 3. I2C的结构体定义和库函数 一、I2C协议简介 I2C通讯协议(Inter-Integrated Circuit,读作I平方C、I方C) 是由Phiilps公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要USART、CAN等通讯协议的外部收发设备,现在被广泛地使用在系统内...
I2C_Init(I2C1, &I2C_InitStructure); I2C_Cmd(I2C1, ENABLE); } 一样的配置方案,I2C_Timing的意思请移步本博客GY30那篇文章。 I2C引脚为PB8 与PB9(使用的C8T6,f4p6可以用PA的) #define AT24C16_Base_Address 0xA0 void AT24C16_WriteByte(uint8_t Page,uint8_t WordAddress,uint8_t Data); ...
14 调用方式:void IIC_Init(void) 15 函数说明:私有函数,I2C专用,函数初始化 16 ---*/ 17 void IIC_Init(void) 18{ 19GPIO_InitTypeDef GPIO_InitStructure; 20 RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE ); //使能GPIOA时钟 21 22 GPIO_InitStructure.GPIO_Pin =...