• 大小: 5KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-08
  • 语言: 其他
  • 标签: stm32  iic  i2c  

资源简介

利用stm32f105rc的IIC通讯(官方库实现),完全可用的代码,还包括读取三轴加速度计和三轴陀螺仪数据实例,亲测成功

资源截图

代码片段和文件信息

#include “system_i2c.h“
//三轴数字加速度计和三轴数字磁力计IIC协议 、三轴数字陀螺仪IIC协议


extern Int16DATA  AccMagData; //加速度计与磁力计的数据结构体指针
extern GyroDATA  GyrosData;
void RCC_configuration(void)
{
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB  ENABLE );
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC  ENABLE );
RCC_APB1PeriphClockCmd( RCC_APB1Periph_I2C1  ENABLE );
RCC_APB1PeriphClockCmd( RCC_APB1Periph_I2C2  ENABLE );
}

void IIC2_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
I2C_InitTypeDef I2C2_InitStructure;
//I2C1_InitStructure
GPIO_DeInit(GPIOB);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10|GPIO_Pin_11;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;       
GPIO_Init(GPIOB &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_9;//SA0和SA1
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //推挽输出
GPIO_Init(GPIOC &GPIO_InitStructure);
GPIO_SetBits(GPIOCGPIO_Pin_6);
delay_ms(5);
GPIO_ResetBits(GPIOCGPIO_Pin_6);  //FXOS8700复位后,RESET位为低电平
GPIO_ResetBits(GPIOCGPIO_Pin_7);
GPIO_ResetBits(GPIOCGPIO_Pin_9);//设置FXOS8700的地址为0x1E

I2C_DeInit(I2C2); 
I2C2_InitStructure.I2C_Mode = I2C_Mode_I2C;            
I2C2_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;    
I2C2_InitStructure.I2C_OwnAddress1 = 0xA0;             
I2C2_InitStructure.I2C_Ack = I2C_Ack_Enable;         
I2C2_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit; 
I2C2_InitStructure.I2C_ClockSpeed = 100000;       
I2C_Cmd(I2C2 ENABLE);        
I2C_Init(I2C2 &I2C2_InitStructure);
I2C_AcknowledgeConfig(I2C2 ENABLE); 

}

void IIC1_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
I2C_InitTypeDef I2C1_InitStructure;

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;       
GPIO_Init(GPIOB &GPIO_InitStructure);


GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1;//SA0和SA1
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //推挽输出
GPIO_Init(GPIOC &GPIO_InitStructure);

GPIO_ResetBits(GPIOCGPIO_Pin_1);
delay_ms(5);
GPIO_SetBits(GPIOCGPIO_Pin_1);  //FXOS21000复位后,RESET位为高电平
GPIO_SetBits(GPIOCGPIO_Pin_0);//设置FXAS21000地址为0x42

I2C_DeInit(I2C1);
I2C1_InitStructure.I2C_Mode = I2C_Mode_I2C;    
I2C1_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;
I2C1_InitStructure.I2C_OwnAddress1 = 0xA1; 
I2C1_InitStructure.I2C_Ack = I2C_Ack_Enable;   
I2C1_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit; 
I2C1_InitStructure.I2C_ClockSpeed = 100000;
I2C_Cmd(I2C1 ENABLE);
I2C_Init(I2C1 &I2C1_InitStructure);
I2C_AcknowledgeConfig(I2C1 ENABLE);

}
//I2C2写一个字节数据,id为从设备地址,write_address为从设备寄存器地址,byte为要写入的地址
void I2C_WriteByte(I2C_TypeDef* I2Cxu8 idu8 write_addressu8 byte)

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2014-08-08 15:31  i2c\
     文件       12032  2014-07-22 09:01  i2c\i2c.c
     文件        4822  2014-06-22 17:58  i2c\i2c.h

评论

共有 条评论