stm32f407的i2c

2019-07-21 05:09发布

只要  往   从器件中   写地址   主控就会卡住!!! 这是什么原因啊?   有哪位遇到过这种问题不!!!求解答啊!!!

  下面是卡主的地方!!!   



急求!!!!!!!!








/******************************************************************************* * Function Name : I2C_WriteOneByte * Description   : 通过指定I2C接口写入一个字节数据 * Input         : - I2Cx:I2C寄存器基址 *                  - I2C_Addr:从器件地址 *                  - addr:预写入字节地址 *                  - value:写入数据 * Output         : None * Return         : 成功返回0  * Attention : None   *******************************************************************************/   uint8_t I2C_WriteOneByte(I2C_TypeDef *I2Cx,  uint8_t I2C_Addr,   uint8_t addr,   uint8_t value) {     /* 起始位 */   // I2C_AcknowledgePolling(I2Cx,I2C_Addr);     ////卡住的地方  while(I2C_GetFlagStatus(I2Cx, I2C_FLAG_BUSY));     I2C_GenerateSTART(I2Cx, ENABLE); //     while(!I2C_CheckEvent(I2Cx, I2C_EVENT_MASTER_MODE_SELECT));   //   /* 发送器件地址(写)*/     I2C_Send7bitAddress(I2Cx, I2C_Addr, I2C_Direction_Transmitter);     while(I2C_CheckEvent(I2Cx, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED))    /////卡住的地方   { I2C_delay(100);   }     //   /*发送地址*/       I2C_SendData(I2Cx, addr); // while(!I2C_CheckEvent(I2Cx, I2C_EVENT_MASTER_BYTE_TRANSMITTED));  /////卡住的地方    // // /* 写一个字节*/     I2C_SendData(I2Cx, value);   //   while(!I2C_CheckEvent(I2Cx, I2C_EVENT_MASTER_BYTE_TRANSMITTED));    ////卡住的地方 //   /* 停止位*/   I2C_GenerateSTOP(I2Cx, ENABLE); // I2C_AcknowledgePolling(I2Cx,I2C_Addr);     //////卡住的地方 I2C_delay(1000); return 0; }
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
正点原子
1楼-- · 2019-07-21 10:35
用模拟IIC吧...
八度空间
2楼-- · 2019-07-21 12:18
同意原子哥建议,用模拟的靠谱一点
yangzegang
3楼-- · 2019-07-21 16:26
 精彩回答 2  元偷偷看……

一周热门 更多>