STM32的I2C从机的一点疑问
最近在做103的I2C从机通讯,试了下双地址,在中断里面调用I2C_GetLastEvent查询中断事件,发现第二地址的匹配总是出错,调试后发现在stm32f10x_i2c.h中关于EV1的定义如下
/* --EV1 (all the events below are variants of EV1) */
/* 1) Case of One Single Address managed by the slave */
#define I2C_EVENT_SLAVE_RECEIVER_ADDRESS_MATCHED ((uint32_t)0x00020002) /* BUSY and ADDR flags */
#define I2C_EVENT_SLAVE_TRANSMITTER_ADDRESS_MATCHED ((uint32_t)0x00060082) /* TRA, BUSY, TXE and ADDR flags */
/* 2) Case of Dual address managed by the slave */
#define I2C_EVENT_SLAVE_RECEIVER_SECONDADDRESS_MATCHED ((uint32_t)0x00820000) /* DUALF and BUSY flags */
#define I2C_EVENT_SLAVE_TRANSMITTER_SECONDADDRESS_MATCHED ((uint32_t)0x00860080) /* DUALF, TRA, BUSY and TXE flags */
/* 3) Case of General Call enabled for the slave */
#define I2C_EVENT_SLAVE_GENERALCALLADDRESS_MATCHED ((uint32_t)0x00120000) /* GENCALL and BUSY flags */
第二地址的EV1事件标志里面都没有ADDR flag的判断,按照数据手册应该是有ADDR flag的,这究竟是什么原因? 你把代码贴出来啊 !!!!!!!!!!!1
页:
[1]