[STM32F1] I2C1双地址问题

[复制链接]
2333|6
 楼主| lgnativs 发表于 2014-8-1 12:00 | 显示全部楼层 |阅读模式
  今天在使用stm32的i2c1的双地址从模式时发现一个问题
  在3.5的外设库stm32f10x_i2c.h头文件421行处,有如下定义
/* --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 */

按照说明的理解,这个几个事件应该是接受到地址+R/W后触发的,那么是否应该少了ADDR位呢?
#define  I2C_EVENT_SLAVE_RECEIVER_SECONDADDRESS_MATCHED    ((uint32_t)0x00820002)  /* DUALF and BUSY flags */
#define  I2C_EVENT_SLAVE_TRANSMITTER_SECONDADDRESS_MATCHED ((uint32_t)0x00860082)  /* DUALF, TRA, BUSY and TXE flags */


 楼主| lgnativs 发表于 2014-8-1 13:56 | 显示全部楼层
自己顶一下.
 楼主| lgnativs 发表于 2014-8-4 16:03 | 显示全部楼层
没人关注啊?
香水城 发表于 2014-8-4 16:52 | 显示全部楼层
我觉得是少了对ADDR位的判断。
 楼主| lgnativs 发表于 2014-9-12 09:10 | 显示全部楼层
这个bug不知道有没有被关注...
bear1 发表于 2014-9-15 11:18 来自手机 | 显示全部楼层
库怎么还不改正bug,发布新版本?
st动作跟蜗牛一样吗?遗憾啊
jxmzzr 发表于 2014-9-15 15:22 | 显示全部楼层
进来听讲来了,希望有朋友能总结一下类似的问题,以便我们学习。顶顶。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

96

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部