STM32F4学习(五)——SPI和IIC

来源:互联网 发布:ntfs for mac 未安装 编辑:程序博客网 时间:2024/06/02 07:04

I2C(芯片间)总线接口连接微控制器和串行I2C总线。它提供多主机功能,控制所有I2C总线特定的时序、协议、仲裁和定时。支持标准和快速两种模式,stm32的I2C可以使用DMA方式操作。  

这里是用STM32与EEPROM的通讯,具体步骤如下:

1、配置I/O端口,确定并配置I2C的模式,使能GPIO和I2C时钟。

/* * 函数名: I2C_GPIO_Config * 描述  : 配置I2C1的I/O * 输入  : 无 * 输出  : 无 */ static void I2C_GPIO_Config(void){GPIO_InitTypeDef GPIO_InitStructure;/* 使能与I2C1有关的时钟 */RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);  RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1,ENABLE);        /* PB6-I2C1_SCL、PB7-I2C1_SDA*/  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_6 | GPIO_Pin_7;  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;       // 开漏输出  GPIO_Init(GPIOB, &GPIO_InitStructure);}
2、写:

检测SDA是否空闲;

->按I2C协议发出起始信号;

->发出7位器件地址和写模式;

->要写入的存储区首地址;

->有页写入方式或字节写入方式写入数据;

每个操作之后要检测“事件”确定是否成功。写完后检测EEPROM是否进入standby状态。

3、读:

检测SDA是否空闲;

->按I2C协议发出起始信号;

->发出7位器件地址和写模式(伪写);

->发出要读取的存储区首地址;

->重发起始信号;

->发出7位器件地址和读模式;

->接收数据;

每个操作之后要检测“时间”确定是否成功。

SPI在LIS302DL的时候在说明。



1 1
原创粉丝点击