你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F407ZE_I2C1必须用PB9,否则SCK无波形

[复制链接]
邓海峰 提问时间:2023-9-25 18:18 / 未解决
型号:[STM32F407](http://openedv.taobao.com/)ZE
硬件I2C1,使用STM32CubeMX生成代码,
发现I2C1故障,现象是SCL无波形,排除端口以及上拉问题
查看数据手册I2C1有两种端口算着:I2C_SCL:PB6或PB7;  I2C_SDA:PB7或PB9
发现只要PB9不参与,就出现SCL端口没有波形(用示波器,常为高)
设置部分的代码,是用STM32CubeMX生成的,如下:
主函数代码:
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_I2C1_Init();
MX_I2C2_Init();
uint8_t TMP8[3]={0xAA,0XAA,0XAA};
while(1)
{
HAL_I2C_Master_Transmit(&hi2c1, 0x80,TMP8,3,100);
HAL_I2C_Master_Transmit(&hi2c2, 0x80,TMP8,3,100);
}
}

其中端口设置在文件:stm32f4xx_hal_msp.c中
void HAL_I2C_MspInit(I2C_HandleTypeDef* hi2c)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
if(hi2c->Instance==I2C1)
{
__HAL_RCC_GPIOB_CLK_ENABLE();
/**I2C1 GPIO Configuration
PB6     ------> I2C1_SCL
PB7     ------> I2C1_SDA
*/
//PB8     ------> I2C1_SCL
//PB9     ------> I2C1_SDA
GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;//错误,SCLK无波形
GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_9;//OK,SCLK有波形
GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_7;//错误,SCLK无波形
GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9;//OK,SCLK有波形
GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF4_I2C1;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

__HAL_RCC_I2C1_CLK_ENABLE();
}
else if(hi2c->Instance==I2C2)
{

………………

}

}

请教,这是什么原因

这里不讨论软件模拟I2C,谢谢!
收藏 评论1 发布时间:2023-9-25 18:18

举报

1个回答
邓海峰 回答时间:2023-9-26 08:36:12

是硬件问题,SDA与其它地方短路,正在排除,谢谢!

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版