[STM32H7] I2C 配置

[复制链接]
 楼主| shimx 发表于 2021-4-12 19:14 | 显示全部楼层 |阅读模式
I2c, pi, IO, gp, GPIO, ni
大佬帮忙看一下,这个I2C初始换后为什么SCL没有时钟,代码如下:
I2C_HandleTypeDef  hi2c2;
/*I2C_GPIO 配置*/
static void I2C_GPIO_Config(void)
{
                GPIO_InitTypeDef GPIO_InitStructure;
        
         __HAL_RCC_I2C2_CLK_ENABLE();     //使能I2C时钟
        
                __HAL_RCC_GPIOH_CLK_ENABLE();    //使能GPIOH时钟
               
          /*PH4  SCL2, PH5 SDA2*/
    GPIO_InitStructure.Pin=GPIO_PIN_4;                        //PH4
    GPIO_InitStructure.Mode=GPIO_MODE_AF_OD;                  //复用开漏输出
    GPIO_InitStructure.Pull=GPIO_PULLUP;                                 //
    GPIO_InitStructure.Speed=GPIO_SPEED_FREQ_HIGH;          //高速
          GPIO_InitStructure.Alternate = GPIO_AF4_I2C2;
    HAL_GPIO_Init(GPIOH,&GPIO_InitStructure);                     //初始化GPIOH4
         
           GPIO_InitStructure.Pin=GPIO_PIN_5;                        //PH5
           GPIO_InitStructure.Alternate = GPIO_AF4_I2C2;
           HAL_GPIO_Init(GPIOH,&GPIO_InitStructure);                     //初始化GPIOH5
         /* Force the I2C peripheral clock reset */  
          __HAL_RCC_I2C2_FORCE_RESET();
         /* Release the I2C peripheral clock reset */
    __HAL_RCC_I2C2_RELEASE_RESET();
}


/* I2C工作模式配置 */
static void I2C_Init(void)
{
   
        
         hi2c2.Instance = I2C2;
         hi2c2.Init.Timing = 0x00901954;
         hi2c2.Init.OwnAddress1 = 0;
         hi2c2.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
   hi2c2.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
   hi2c2.Init.OwnAddress2 = 0XFF;
   hi2c2.Init.OwnAddress2Masks = I2C_OA2_NOMASK;
   hi2c2.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
   hi2c2.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
         HAL_I2C_Init(&hi2c2);
        
   HAL_I2CEx_AnalogFilter_Config(&hi2c2, I2C_ANALOGFILTER_ENABLE);
        
}
zhanghqi 发表于 2021-4-12 19:16 | 显示全部楼层
什么问题呢?
 楼主| shimx 发表于 2021-4-12 19:18 | 显示全部楼层
我自己做的板子,I2C需要外接上拉
chuxh 发表于 2021-4-12 19:20 | 显示全部楼层
能用IO模拟就IO模拟一下吧!
juventus9554 发表于 2021-4-12 19:22 | 显示全部楼层
你做了些最基本的配置,想让他运行还需添加相关功能代码;
dingy 发表于 2021-4-12 19:25 | 显示全部楼层
相应的功能函数 stm32h7xx_hal_i2c.c 文件里,你根据自己需要使用;
xxrs 发表于 2021-4-12 19:28 | 显示全部楼层
你可以参考下Cube库里的相关例程;
heweibig 发表于 2021-4-12 19:36 | 显示全部楼层
用模拟的试试看
zhanghqi 发表于 2021-4-12 19:38 | 显示全部楼层
还是用示波器看看波形有问题没有吧
wyjie 发表于 2021-4-12 19:41 | 显示全部楼层
用模拟的把
jlyuan 发表于 2021-4-12 19:43 | 显示全部楼层
本人没有用过专用的 都是自己模拟用
stly 发表于 2021-4-12 19:45 | 显示全部楼层

ST 的 I2C 真不能用吗?
ousj 发表于 2021-4-12 19:47 | 显示全部楼层
软件模拟有局限的,当从设备时钟较低时会占用处理器较多时间。
heweibig 发表于 2021-4-12 19:49 | 显示全部楼层
可以用,需要你去配置好,硬件的时钟比较准确的
zhanghqi 发表于 2021-4-12 19:50 | 显示全部楼层
模拟的时钟很多都是靠经验值算出来的
 楼主| shimx 发表于 2021-4-12 19:53 | 显示全部楼层

嗯,我再好好缕一缕吧,有了好消息及时通知大家
weifeng90 发表于 2021-4-12 20:36 来自手机 | 显示全部楼层
你IO模式配置的开漏输出,然后又配置个上拉输出。
labasi 发表于 2021-5-7 11:48 | 显示全部楼层
没有接上拉电阻吗
paotangsan 发表于 2021-5-7 11:48 | 显示全部楼层
硬件连接有问题吧
renzheshengui 发表于 2021-5-7 11:50 | 显示全部楼层
模式和硬件连接冲突了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

857

主题

10661

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部