stm32F407的硬件I2C稳定吗~

2019-07-20 18:40发布

之前就在疑问,为什么原子提供的I2C例子为什么只有模拟的,而不使用硬件的I2C,之后看了一个帖子说是硬件的I2C不稳定且不好用。不过该帖子是STM32F103的,而且两年时间过去了,不知道后来有没有改善。现在正在调试这个硬件I2C,配置好后不起作用,测量I2C1的时钟线,并没有看到时钟信号。配置如下所示:
    I2C_InitTypeDef I2C_InitStructure;
    I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;
    I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;
    I2C_InitStructure.I2C_OwnAddress1 = 0x30;
    I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;
    I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
    I2C_InitStructure.I2C_ClockSpeed = 10000;
    I2C_Init(I2C1,&I2C_InitStructure);
   
    I2C_ITConfig(I2C1,I2C_IT_EVT | I2C_IT_BUF,ENABLE);
    I2C_Cmd(I2C1,ENABLE);
    I2C_AcknowledgeConfig(I2C1,ENABLE);

发送数据如下所示:
    I2C_GenerateSTART(I2C1,ENABLE);
    I2C_SendData(I2C1,0x77);
    ZY_Delay(5000);
    GPIO_ToggleBits(GPIOG,GPIO_Pin_12);
    GPIO_ToggleBits(GPIOE,GPIO_Pin_2);
    I2C_GenerateSTOP(I2C1,ENABLE);

现象为:GPIOG12和GPIOE2可正常闪烁,但是在PB6和PB7上没有任何信号

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
慕名兰
1楼-- · 2019-07-21 20:26
queqiongtao 发表于 2016-11-9 13:16
使用DMA方式试过,挺好用的  中断的话就算了

请问@queqiongtao 是用的硬件???
八度空间
2楼-- · 2019-07-22 01:49
 精彩回答 2  元偷偷看……
wsnfly
3楼-- · 2019-07-22 03:15
 精彩回答 2  元偷偷看……
火透
4楼-- · 2019-07-22 04:42
I2C硬件接口,中断优先级最高,在中断里对事件进行判断进行状态机切换,非常好用。测试到今天,没出现问题

一周热门 更多>