主机发,从机接可以,为什么主机收,从机发就不行呢????求助!!!!

2019-08-17 04:08发布

void I2C1_EV_IRQHandler(void)
{
        switch(I2C_GetLastEvent(I2C1))
        {
                case I2C_EVENT_MASTER_MODE_SELECT:
                        {
                                I2C_Send7bitAddress(I2C1,I2C2_SLAVE_ADDRESS7,I2C_Direction_Transmitter);
                                break;
                        }
                case I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED:
                        {
                                I2C1_Buffer_Rx[Rx_Idx++]=I2C_ReceiveData(I2C1);
                                printf("%d",I2C1_Buffer_Rx[Rx_Idx-1]);
                                break;
                        }
                case I2C_EVENT_MASTER_BYTE_RECEIVED:
                        {
                                if(Tx_Idx<Buffersize)
                                {
                                        I2C1_Buffer_Rx[Rx_Idx++]=I2C_ReceiveData(I2C1);
                                        printf("%d",I2C1_Buffer_Rx[Rx_Idx-1]);
                                }
                                else
                                {
                                        I2C_GenerateSTOP(I2C1,ENABLE);
                                        I2C_ITConfig(I2C1,I2C_IT_EVT | I2C_IT_BUF, DISABLE);
                                }
                                break;
                        }
                default: break;
        }
}       

void I2C2_EV_IRQHandler(void)
{
        switch(I2C_GetLastEvent(I2C2))
        {
                case I2C_EVENT_SLAVE_RECEIVER_ADDRESS_MATCHED:break;
                case I2C_EVENT_SLAVE_BYTE_TRANSMITTED:
                        {
                                if(Tx_Idx<Buffersize)
                                {
                                        I2C_SendData(I2C2,I2C2_Buffer_Tx[Tx_Idx++]);
                                }
                                break;
                        }
                case I2C_EVENT_SLAVE_STOP_DETECTED:
                {
                        I2C_ClearFlag(I2C2,I2C_FLAG_STOPF);
                        I2C_ITConfig(I2C2,I2C_IT_EVT | I2C_IT_BUF, DISABLE);
                        break;
                }
        }
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
正点原子
1楼-- · 2019-08-17 05:21
帮顶
wang504778180
2楼-- · 2019-08-17 06:53
 精彩回答 2  元偷偷看……
southeast
3楼-- · 2019-08-17 11:10
正点原子 发表于 2017-7-1 00:36
帮顶

原子哥,网上好像很少有关于stm32f103板子做iic主从机通信的。
正点原子
4楼-- · 2019-08-17 13:44
southeast 发表于 2017-7-1 16:10
原子哥,网上好像很少有关于stm32f103板子做iic主从机通信的。

是的

一周热门 更多>