STM32F030 硬件I2C驱动 AT24C16

这篇博客主要介绍了如何在STM32F030上配置I2C驱动AT24C16,特别提到STM32F030的I2C配置与F1系列不同,需要特殊处理。作者分享了配置方案、相关函数以及读写操作的步骤,并强调理解器件地址和页地址的重要性。同时提醒注意写操作的间隔时间,以避免I2C卡死。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网络上很多F1系列的ATC24的读写程序,但F0几乎没有。由于F0完全重写了I2C,所以以往的代码并不能直接使用,修改事件、接口上会浪费很多时间,特别是对于使用F0系列进行入门的新手。
在此十分感谢 畅学电子网 的对于AT24C16的资料,特别是AT24C16地址的解释。调试过程中这篇文章给了很大的帮助。建议不想只当伸手党的同志们认真阅读,否则只会Ctrl C Ctrl V,你又怎么能说自己是嵌入式开发者?

http://www.eeskill.com/group/topic_scan/id/282

废话不多说,进入正题。(哈哈,每篇文章都用这个开头)

I2C 的配置

static void InitI2C()
{
  I2C_InitTypeDef I2C_InitStructure;
  GPIO_InitTypeDef GPIO_InitA;
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1,ENABLE);//使能I2C1,I2C2的时钟
  RCC_I2CCLKConfig(RCC_I2C1CLK_SYSCLK);//时钟源设定
  GPIO_PinAFConfig(GPIOB, GPIO_PinSource8, GPIO_AF_1);  //配置PB8 成第二功能引脚 I2C1_SCL
  GPIO_PinAFConfig(GPIOB, GPIO_PinSource9, GPIO_AF_1);  //配置PB9 成第二功能引脚 I2C1_SDA
  GPIO_InitA.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9;
  GPIO_InitA.GPIO_Mode = GPIO_Mode_AF;
  GPIO_InitA.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitA.GPIO_OType = GPIO_OType_PP;
  GPIO_InitA.GPIO_PuPd = GPIO_PuPd_UP;
  GPIO_Init(GPIOB, &GPIO_InitA);
  I2C_InitStructure.I2C_Mode = I2C_Mode_SMBusHost;
  I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
  I2C_InitStructure.I2C_AnalogFilter = I2C_AnalogFilter_Enable;
  I2C_InitStructure.I2C_DigitalFilter = 0x01;
  I2C_InitStructure
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值