gpt4 book ai didi

c - 如何使用stm32f100板读写I2C eeprom

转载 作者:太空宇宙 更新时间:2023-11-04 07:45:52 24 4
gpt4 key购买 nike

我正在团队中使用 stm32 f100 系列开发板进行一个项目。我应该使用外部 I2C eeprom 来存储一些数据,eeprom 如下:CAT24C512WI-GT3 我也有这个 I2C eeprom 的初始化代码:

void io_ee_scl(char s)
{
if(s)
GPIOB->BSRR=GPIO_PIN_6;
else
GPIOB->BRR=GPIO_PIN_6;
}

void io_ee_sda(char s)
{
if(s)
GPIOB->BSRR=GPIO_PIN_7;
else
GPIOB->BRR=GPIO_PIN_7;

}

void io_ee_wp(char s)
{
if(s)
GPIOB->BSRR=GPIO_PIN_5;
else
GPIOB->BRR=GPIO_PIN_5;
}
char read_eeprom() //read eeprom function
{
return ( (GPIOB->IDR&GPIO_PIN_7) ? 1 : 0 );
}

在互联网上,大多数指南都在谈论 HAL 库,但正如您所见,我的同事不使用 HAL 库,考虑到我是 stm32 的新手,我不知道如何在 eeprom 上读取和写入数据。一些建议?

最佳答案

这不是初始化代码,而是用于纯软件(也称为 bit-banging)I2C 驱动程序的系统特定代码的一部分。

除此之外,你还必须

  • RCC->APB2ENR中启用GPIOB外设时钟
  • GPIOB->CRL
  • 中将两个引脚置于 漏极开路、通用输出模式
  • 有一个delay function对于 I2C 时钟周期时间的 1/2,即如果它应该以 100 kHz 运行,单个周期需要 10 μs,您需要 5 μs 的延迟。

然后可以使用general I2C code与EEPROM通信。 EEPROM datasheet 中详细描述了通信协议(protocol).

也可以使用 STM32F1 的内置 I2C 外设,但作为初学者在该平台上的第一项任务,这将是相当具有挑战性的。不过,如果您想这样做,您可以研究相关的 HAL 源代码,看看它是如何完成的。

关于c - 如何使用stm32f100板读写I2C eeprom,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57174245/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com