打印
[AT32F413]

IIC启动时SCL掉坑

[复制链接]
737|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我在用AT32F413的IIC时,发现在启动时SCL会掉坑,如附图。


源码:
定义:
//------------------------------------------------------------------------------------------------------
#define I2C_TIMEOUT                      0x100000

#define I2Cx_SPEED                       50000 // 50000 // 100000
#define I2Cx_ADDRESS                     0x34      //  0x1A    //
#define I2Cx_PORT                        I2C2
#define I2Cx_CLK                        CRM_I2C2_PERIPH_CLOCK // CRM_I2C1_PERIPH_CLOCK

#define I2Cx_SCL_PIN                     GPIO_PINS_10            
#define I2Cx_SCL_GPIO_PORT               GPIOB      
#define I2Cx_SCL_GPIO_CLK                CRM_GPIOB_PERIPH_CLOCK

#define I2Cx_SDA_PIN                     GPIO_PINS_11            
#define I2Cx_SDA_GPIO_PORT               GPIOB                  
#define I2Cx_SDA_GPIO_CLK                CRM_GPIOB_PERIPH_CLOCK

//---------------------------------------------------------------------------------------------------------------

初始化:

// ----------------------------------------------------------------------------------
// 函数名称:  App_IIC_HardInit
// 函数功能:  IIC硬件 初始化
// 入口参数:  无
// 出口参数:  无
// PB10    SCL0时钟线  2.9-3.3V    0-0.4V  H                 
// PB11    SDA0数据线  2.9-3.3V    0-0.4V  H                 

// ----------------------------------------------------------------------------------
void App_IIC_HardInit(void)
{
             // -----------------------------------------------   
            HIICx.i2cx = I2Cx_PORT;
            i2c_config(&HIICx);
            App_IIC_DataInit();
          
}
// ----------------------------------------------------------------------------------
// 函数名称:  i2c_lowlevel_init
// 函数功能:  IIC硬件初始化
// 入口参数:  无
// 出口参数:  无
// PB10    SCL0时钟线  2.9-3.3V    0-0.4V  H                 
// PB11    SDA0数据线  2.9-3.3V    0-0.4V  H       
// ----------------------------------------------------------------------------------
void i2c_lowlevel_init(i2c_handle_type* hi2c)
{
          gpio_init_type gpio_initstructure;
                  
                  if(hi2c->i2cx == I2Cx_PORT)
                  {  
                    // i2c periph clock enable //
                    crm_periph_clock_enable(I2Cx_CLK, TRUE);   
                    crm_periph_clock_enable(I2Cx_SCL_GPIO_CLK, TRUE);
                    crm_periph_clock_enable(I2Cx_SDA_GPIO_CLK, TRUE);                    
                    // gpio configuration //
                    gpio_initstructure.gpio_out_type       = GPIO_OUTPUT_OPEN_DRAIN;  
                    gpio_initstructure.gpio_pull           = GPIO_PULL_UP;  
                    gpio_initstructure.gpio_mode           = GPIO_MODE_MUX;  
                    gpio_initstructure.gpio_drive_strength = GPIO_DRIVE_STRENGTH_MODERATE;                  
                    // configure i2c pins: scl //   
                    gpio_initstructure.gpio_pins = I2Cx_SCL_PIN;
                    gpio_init(I2Cx_SCL_GPIO_PORT, &gpio_initstructure);

                    // configure i2c pins: sda //   
                    gpio_initstructure.gpio_pins = I2Cx_SDA_PIN;
                    gpio_init(I2Cx_SDA_GPIO_PORT, &gpio_initstructure);                    
                    i2c_init(hi2c->i2cx, I2C_FSMODE_DUTY_2_1, I2Cx_SPEED);                    
                    i2c_own_address1_set(hi2c->i2cx, I2C_ADDRESS_MODE_7BIT, I2Cx_ADDRESS);
                  }  
}

// ------------------------------------------------------------------------------------------------

请教一下,如何消除掉坑现象?







IIC 产生启动条件时SCL掉坑.png (772.36 KB )

IIC启动时SCL掉坑

IIC启动时SCL掉坑

使用特权

评论回复
沙发
骑着蜗牛狂奔O| | 2022-4-19 11:36 | 只看该作者
先检查一下示波器测试环境,示波器的地线和信号线尽量短,再测试一下

使用特权

评论回复
板凳
bzxc41408|  楼主 | 2022-4-19 13:38 | 只看该作者
我已经测试了很多回了,  这种现象确实存在。就是不确定是不是我设置不当引起的,还是其它原因。

使用特权

评论回复
地板
麻花油条| | 2022-4-22 10:38 | 只看该作者
检查一下示波器的地线和信号线

使用特权

评论回复
5
bzxc41408|  楼主 | 2022-4-22 11:12 | 只看该作者
我已经换了3个示波器(带探头一起换),换了4组人测了,应该排除人员与设备问题了。

使用特权

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

本版积分规则

22

主题

149

帖子

1

粉丝