打印
[STM32H7]

I2C 配置

[复制链接]
686|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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模拟一下吧!

使用特权

评论回复
5
juventus9554| | 2021-4-12 19:22 | 只看该作者
你做了些最基本的配置,想让他运行还需添加相关功能代码;

使用特权

评论回复
6
dingy| | 2021-4-12 19:25 | 只看该作者
相应的功能函数 stm32h7xx_hal_i2c.c 文件里,你根据自己需要使用;

使用特权

评论回复
7
xxrs| | 2021-4-12 19:28 | 只看该作者
你可以参考下Cube库里的相关例程;

使用特权

评论回复
8
heweibig| | 2021-4-12 19:36 | 只看该作者
用模拟的试试看

使用特权

评论回复
9
zhanghqi| | 2021-4-12 19:38 | 只看该作者
还是用示波器看看波形有问题没有吧

使用特权

评论回复
10
wyjie| | 2021-4-12 19:41 | 只看该作者
用模拟的把

使用特权

评论回复
11
jlyuan| | 2021-4-12 19:43 | 只看该作者
本人没有用过专用的 都是自己模拟用

使用特权

评论回复
12
stly| | 2021-4-12 19:45 | 只看该作者

ST 的 I2C 真不能用吗?

使用特权

评论回复
13
ousj| | 2021-4-12 19:47 | 只看该作者
软件模拟有局限的,当从设备时钟较低时会占用处理器较多时间。

使用特权

评论回复
14
heweibig| | 2021-4-12 19:49 | 只看该作者
可以用,需要你去配置好,硬件的时钟比较准确的

使用特权

评论回复
15
zhanghqi| | 2021-4-12 19:50 | 只看该作者
模拟的时钟很多都是靠经验值算出来的

使用特权

评论回复
16
shimx|  楼主 | 2021-4-12 19:53 | 只看该作者

嗯,我再好好缕一缕吧,有了好消息及时通知大家

使用特权

评论回复
17
weifeng90| | 2021-4-12 20:36 | 只看该作者
你IO模式配置的开漏输出,然后又配置个上拉输出。

使用特权

评论回复
18
labasi| | 2021-5-7 11:48 | 只看该作者
没有接上拉电阻吗

使用特权

评论回复
19
paotangsan| | 2021-5-7 11:48 | 只看该作者
硬件连接有问题吧

使用特权

评论回复
20
renzheshengui| | 2021-5-7 11:50 | 只看该作者
模式和硬件连接冲突了

使用特权

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

本版积分规则

857

主题

10661

帖子

5

粉丝