资源简介
文件中包括基于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库)修改
相关资源
- stm32f407上的两个can发送和接收例程
- STM32 led 时钟
- STM32 2.4G通信例程
- 直流无刷电机方波驱动 stm32 例程代码
- STM32中文资料
- STM32蓝牙和串口程序
- STM32f103超声波模块例程
- stm32f103c8t6 4 oled.rar
- stm32f030 IAP Demo(原创)
- STM32基于rt_thread操作系统的SDHC卡文件
- 用DIO 做的I2C程式
- DAS1302蜂鸣 独立按键 闹钟设定 IIC存储
- NRF24L01实现51与STM32双向通讯
- STM32F103 串口程序(完整版)
- stm32 ds18b20 温度传感器 测试通过
- stm32官方例程
- STM32F103定时器中断程序
- [免费]基于stm32f103ze 的OLED驱动代码
- STM32F103RBT6驱动UC1698控制芯片的160160黑
- STM32F103 DS18B20 V3.5.0固件库驱动程序工
- STM32定时器使用入门。看了这个程序会
- SIM908 SDIO FSMC STM32 FIFO
- STM32F103 CC2500完整驱动(模拟SPI)
- I2C总线接口设计
- AD7606采集程序
- 8051F040SMBUS多机通信
- stm32 用SPI 方式读写 SDHC
- stm32通过DMA方式采集ADC数据
- 意法半导体STM全系列微控制器STM32ST
- 基于STM32芯片的SX1278 驱动 LORA.rar
评论
共有 条评论