资源简介
文件中包括基于STM32实现的模拟I2C操作,经测试能正确读写I2C设备。
代码片段和文件信息
//---------------------------------------------------------------//
//- 文件名称: I2C.c
//---------------------------------------------------------------//
//- 作 者 : ggyy
//---------------------------------------------------------------//
//- 版 本 : V1.0
//---------------------------------------------------------------//
//- 日 期 : 20150313
//---------------------------------------------------------------//
//- 描 述 : 文件实现模拟I2C相关时序操作,单片机为STM32,使用
//- 的是V3.5.0的库
//---------------------------------------------------------------//
#include “I2C.h“
#include “delay.h“
//---------------------------------------------------------------//
//- 函数名称: I2C_Config
//---------------------------------------------------------------//
//- 函数功能: I2C初始化,包括引脚时钟和引脚配置
//---------------------------------------------------------------//
//- 函数参数:
//---------------------------------------------------------------//
//- 返回值 : 无
void I2C_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
//时钟使能
RCC_APB2PeriphClockCmd(RCC_I2C_SCL ENABLE);
RCC_APB2PeriphClockCmd(RCC_I2C_SDA ENABLE);
//SCL,配置成推挽输出
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_I2C_SCL;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_SetBits(GPIO_I2C_SCL GPIO_Pin_I2C_SCL);
GPIO_Init(GPIO_I2C_SCL &GPIO_InitStructure);
//SDA,配置成开漏输出
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_I2C_SDA;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_SetBits(GPIO_I2C_SDA GPIO_Pin_I2C_SDA);
GPIO_Init(GPIO_I2C_SDA &GPIO_InitStructure);
}
//---------------------------------------------------------------//
//- 函数名称: I2C_Start
//---------------------------------------------------------------//
//- 函数功能: I2C开始信号
//---------------------------------------------------------------//
//- 函数参数: 无
//---------------------------------------------------------------//
//- 返回值 : 无
void I2C_Start(void)
{
//当SCL为高电平的时候,SDA从高电平跳变到低电平表示开始信号。
I2C_SDA_SET; //拉高SDA,准备在SCL为高电平的状态下拉低形成开始信号
delay_us(4);
I2C_SCL_SET; //拉高SCL,准备让SDA拉低形成开始信号
delay_us(4);
I2C_SDA_RESET; //拉低SDA,产生开始信号
delay_us(4);
I2C_SCL_RESET;
delay_us(4);
}
//---------------------------------------------------------------//
//- 函数名称: I2C_Stop
//---------------------------------------------------------------//
//- 函数功能: I2C结束信号
//---------------------------------------------------------------//
//- 函数参数: 无
//---------------------------------------------------------------//
//- 返回值 : 无
void I2C_Stop(void)
{
//当SCL为高电平的时候,SDA从低电平跳变到高电平表示结束信号。
I2C_SCL_RESET; //拉低SCL,防止在SCL为高电平的状态下改变SDA
delay_us(4);
I2C_SDA_RESET; //拉低SDA,准备在SCL为高电平的状态下拉高形成结束信号
delay_us(4);
I2C_SCL_SET; //拉高SCL,准备让SDA拉高形成结束信号
delay_us(4);
I2C_SDA_SET; //拉SDA,产生开始信号
delay_us(4);
}
//-------------------------------------
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 11696 2015-03-13 21:55 STM32_I2C\I2C.c
文件 4512 2015-03-13 21:54 STM32_I2C\I2C.h
文件 187 2015-03-13 22:03 STM32_I2C\readme.txt
目录 0 2015-03-13 22:03 STM32_I2C
----------- --------- ---------- ----- ----
16395 4
- 上一篇:老男孩linux笔试题
- 下一篇:CadLib(根据国外CadLib库)修改
相关资源
- STM32电机闭环代码.7z
- 基于STM32的1MHz、1KHz和1Hz同步方波产生
- Arduino LiquidCrystal_I2C库
- I2C slaver 从机 Verilog代码实现
- STM32库函数DS1302驱动文件
- 三线制实时时钟的读写
- STM32 DS1302驱动
- i2c_master verilog源码与testbench
- STM32 DS18b20
- 基于STM32F103C8T6的手持MP3完整PCB工程文
- STM32L4超低功耗特性概述
- STM32智能家居完整项目代码
- 用STM32的内置Flash做一个超小U盘
- stm32基于轮询方式的串口收发程序
- STM32F030C8T6串口例程
- RFID RC522 stm32f103c8t6 读写demo
- STM32 单位时间内输入方波个数统计函
- 可控硅调节220光程序和原理图.zip
- STM32_ad7705程序
- 模拟I2C读写24C256和24C02
- stm32 控制语音芯片 ISD1760
- STC15F2K60S2 iic 驱动程序
- STM32F103VCT6设计
- stm32f103c+电机驱动和测速+can+rs485等原
- stm32 uart1 发送接收数据
- SHT75温湿度气压传感器驱动程序
- 完美解决proteus仿真stm32
- FM模块发射模块KT0803L IIC驱动工程
- 51+PCF8574+1602
- 基于STM32的示波器原理图
评论
共有 条评论