通过软件模拟I2C通信协议的时序,使用MCU的GPIO(通用输入输出)管脚来模拟SCL(串行时钟线)和SDA(串行...
#define SET_SDA_OUTPUT DrvGPIO_Open(E_PORT2, 6,E_IO_OUTPUT) //SDA管脚设置为输出状态 #define SET_SDA_INPUT DrvGPIO_Open(E_PORT2, 6,E_IO_INPUT) //SDA管脚设置为输入状态 #define GET_SDA_DATA DrvGPIO_GetBit(E_PORT2, 6) //读取SDA管脚数据状态 2.START状态的 实现 void I2C_Start(voi...
实验目的:本实验通过GPIO模拟I2C总线时序,对EEPROM设备AT24C02进行读写操作。1) 引脚初始化:GPIO端口...
IIC初始化配置代码如代码清单I2C初始化配置所示,首先进行GPIO初始化,然后对IIC外设进行初始化。注意本例程仅讲解IIC0的外设引脚及模块初始化,若其他IIC模块可参考修改。void I2C_init(uint32_t I2Cx){ GPIO_Configuration_I2C(I2Cx); i2c_clock_config(I2Cx, 400000, I2C_DTCY_2); /* I2C address config...
i2c_enable(I2Cx); } 时钟及 GPIO 引脚配置 时钟及GPIO引脚配置如代码清单I2C时钟及GPIO引脚配置所示,在例程中PB6、PB7引脚需要配置为复用开漏模式。 void GPIO_Configuration_I2C(uint32_t I2Cx) { uint32_t GPIO_SDA; uint32_t GPIO_SCL; uint32_t GPIO_Pin_SDA,GPIO_Pin_SCL; ...
虽然I2C总线速率可达到400kbps,最早由于对从设备访问的实时性要求不高,很多工程师喜欢使用GPIO来模拟I2C时序,通过端口移位进行数据的收发,速率低,占用MCU的负载大,但好处是容易移植。后来由于电子系统的复杂程度越来越多,要求每个节点的访问尽量占用CPU时间少,逐渐MCU内置硬件I2C被启用。
复用开漏输出模式是将GPIO引脚配置为特定外设接口(如I2C、SPI等)时的输出模式。在这种模式下,GPIO引脚的功能由MCU内部的片上外设控制,而不是由用户直接控制。这种模式的优点是提高了系统的灵活性和可扩展性,因为可以通过软件配置来改变GPIO引脚的功能而无需更改硬件电路。然而,需要注意的是,在配置复用开漏输出模式时,...
因为很多电工都说,STM32 硬件 I2C有BUG、不稳定、死机等等……最后都使用GPIO模拟I2C。
◼ 模拟输入/输出配置;◼ 备用功能输入/输出配置;◼ 端口锁定配置。对于 GD32 某些系列 MCU 的 GPIO 可能具有更多功能,如时钟、I2C、SPI、CAN、USART、USB、ADC、DAC 等,在进行电路板设计前应查看该系列的数据手册与用户手册,对比所使用的 GPIO 是否满足需求。2.GPIO 结构 在 GD32 MCU 中,通常有...