資源簡介
利用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
評論
共有 條評論