难道是官方库出错了吗?

2019-03-23 19:19发布

1. I2C的初始化:
#define I2C_AcknowledgedAddress_7bit    ((uint16_t)0x4000)
#define I2C_SLAVE_ADDRESS7      0xA0

/*!< I2C configuration */
  /* sEE_I2C configuration */
  I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;
  I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;
  I2C_InitStructure.I2C_OwnAddress1 = I2C_SLAVE_ADDRESS7;
  I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;
  I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
  I2C_InitStructure.I2C_ClockSpeed = I2C_SPEED;

2. 在官方I2C库文件中,OAR1寄存器被这样设置。
/*---------------------------- I2Cx OAR1 Configuration -----------------------*/
  /* Set I2Cx Own Address1 and acknowledged address */
  I2Cx->OAR1 = (I2C_InitStruct->I2C_AcknowledgedAddress | I2C_InitStruct->I2C_OwnAddress1);

3. STM32寄存器手册中解释如下,第14位应该是保留,默认值就是0,可是 I2C_AcknowledgedAddress_7bit  的第14位为1,为什么?  
1.jpg

无论在STM32F1 STM32F4 系列的库文件和手册中都是这么设置的,所以应该不会是库文件出错,可是有应该如何解释,I2C_AcknowledgedAddress_7bit  到底是什么东西?

[ 本帖最后由 381082014 于 2013-3-1 15:14 编辑 ] 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
dulei92
1楼-- · 2019-03-23 23:33
/ I2C_AcknowledgedAddress_7bit
地址长度吧
一般给你三个脚,决定后三位来着好像
381082014
2楼-- · 2019-03-24 05:11
 精彩回答 2  元偷偷看……

一周热门 更多>