打印
[STM32H7]

I2C 配置

[复制链接]
1433|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gS199369|  楼主 | 2019-4-12 11:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
I2c, pi, IO, gp, GPIO
大佬帮忙看一下,这个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);
       
}

使用特权

评论回复
沙发
mmuuss586| | 2019-4-18 10:01 | 只看该作者
什么问题呢?

使用特权

评论回复
板凳
gS199369|  楼主 | 2019-4-18 12:03 | 只看该作者

我自己做的板子,I2C需要外接上拉

使用特权

评论回复
地板
wangjiahao88| | 2019-4-18 14:54 | 只看该作者
能用IO模拟就IO模拟一下吧!

使用特权

评论回复
评论
gS199369 2019-4-22 11:22 回复TA
不好配置SCL速度 
5
香水城| | 2019-4-22 12:23 | 只看该作者
你做了些最基本的配置,想让他运行还需添加相关功能代码;

相应的功能函数 stm32h7xx_hal_i2c.c 文件里,你根据自己需要使用;

你可以参考下Cube库里的相关例程;

使用特权

评论回复
6
晓伍| | 2019-5-6 09:31 | 只看该作者
楼主的问题是什么

使用特权

评论回复
7
八层楼| | 2019-5-6 10:15 | 只看该作者
用模拟的试试看

使用特权

评论回复
8
观海| | 2019-5-6 10:20 | 只看该作者
还是用示波器看看波形有问题没有吧

使用特权

评论回复
9
guanjiaer| | 2019-5-6 10:29 | 只看该作者
用模拟的把

使用特权

评论回复
10
heimaojingzhang| | 2019-5-6 10:35 | 只看该作者
本人没有用过专用的 都是自己模拟用

使用特权

评论回复
11
zhang..yb| | 2019-5-28 09:29 | 只看该作者
ST 的 I2C 真不能用吗?软件模拟有局限的,当从设备时钟较低时会占用处理器较多时间。

使用特权

评论回复
12
gS199369|  楼主 | 2019-5-29 17:35 | 只看该作者
zhang..yb 发表于 2019-5-28 09:29
ST 的 I2C 真不能用吗?软件模拟有局限的,当从设备时钟较低时会占用处理器较多时间。 ...

可以用,需要你去配置好,硬件的时钟比较准确的,模拟的时钟很多都是靠经验值算出来的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

12

帖子

0

粉丝