c - 如何使用stm32f100板写入和读取I2C EEPROM



我正在团队中使用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 上读写数据。一些建议?

这不是初始化代码,而是纯软件(又名位敲击(I2C 驱动程序的系统特定代码的一部分。

除此之外,您还必须

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

然后可以使用通用I2C代码与EEPROM通信。EEPROM数据手册中详细介绍了通信协议。

也可以使用STM32F1内置的I2C外设,但对于初学者来说,作为此平台上的第一个任务,这将是非常具有挑战性的。不过,如果你想这样做,你可以研究相关的HAL源代码,看看它是如何完成的。

相关内容

  • 没有找到相关文章

最新更新