佛山网站建设是哪个,做网站最低多少钱,wordpress药店主题,云南最近出了什么流行病STM32的IIC总线是存在bug#xff0c;感兴趣的可以上网搜一搜。我们可以使用两个I/O口和软件的方式来模拟stm32的iic总线的控制#xff0c;所以就不需要使用stm32的硬件控制器了#xff0c;同理数据手册中的I2C库函数也没有用了。 ROM#xff08;只读存储器#xff09;和… STM32的IIC总线是存在bug感兴趣的可以上网搜一搜。我们可以使用两个I/O口和软件的方式来模拟stm32的iic总线的控制所以就不需要使用stm32的硬件控制器了同理数据手册中的I2C库函数也没有用了。 ROM只读存储器和RAM随机存储器是计算机中常见的两种存储器。它们在功能和特点上有很多区别。 1. 可擦写性ROM是只读存储器它的内容在生产过程中被固化不能被修改或擦除。而RAM是可读写存储器可以随时修改和擦除其内容。 2. 数据保存ROM在断电时可以长久保存其中的数据而RAM需要持续供电以保持数据的存储。 3. 访问速度由于ROM中的数据是固化的所以访问速度较快。而RAM中的数据可以随时被修改所以访问速度相对较慢。 4. 存储容量ROM的存储容量较大可以存储大量的数据和程序。而RAM的存储容量相对较小。 5. 用途ROM主要用于存储计算机的固件和操作系统等重要程序如BIOS。而RAM则主要用于存储程序和数据以供CPU进行读写操作。 总之ROM是只读存储器内容不能修改访问速度快存储容量大适用于存储固化的数据和程序而RAM是可读写存储器内容可以随时修改访问速度相对较慢存储容量较小适用于临时存储数据和程序。 EEPROM可读可擦除。这个EEPROM是很有用的例如 写了一个程序到板子中让一个电机转动可以通过上位机的设置去改变它的电机转动频率。A地需要电机500rad/minB地需要电机200rad/min。因为板子的程序是固定的不能修改所以我们只能通过上位机去给板子一个参数改变他的转速。 可以看到有SCL和SDA分别为时钟线和数据线所以IIC是同步串行通信。 从数据手册可以看到A0-A2为地址输入WP为写保护
IIC和SPI在多外设的接线上是不同的SPI每个外设都需要一个片选信号线而IIC的所有外设都挂在这两个总线上IIC通过A0-A2地址去选择外设 R/W则是区分读操作还是写操作。
前面的1k2k2kbit则是表示看芯片的内部存储空间这里说的AT24C02则是2K。 查看STM32F103Cx管脚手册可以看到PB6I2C1_SCLPB7I2C1_SDA。因为PB6连接时钟线stm32必须一直输出高电平和低电平来控制读写所以在配置的时候PB6就要为输出模式。而PB7为输入时stm32读取AT24C02PB7为输出时stm32传输数据到AT24C02所以可以把PB7的模式来回改动什么时候输入就设置为输入什么时候输出就设置为输出。 #include bsp_iic_at24c02.h//PB6:SCL PB7:SDA
void IIC_Configuration(void)
{GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);GPIO_InitStructure.GPIO_Pin GPIO_Pin_6 | GPIO_Pin_7;GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode GPIO_Mode_Out_PP;GPIO_Init(GPIOB, GPIO_InitStructure);GPIO_WriteBit(GPIOB, GPIO_Pin_6 | GPIO_Pin_7, Bit_RESET);
}#ifndef __BSP_IIC_AT24C02_H__
#define __BSP_IIC_AT24C02_H__#include stm32f10x.hvoid IIC_Configuration(void);#endif