STM32 | 您所在的位置:网站首页 › stm32模拟i2c最大速度 › STM32 |
文章目录
I2C基本概念+硬件线路+通信结构:I2C设备地址:I2C数据传输:I2C时钟速度和通信速度:I2C应答机制:I2C设备之间的冲突检测:I2C设备规格:主机读取数据IIC通信过程实际编程和应用:IO 口模拟 IIC 总线常见的I2C通信错误类型和故障排除方法使用IIC通信常见外设深入学习高级特性:
I2C基本概念+硬件线路+通信结构:
概念 I2C是一种串行同步通信协议,用于在集成电路之间进行通信。 硬件路线 I2C使用两根线进行通信:串行数据线(SDA)和串行时钟线(SCL)。 通信结构 I2C使用主从结构,其中主设备发起通信并控制通信的节奏,从设备响应主设备的请求。从机通常不会主动给主机发送数据,一般为主机给从机发送读取指令后,从机才给主机发送数据。器件发送数据到总线上,则定义为发送器,器件接收数据则定义为接收器。主器件和从器件都可以工作于接收和发送状态。 主机如何能找到对应的从机与其进行通信?——设备地址 每个I2C设备都有一个唯一的7位或10位地址,用于在总线上唯一标识设备。 7(4、3)位地址模式下,可以有最多128个不同的设备地址(0x00至0x7F)。 10位地址模式下,可以有最多1024个不同的设备地址(0x000至0x3FF)。 器件地址包含固定地址(由厂家决定)和可编程地址(由使用者决定)——参考手册。 7位地址编码方式: 在7位地址编码方式下,从机设备的地址由7个位组成,范围是0x00至0x7F(0至127)。其中,最高位(MSB)通常由I2C总线规范中保留,用于指示读/写操作。读操作对应的最高位为1,写操作对应的最高位为0。 例如,一个从机设备的7位地址为0x50(十进制为80),对应的二进制表示是0101000(其中最高位为读/写位,0表示写操作)。 7位地址编码方式是I2C通信中最常用的方式,适用于大多数应用。 10位地址编码方式: 在10位地址编码方式下,从机设备的地址由10个位组成,范围是0x000至0x3FF(0至1023)。其中,最高两位(MSB)用于指示读/写操作和扩展地址位。 扩展地址位提供了更多的地址空间,可以用于连接更多的从机设备。在10位地址编码方式下,前六位(位7至位2)用于指定扩展地址位,后四位(位1至位0)用于指示读/写操作。 例如,一个从机设备的10位地址为0x235(十进制为565),对应的二进制表示是1000110101(前两位为读/写位和扩展地址位)。 10位地址编码方式相对较少使用,主要用于连接大量的从机设备。 如何寻址? 在I2C通信中,主机设备可以选择与多个从机设备进行通信,每个从机设备都有一个唯一的地址。通过在地址字节中指定正确的从机设备地址,主机可以选择与特定的从机设备进行通信。 7位和10位就是一个从机多一些。 I2C使用起始条件(Start Condition)和停止条件(Stop Condition)来标识数据传输的开始和结束。 数据传输可以是字节(Byte)级别的,也可以是多字节(Multi-Byte)级别的。 主设备通过将数据位推送到SDA线上发送数据,从设备通过SDA线接收数据。 I2C传输模式: I2C支持两种传输模式:发送模式(Master Transmit)和接收模式(Master Receive)。 在发送模式中,主设备向从设备发送数据。 在接收模式中,主设备从从设备接收数据。 数据帧格式: 起始条件(占用总线)+数据位(8 位,发送方发出,一般为7位地址位和1位读写位)+应答位(1 位,接收到 1 个字节数据的 一方要回一个应答,0 有应答,1 非应答)+数据传输(8位)+停止条件(释放总线) I2C时钟速度和通信速度:I2C通信的时钟速度由主设备控制。 标准模式下,时钟频率为100 kHz。 快速模式下,时钟频率为400 kHz。 高速模式和超高速模式下,时钟频率可以更高,但具体取决于设备和总线的支持能力。 IIC 总线通信速度: 低速:100Kbit/s 快速:400Kbit/s 高速:3.4Mbit/s I2C应答机制:在每个数据字节传输后,接收设备会发送应答位(ACK)以确认接收到数据。 如果接收设备成功接收数据,它会拉低SDA线发送ACK信号;如果无法接收或不希望接收,它会保持SDA线为高电平发送NACK信号。 应答的发送和接收: I2C总线上的多个设备共享同一对SDA和SCL线。 为了避免冲突,一般使用以下两个方法: 尽量保持地址唯一性。总线仲裁,I2C使用仲裁机制来检测总线上的冲突情况,并由冲突检测的设备放弃发送数据。I2C总线使用开漏架构,这意味着设备可以拉低SDA线,但不能将其拉高。当两个或多个设备同时尝试将SDA线拉低时,发生冲突。在总线仲裁过程中,设备根据自身的地址优先级决定是否继续发送数据或放弃发送,以解决冲突。 总线仲裁的过程是通过设备对SDA和SCL线的观测来实现的。如果一个设备发送的数据与总线上的数据不匹配,它会立即检测到冲突并停止发送。然后,它会等待总线空闲,并重新尝试发送数据。错误重传和硬件检测两个方式一般不用,大致就是错误重传是在检测到应答机制非正常或者数据传输非正常时候,使用IIC控制器和软件来重复传输数据(设置最大重复传输次数。)硬件检测就是检测时钟线和数据线的高低电平变化,来确定传输错误原因。 I2C设备规格:熟悉要使用的具体I2C设备的规格说明、数据手册或参考资料。 学习设备的功能和特性,包括寄存器、命令、数据格式等。 主机读取数据![]() ![]() 初始化I2C接口、配置通信参数、发送和接收数据。参考代码: void IIC1_Pin_Init(void) { //PB6----SCL---推挽输出 //PB7----SDA---开漏输出 RCC->AHB1ENR |=0x01 |
CopyRight 2018-2019 实验室设备网 版权所有 |