OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 1536|回复: 6

求助:STM32F407ZE,I2C1,硬件故障

[复制链接]

25

主题

78

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
234
金钱
234
注册时间
2015-12-16
在线时间
32 小时
发表于 2023-9-25 16:10:39 | 显示全部楼层 |阅读模式
1金钱
型号:STM32F407ZE
硬件I2C1,使用STM32CubeMX生成代码,
发现I2C1故障,现象是SCL无波形,排除端口以及上拉问题
查看数据手册I2C1有两种端口算着:I2C_SCLB6或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;//OK,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,谢谢!

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

25

主题

78

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
234
金钱
234
注册时间
2015-12-16
在线时间
32 小时
 楼主| 发表于 2023-9-25 16:12:24 | 显示全部楼层
上贴第4行,更正为:
查看数据手册I2C1有两种端口算着:I2C_SCL PB6或PB7; I2C_SDA:PB8或PB9

不知道如何编辑更改,这里勘误
回复

使用道具 举报

0

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
150
金钱
150
注册时间
2023-5-17
在线时间
28 小时
发表于 2023-9-25 17:24:57 | 显示全部楼层
发现只要PB9不参与,就出现SCL端口没有波形(用示波器,常为高) GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_7;//OK,SCLK有波形  是不是矛盾了
回复

使用道具 举报

25

主题

78

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
234
金钱
234
注册时间
2015-12-16
在线时间
32 小时
 楼主| 发表于 2023-9-25 18:12:10 | 显示全部楼层
qq1646544 发表于 2023-9-25 17:24
发现只要PB9不参与,就出现SCL端口没有波形(用示波器,常为高) GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_P ...

笔误,拷贝后没有更改,应该为:
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;//OK,SCLK无波形
    GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9;//OK,SCLK有波形
回复

使用道具 举报

25

主题

78

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
234
金钱
234
注册时间
2015-12-16
在线时间
32 小时
 楼主| 发表于 2023-9-25 18:23:13 | 显示全部楼层
笔误,应该为:
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有波形

帖子没有找到编辑功能,导致发现错误后,只能回复来更正
回复

使用道具 举报

25

主题

78

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
234
金钱
234
注册时间
2015-12-16
在线时间
32 小时
 楼主| 发表于 2023-9-26 08:36:48 | 显示全部楼层
硬件问题
回复

使用道具 举报

25

主题

78

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
234
金钱
234
注册时间
2015-12-16
在线时间
32 小时
 楼主| 发表于 2023-9-26 08:38:29 | 显示全部楼层
硬件短路,昨晚上查到了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 06:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表