I2C上拉电阻问题分析(基于stm32 HAL库)
在使用stm32读写 ST温湿度hts221时,使用I2C总线,总线上还挂在了别的传感器,发现有时候可以读出数据,有时候读不出数据,一直是0。
首先,stm32 配置I2C IO时,使用的是AF_OD,即使用复用开漏输出,这也是官方I2C所要的方式,电流电压取决于外部电路。同时IO也配置了内部上拉。
/**
* @brief I2C MSP Initialization
* This function configures the hardware resources used in this example:
* - Peripheral's clock enable
* - Peripheral's GPIO Configuration
* - DMA configuration for transmission request by peripheral
* - NVIC configuration for DMA interrupt request enable
* @param hi2c: I2C handle pointer
* @retval None
*/
void HAL_I2C_MspInit(I2C_HandleTypeDef *hi2c)
{
GPIO_InitTypeDef GPIO_InitStruct;
RCC_PeriphCLKInitTypeDef RC

在基于STM32 HAL库的I2C通信中遇到问题,使用10K上拉电阻导致有时无法读取ST温湿度传感器HTS221的数据。通过逻辑分析仪观察到I2C时钟在空闲时保持低电平,怀疑上拉电阻过大。尝试将IO输出模式改为AF_PP并更换不同阻值的上拉电阻,发现1K电阻时系统恢复正常工作。I2C总线负载容限对于通信速度有特定要求,需要考虑电容影响。
最低0.47元/天 解锁文章
4574

被折叠的 条评论
为什么被折叠?



