野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11331|回复: 0

STM32硬件I2C1发送读命令会自动读一个字节内容的问题

[复制链接]
发表于 2021-11-15 14:43:18 | 显示全部楼层 |阅读模式
STM32的I2C硬件的确难玩,I2C2没反应,I2C1发送读取命令,居然会自动读取第一个字节内容,也就是第一个内容在发送读取命令时就莫名其妙的出来了,全程没有半个I2C_ReceiveData函数调用,实际永远无法读取!!,因为发送读命令时就飞掉了!!但是类似代码,发送写命令完全正常,如下图:
A.png
代码如下,哪位高手看下哪里除了问题?
====================================

#include "stm32f10x_i2c.h"

int main(void)
{
        RCC->APB2ENR |=1<<2;
        RCC->APB2ENR |=1<<4;
        GPIOA->CRH &=0xFFFFFFF0;
        GPIOA->CRH |=3;
        GPIOA->BRR=1<<8;//点亮LED0
        GPIOC->CRL &=0xFF0FFFFF;
        GPIOC->CRL |=8<<20;
        GPIOC->BSRR=1<<5;
        RCC->APB2ENR |=1 | (1<<3);//开启GPIOB,AFIO时钟
        RCC->APB1ENR |=1<<21;//打开I2C1时钟
        //设置PB6,PB7为复用开漏输出
        GPIOB->CRL &=0x00FFFFFF;
        GPIOB->CRL |=0xFF000000;//复用开漏输出
        I2C_InitTypeDef stru;
        stru.I2C_Ack=I2C_Ack_Enable;
        stru.I2C_AcknowledgedAddress=I2C_AcknowledgedAddress_7bit;
        stru.I2C_ClockSpeed=200000;
        stru.I2C_DutyCycle=I2C_DutyCycle_2;
        stru.I2C_Mode=I2C_Mode_I2C;
        stru.I2C_OwnAddress1=0x00;
        I2C_Init(I2C1,&stru);//初始化I2C硬件
        I2C_Cmd(I2C1,ENABLE);//启动I2C硬件
        u8 key=1;
        while(1)
        {
                if ((key==1) && (!(GPIOC->IDR & (1<<5))))
                {
                        key=0;
                        I2C_GenerateSTART(I2C1,ENABLE);//发送开始信号
                        while (!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT));
                        //发送从设备物理地址(读取)
                        I2C_Send7bitAddress(I2C1, 0x51<<1,
                                I2C_Direction_Receiver);
                        while (!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED));//<-----------------------这里似乎就开始读数据了,莫名其妙!!
                        I2C_GenerateSTOP(I2C1,ENABLE);//发送停止
                }
        }
}


另外,模拟I2C发送读命令是正常的
B.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-24 08:44 , Processed in 0.051689 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表