我正在团队中使用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源代码,看看它是如何完成的。