GD32E230K8U6 I2C1从机 不能进入中断, GD32E230的IIC做为从机是不是有问题?
本帖最后由 kerb_huang 于 2024-7-27 12:31 编辑GD32E230K8U6 QFN32封装, 使用PA11PA12做I2C1从机, 不能进入中断,请问什么原因
// *********
// iic1;
/* enable GPIOA clock */
rcu_periph_clock_enable(RCU_GPIOA);
/* connect PA11 toI2C1_SCL */
gpio_af_set(GPIOA, GPIO_AF_7, I2C1_SCL_PIN);
/* connect PA12 to I2C1_SDA */
gpio_af_set(GPIOA, GPIO_AF_6, I2C1_SDA_PIN);
/* configure GPIO pins of I2C1 */
gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_NONE, I2C1_SCL_PIN);
gpio_output_options_set(GPIOA, GPIO_OTYPE_OD, GPIO_OSPEED_2MHZ, I2C1_SCL_PIN);
gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_NONE, I2C1_SDA_PIN);
gpio_output_options_set(GPIOA, GPIO_OTYPE_OD, GPIO_OSPEED_2MHZ, I2C1_SDA_PIN);
/* enable I2C clock */
rcu_periph_clock_enable(RCU_I2C1);
i2c_deinit(I2C1);
/* configure I2C clock */
i2c_clock_config(I2C1, I2C_SPEED, I2C_DTCY_2);
/* configure I2C address */
i2c_mode_addr_config(I2C1, I2C_I2CMODE_ENABLE, I2C_ADDFORMAT_7BITS, I2C1_SLAVE_ADDRESS7);
/* enable and setinterrupt to the lowest priority */
nvic_irq_enable(I2C1_ER_IRQn, 2U);
nvic_irq_enable(I2C1_EV_IRQn, 2U);
// BUFIE, event interrupt enable ,error interrupt enable;
i2c_interrupt_enable(I2C1,I2C_INT_ERR);
i2c_interrupt_enable(I2C1,I2C_INT_EV );
i2c_interrupt_enable(I2C1,I2C_INT_BUF);
/* enable I2C1 */
i2c_enable(I2C1);
/* enable acknowledge */
i2c_ack_config(I2C1, I2C_ACK_ENABLE);
有大佬碰到过这种情况吗 这个芯片有问题? 有可能是中断配置问题 I2C0 可以正常运行 你说I2C0可以用,I2C1不行? 你是不是配置不对啊?复用的IO都检查一下? 正常I2C0和I2C1应该都是支持从机模式的 请确保I2C1的引脚连接正确,包括SDA和SCL引脚的连接以及上拉电阻的设置 请检查I2C1从机的中断配置是否正确。需要正确配置NVIC中断向量表和使能相应的中断 看看地址,保证从机地址设置正确,与主机发送的地址匹配 可能是中断向量表或中断优先级设置不正确,导致中断请求被忽略。 中断使能位未正确设置,或中断被意外禁用。 I2C从机地址配置错误,导致主机无法正确识别从机。 I2C引脚复用和GPIO配置不正确,影响信号传输。 中断服务例程(ISR)编写错误,导致无法正确响应中断 I2C接口硬件故障,如引脚短路、开路或接触不良。 外部干扰吧可能是受到 从机模式设置问题也有可能,请确保从机模式设置正确,包括从机地址模式、地址识别模式等 仿真看看有啥问题呗,看看程序进到哪儿了
页:
[1]