资源简介
利用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
相关资源
- STM32F103RC+ADC+DMA多通道采样LCD显示
- I2C读写AT24C02 基于STM32F103 cube116540
- 基于stm32f103ve的程序——跑马灯实验
- 基于STM32RCT6的步进电机驱动程序
- 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多机通信
评论
共有 条评论