bzxc41408 发表于 2022-4-19 10:46

IIC启动时SCL掉坑

我在用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.4VH               
// PB11    SDA0数据线2.9-3.3V    0-0.4VH               

// ----------------------------------------------------------------------------------
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.4VH               
// PB11    SDA0数据线2.9-3.3V    0-0.4VH       
// ----------------------------------------------------------------------------------
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);
                  }
}

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

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







骑着蜗牛狂奔O 发表于 2022-4-19 11:36

先检查一下示波器测试环境,示波器的地线和信号线尽量短,再测试一下

bzxc41408 发表于 2022-4-19 13:38

我已经测试了很多回了,这种现象确实存在。就是不确定是不是我设置不当引起的,还是其它原因。

麻花油条 发表于 2022-4-22 10:38

检查一下示波器的地线和信号线

bzxc41408 发表于 2022-4-22 11:12

我已经换了3个示波器(带探头一起换),换了4组人测了,应该排除人员与设备问题了。
页: [1]
查看完整版本: IIC启动时SCL掉坑