STM32F103 硬件IIC 管脚不能通信

2019-12-31 19:17发布

用STM32 硬件IIC,读写程序是STM32CUBEMX 生成的。上次生产500个没有问题,这次生产出现大概10%的不良。
换个芯片就好。用不良的电路板仿真一下都死在了IIC上面。想问一下是这次买的芯片有问题,还是说stm32的硬件IIC
没有调好,谢谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
sy_lixiang
1楼-- · 2020-01-02 03:19
都说STM32的IIC硬件接口有问题,是的,确实有问题。但官司方出勘误了,楼主去官网找一下勘误,看一下吧。。。

这种事儿绕不过去的,何不把它搞个明白。。。

主要是读取最后2个字节和1个字节的情况下,时序需要特别处理一下。
yoyotansa
2楼-- · 2020-01-02 05:51
 精彩回答 2  元偷偷看……
lsls666888
3楼-- · 2020-01-02 09:42
用模拟的吧,虽然慢些,但是可靠
ZMHCISS
4楼-- · 2020-01-02 09:51
竟然好了,改了下程序。
stm32cubemx生成的程序,IIC是先设置管脚,才使能IIC时钟。
我翻看它带的例程竟然都是先使能时钟,然后设置IO。
我是用自动生成的,所以是后使能的时钟,改成先使能时钟后,原来不正常工作的板子,变好了。
不明白,stm32cubemx生成的程序,所有其他的外设都是先使能时钟,为啥唯独IIC后使能时钟。
ZMHCISS
5楼-- · 2020-01-02 12:07
if(hi2c->Instance==I2C1)
  {
  /* USER CODE BEGIN I2C1_MspInit 0 */

  /* USER CODE END I2C1_MspInit 0 */
  
    /**I2C1 GPIO Configuration   
    PB6     ------> I2C1_SCL
    PB7     ------> I2C1_SDA
    */
    GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

    /* Peripheral clock enable */
    __HAL_RCC_I2C1_CLK_ENABLE();
  /* USER CODE BEGIN I2C1_MspInit 1 */

  /* USER CODE END I2C1_MspInit 1 */
  }
这是我用最新版本的stm32cubemx生成的
hpdell
6楼-- · 2020-01-02 12:47
lsls666888 发表于 2016-8-11 18:47
用模拟的吧,虽然慢些,但是可靠

我使用硬件的 IIc 没有出现过任何问题哟,不过我没有使用dma功能,我使用标准库与hal都使用过,都挺好的

一周热门 更多>