打印
[STM32F1]

I2C1双地址问题

[复制链接]
1941|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位的判断。

使用特权

评论回复
5
lgnativs|  楼主 | 2014-9-12 09:10 | 只看该作者
这个bug不知道有没有被关注...

使用特权

评论回复
6
bear1| | 2014-9-15 11:18 | 只看该作者
库怎么还不改正bug,发布新版本?
st动作跟蜗牛一样吗?遗憾啊

使用特权

评论回复
7
jxmzzr| | 2014-9-15 15:22 | 只看该作者
进来听讲来了,希望有朋友能总结一下类似的问题,以便我们学习。顶顶。

使用特权

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

本版积分规则

3

主题

96

帖子

1

粉丝