如题,STM32F429使用IIC通信的时候,是否需要外加上拉电阻?
看过很多资料,都说是需要上拉电阻,让人郁闷的是,这次设计硬件的时候,偏偏忘记了加,于是乎我进行了测试,
- //使能IO引脚时钟
- RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);
- //打开复用功能
- GPIO_PinAFConfig(GPIOB,GPIO_PinSource6,GPIO_AF_I2C1);
- GPIO_PinAFConfig(GPIOB,GPIO_PinSource7,GPIO_AF_I2C1);
- //配置GPIO
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
- GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//GPIO_PuPd_NOPULL;
- GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
- GPIO_Init(GPIOB, &GPIO_InitStructure);
复制代码 发现,使用内置的上拉,单片机可以正常IIC通信,如果使用NOPULL,则IIC工作不正常...
是否可以说,只要使用内部的上拉就可以省掉外部上拉?
有人做过这样的测试不?
|
你可以开启内部上拉,如果合适够用的话。内部上拉电阻大概40K上下。
你也可以外加上拉。
反正上拉是要的。
恩,我理解的也和你一样,但是我感觉IIC输出的时候,没用内部上拉,单片机的IO驱动能力足够,输入的时候上拉才有效(外部IIC的输出能力不足,被上拉至高)....