stm32的afio初始化代码_如何正确初始化I2C stm32?

I want to get data from ADXL345 accelerometer,but seems that I incorrectly connect it.

SCL- PC6(with 10k resistor)

SDA- PC7(with 10k resistor)

SDO- GND

CS - VCC

GND - GND

3.3v - VCC

Here is my code to initalize:

void I2CG_Init(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

I2C_InitTypeDef I2C_InitStructure;

RCC_AHBPeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);

RCC_AHBPeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);

// I2CG clock enable

RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2CG, ENABLE);

RCC_AHBPeriphClockCmd(RCC_APB1Periph_I2CG, ENABLE);

// GPIOB clock enable

// I2CG SCL and SDA configuration

GPIO_InitStructure.GPIO_Pin = SCL|SDA;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init(GPIOC, &GPIO_InitStructure);

// Enable I2CG reset state

RCC_APB1PeriphResetCmd(RCC_APB1Periph_I2CG, ENABLE);

// Release I2CG from reset state

RCC_APB1PeriphResetCmd(RCC_APB1Periph_I2CG, DISABLE);

I2C_DeInit(I2C1);

I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;

I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_16_9;

I2C_InitStructure.I2C_OwnAddress1 = 1;

I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;

I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;

I2C_InitStructure.I2C_ClockSpeed = ClockSpeed;

I2C_Init(I2CG, &I2C_InitStructure);

I2C_Cmd(I2CG, ENABLE);

I2C_AcknowledgeConfig(I2CG, ENABLE);

}

In one example I saw

GPIO_PinAFConfig(GPIOC,SCLSource,GPIO_AF_I2CG);

GPIO_PinAFConfig(GPIOC,SDASource,GPIO_AF_I2CG);

But I don't have this API available.

Please help me. I tried many solutions and also tried to connect through SPI, but no success :(

Please help with I2C.

解决方案SCL- PC6(with 10k resistor)

SDA- PC7(with 10k resistor)

SCL and SDA should be connected directly. You should use pull-up resistors like on this scheme: http://en.wikipedia.org/wiki/File:I2C.svg

Your initialization code looks ok, so maybe hardware wiring is wrong?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值