电子设备之间的通信就像人类之间的交流,双方都需要说相同的语言。在电子产品中,这些语言称为通信协议。之前有单独地分享了SPI、UART、I2C通信的文章,这篇对它们做一些对比。串行 VS 并行电子设备通过发送数据位从而实现相互交谈。位是二进制的,只能是1或0。
今天我们来玩儿I2C。I2C概述I2C全称是Inter-Integrated Circuit,是飞利浦半导体公司(06年迁移到NXP了)在1982年发明的,是使用非常广泛的一种通信协议,很多传感器、存储芯片、OLED等,都是在使用I2C。
I2C 之前世今生(Inter-Integrated Circuit),是一种同步、多主、多从、分组交换、单端、串行计算机总线,由飞利浦半导体(现在的 NXP 半导体)在 1982 年发明。它广泛用于在短距离、板内通信中将低速外设集成电路附加到处理器和微控制器上。
这时候很多就会说,这不是很简单,让软件用调试器加断点跟踪啊,说对了,我们firmware工程师还是很牛逼的,很快就告诉我们问题出在I2C上, 我们用示波器测量在死机情况下的I2C信号,发现SDA数据信号一直是低电平,怎么复位都没有用,一直是低,只有断电重启后,SDA才变高。
就是使用芯片上的I2C外设,也就是硬件I2C,它有相应的I2C驱动电路,有专用的IIC引脚,效率更高,写代码会相对简单,只要调用I2C的控制函数即可,不需要用代码去控制SCL、SDA的各种高低电平变化来实现I2C协议,只需要将I2C协议中的可变部分通过函数传参给控制器,控制器自动按照I2C协议实现传输,但是如果出现问题,就只能通过示波器看波形找问题。
在生活中,经常会碰到设备掉电的情况,像手机,智能手环,电脑等等;这是因为这些设备中都有一个“掉电保存”的器件,比如硬盘,U盘等等,他们的特点就是没电了之后,存在他们上面的信息不会丢失,就像人的大脑,有记忆功能。
软硬件开发参考文档:本章节详细全面、通俗易懂地阐述了超快速模式下的I2C总线的连接方式、逻辑电平、数据有效性、启动停止条件、字节格式、数据应答、从机地址、保留地址、广播地址、软件复位、启动字节、设备ID等内容。
,是一种同步、多主、多从、分组交换、单端、串行计算机总线,由飞利浦半导体在 1982 年发明。也可以写成 I2C 或 IIC。自 2006 年 10 月 10 日起,实施 I2C 协议不需要任何许可费用。
今天华妹就给大家好好捋捋嵌入式常用的5大协议,全是干货,话不多说,赶紧上车!在串口通讯的协议层中,规定了数据包的内容,它由启始位、主体数据、校验位以及停止位组成, 通讯双方的数据包格式要约定一致才能正常收发数据。
在14 玩转STM32之IIC通信我们讲了软件模拟的方式,本章讲解芯片自带的硬件部分。总结:STM32的I2C外设可用作通讯的主机及从机,支持100Kbit/s和400Kbit/s的速率,支持7位、10位设备地址,支持DMA数据传输,并具有数据校验功能。
CAN 通讯节点由一个 CAN 控制器及 CAN 收发器组成,控制器与收发器之间通过 CAN_Tx 及CAN_Rx 信号线相连,收发器与 CAN 总线之间使用 CAN_High 及 CAN_Low 信号线相连。