打印

请教一下GD32F4GPIO模拟I2C中引脚如何配置

[复制链接]
2152|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
WESTARK|  楼主 | 2020-6-23 20:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
void i2c_config(void)
{       
                /* enable GPIOB clock */
                rcu_periph_clock_enable(RCU_GPIOG);               
                rcu_periph_clock_enable(RCU_GPIOI);       

    gpio_mode_set(GPIOI, GPIO_MODE_ANALOG, GPIO_PUPD_PULLUP, GPIO_PIN_11);
    gpio_output_options_set(GPIOI, GPIO_OTYPE_OD, GPIO_OSPEED_50MHZ, GPIO_PIN_11);
       
    gpio_mode_set(GPIOG, GPIO_MODE_ANALOG, GPIO_PUPD_PULLUP, GPIO_PIN_15);
    gpio_output_options_set(GPIOG, GPIO_OTYPE_OD, GPIO_OSPEED_50MHZ, GPIO_PIN_15);
}
这个GPIO_MODE_ANALOG模式干嘛用的,我设成GPIO_MODE_ANALOG模式可以检测到我的I2C,但是读取的数据全是0.
设置成GPIO_MODE_OUTPUT就检测不到。有没有帮忙看看的
而且我在主程序中把这两个引脚拉低
gpio_bit_reset(GPIOI,GPIO_PIN_11);gpio_bit_reset(GPIOG,GPIO_PIN_15);
用示波器去检测这两个引脚还是没有被拉低。



981695ef1ef3a767d2.png (33.08 KB )

981695ef1ef3a767d2.png

使用特权

评论回复
沙发
qcliu| | 2020-7-6 16:35 | 只看该作者
设置成普通的就行吧

使用特权

评论回复
板凳
tfqi| | 2020-7-6 16:35 | 只看该作者
要注意相互间时序的配合

使用特权

评论回复
地板
wiba| | 2020-7-6 16:36 | 只看该作者
不是那么好调的

使用特权

评论回复
5
zljiu| | 2020-7-6 16:36 | 只看该作者
帮楼主顶一下

使用特权

评论回复
6
coshi| | 2020-7-6 16:36 | 只看该作者
楼主问题解决了吗

使用特权

评论回复
7
WESTARK|  楼主 | 2020-7-6 18:33 | 只看该作者
                /* enable GPIOB clock */
                rcu_periph_clock_enable(RCU_GPIOG);               
                rcu_periph_clock_enable(RCU_GPIOI);       
               
                gpio_af_set(GPIOI,GPIO_AF_15,GPIO_PIN_11);
    gpio_mode_set(GPIOI, GPIO_MODE_OUTPUT, GPIO_PUPD_PULLUP, GPIO_PIN_11);
    gpio_output_options_set(GPIOI, GPIO_OTYPE_OD, GPIO_OSPEED_50MHZ, GPIO_PIN_11);
       
                gpio_af_set(GPIOG,GPIO_AF_15,GPIO_PIN_15);
    gpio_mode_set(GPIOG, GPIO_MODE_OUTPUT, GPIO_PUPD_PULLUP, GPIO_PIN_15);
    gpio_output_options_set(GPIOG, GPIO_OTYPE_OD, GPIO_OSPEED_50MHZ, GPIO_PIN_15);
       
                SDAout();
        //SCLin();
        //SDAin();
                SCLout();
设置成普通IO了,但使用硬件I2C调试的时候卡在
       
        while(!i2c_flag_get(I2C1,I2C_SBSEND));
       
        i2c_master_addressing(I2C1, 0xA0, I2C_TRANSMITTER);
       
        while(!i2c_flag_get(I2C1, I2C_ADDSEND));   //一直卡在这里,ADDSEND不置位       
        i2c_flag_clear(I2C1, I2C_ADDSEND);

使用特权

评论回复
评论
秦生0303 2022-6-15 10:33 回复TA
楼主解决了吗?我用GD32F303也遇到了同样的问题 
漫步在大街 2021-8-25 11:52 回复TA
和你一样的错误,楼主解决了没有 
漫步在大街 2021-8-25 11:07 回复TA
我也是这样,请问你找到问题没 
8
castle520| | 2020-11-18 20:28 | 只看该作者
本帖最后由 castle520 于 2020-11-18 20:38 编辑

(1)GPIO_MODE_ANALOG是模拟输入,主要用在ADC采样上

(2)硬件IIC引脚应该这样配置(PB6\PB7为例)
            /* I2C0 GPIO ports */
            /* connect PB6 to I2C0_SCL */
            gpio_af_set(GPIOB, GPIO_AF_4, GPIO_PIN_6);   //AF数值根据数据手册来设置
            /* connect PB7 to I2C0_SDA */
            gpio_af_set(GPIOB, GPIO_AF_4, GPIO_PIN_7);

            /* configure I2C0 GPIO */
            gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_6);
            gpio_output_options_set(GPIOB, GPIO_OTYPE_OD, GPIO_OSPEED_50MHZ, GPIO_PIN_6);
            gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_7);
            gpio_output_options_set(GPIOB, GPIO_OTYPE_OD, GPIO_OSPEED_50MHZ, GPIO_PIN_7);
   (3)模拟IIC引脚配置:
            gpio_mode_set(GPIOF, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE,GPIO_PIN_7);
            gpio_output_options_set(GPIOF, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,GPIO_PIN_7);
            gpio_mode_set(GPIOF, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE,GPIO_PIN_6);
            gpio_output_options_set(GPIOF, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,GPIO_PIN_6);

            模拟IIC参考demo:https://pan.baidu.com/s/1mhQsNpu#list/path=%2F%E5%85%B1%E4%BA%AB%E6%96%87%E4%BB%B6%E5%A4%B9%2F%E5%BA%94%E7%94%A8%E7%BB%8F%E9%AA%8C%E5%8F%8ADemo%E5%88%86%E4%BA%AB%2FGPIO%E6%A8%A1%E6%8B%9FIIC%20Demo
(4)SCL、SDA引脚加上拉

使用特权

评论回复
9
真爱吴迪迪| | 2020-11-19 09:19 | 只看该作者
只是需要设置成普通的IO口即可,不用做过多的配置。注意时序呀

使用特权

评论回复
10
嵌入小菜菜| | 2020-11-20 08:18 | 只看该作者
做成普通的IO就可以的了,没有特别的要求的。

使用特权

评论回复
11
xdqfc| | 2021-8-25 17:23 | 只看该作者
很多年前用51单片机玩过模拟I2C,51端口是双向的,而GD32不好直接配置为双向吧,当然,咱没有试过GD32的模拟I2C,上面有人讲不需要配置就可以,咱没有发言权,估计是可以的吧。

使用特权

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

本版积分规则

3

主题

11

帖子

0

粉丝