资源简介
利用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
- 上一篇:IOS 车牌号录入 自定义键盘
- 下一篇:Unity合并网格Demo
相关资源
- stm32 超声波测距程序
- stm32f4 时钟配置工具
- STM32 驱动步进电机 原理图
- STM32封装库
- 库函数驱动外设的应用:应用STM32的
- STM32F767核心板封装库
- STM32L152 段式液晶驱动4*8,可阅读扩展
- STM32F401CCU6跑马灯实验性源程序
- STM32F407串口IAP
- 用STM32驱动的4*4行列矩阵键盘
- MLX90614 STM32的驱动
- stm32在ubuntu linux下开发测试源文件
- CH450的驱动代码
- stm32f429电容触摸按键程序
- 模板工程_MDK5.14_F103C8T6
- STM32F4读写SD2405实时时钟程序
- ALIENTEK MINISTM32 实验3 串口实验
- STM32驱动OV2710
- TCS-34725 stm32程序
- rt_thread_nano_stm32f30x
- adc实验,用于在LCD模块上面显示ADC转
- 一对多 多字节的can总线通信
- stm32f4温度补偿超声波测距
- Qt_USB_I2C_MPU6050.rar
- STM32CubeMX培训课程
- PIC单片机 IIC通信 proteus仿真文件图
- I2C飞利浦官方详细说明文档
- Arduino I2Cdev库
- 基于STM32的医院点滴系统
- 带移植说明的xmodem源码STM32
评论
共有 条评论