I2C和串口有什么区别?难倒资深工程师的“简单问题”,瞬间读懂
燚智能硬件开发实战派-前期回顾
晶体和晶振是一个东西么? 不是!
觉得我们讲的有用么?欢迎关注本头条号。
智能硬件开发工程师实战知识,用你看得懂的方式讲解!
每日更新,头条号首发!
I2C有什么用?
I2C,又叫IIC。标准写法应当是I2C,读作“I方C”。因为小编是纯手工敲键盘,这里就偷个懒,都写成I2C了。
具体含义网上一搜一大把,这里就不讲这些生涩的概念了,直入主题:
两根线、双向传输数据、一对多传输数据、速度不快、通用性很强。
适用场景:各种传感器、小IC、小MCU等。控制指令和小数据量的传输。
这张图里面没有I2C。小编图好看随便配的 >_<
I2C和UART的区别?
说到两根线的数据传输方式,大家可能会对串口(UART)最熟悉,TX、RX两根线即可传输数据,常用的跑到115200bps的速度毫无问题。
那么为什么还需要I2C这样的同样是两根线的传输方式呢?
I2C能够1对多,UART只能1对1。因此I2C又叫I2C总线。
I2C接口能够用软件模拟来扩充接口,UART则不行。
I2C接口带有同步时钟,对时钟稳定性要求远没有UART那么高。
由此可见,I2C存在的最大原因在于简单且灵活性高。
例如一个主控要接5个外设,但是通常的主控都不可能有5个UART口。如果用UART就需要硬件扩展。
但是用I2C的话,只需要1组I2C接口即可。即使没有硬件I2C接口,也可以有软件模拟I2C的源代码可以调用。(I2C源码网上随便就可以搜到很多)。嵌入式开发初学者都可以在一周之内自己独立写一套出来。
I2C使用范例
单独输出传输
这个没什么好讲的,硬件连好了,软件配置好了,数据就可以顺利传输了。
这种连接方式,仅限于CPU需要控制外设,而外设永远不会自己主动发数据给CPU 的情况。如果外设需要主动要求发数据个CPU,需要采用下面一种方式。
带中断的数据传输
为什么要加中断?
I2C只能由CPU(主机)去找外设(从机)索取数据,外设不能主动发送数据给CPU。
但是CPU不能定期去问外设“你有没有数据要发给我?”,这样耗CPU的计算资源,也耗电,且无法进入睡眠状态。
因此需要外设有办法通知CPU,“我有数据要发了”。I2C配合的中断信号就是这个作用。外设有数据要发了,先发个中断给CPU,CPU再来通过I2C读取外设想要发过来的数据。
对于低功耗应用的场景、能够触发的外设场景,都需要这么来设计。例如电容触摸屏,平时CPU是休眠的,点击一下就唤醒系统。再例如G-Sensor运动传感器,一旦被晃动了就唤醒CPU。
一个控制多个设备:
如何一对多?
一根I2C总线上挂载多个设备,那么岂不是CPU发个什么数据,所有的外设都可以看得到?
是的,就这样子的。只不过CPU先会发一个地址,所有的外设都会收到这个地址。这个地址就好比外设的名字。叫了你了,你就答应,没叫你就别答应。
地址总共能有127个,不同的I2C接口的外设的地址通常是不会重复的。
对于如果我需要在一根I2C总线上挂载多个相同的外设呢?例如上面的一组I2C控制几个灯控IC。这种情况下,IC厂家通常都会未卜先知,知道大家可能会一口气用好几个,在IC上预留地址脚 ,通过不同的拉高和拉低的状态,把设备的I2C的地址配置成不同的值。
通过地址选择脚,选择不同的I2C地址
I2C协议简单介绍
讲了,这么多,硬件工程师们知道什么是I2C以及怎么使用了,但是还是不能愉快的和软件工程师交流,因为还不知道传输的详情。
I2C时序图
具体的I2C工作时序,记住这么几条就可以理解了:
只能由主机(Master)发起数据传输请求,从机(Slave)只能被动响应。
通常MCU是主机,外围设备是从机。
主机和从机都不说话的时候,两根线都是高电平。(被外部上拉电阻拉高的)
主机先发送地址(Address),I2C上挂载的所有的设备都会收到这个地址,只有这个地址和自己的地址一致,才会响应(ACK)。
主机发送地址的时候顺带还会说本次操作是读还是写(RW)。从机收到这个读写信号,如果是读,从机就准备好要被读取的数据等着主机来读,如果是写,从机就做好接收数据的准备。
从机响应了,主机才会继续发数据。如果没有人响应,要么是从设备都挂了,要么是地址不对,总之就是有问题。
如果上面的都ok了,接下来就是按部就班的传输数据了。
I2C实测波形
硬件工程师和软件工程师手把手蹲在示波器旁边数I2C波形,在调试过程中经常看得到。
最后提一个思考题,这个问题很多资深工程师都没有想过!
如果两个外设都是一个地址,会怎么样?
就好比一个课堂上,两个同学都叫小明,老师说:小明,去把窗户打开。
是一个小明有反应?还是两个有反应?还是都没有反应?
燚智能硬件开发网--周教授大讲堂 (四个火,读 Yi)
以前有更多更精彩的内容呢!
MOS管实战应用案例讲解,绝非老师教你的那么用的!
原理图英文缩写大全,丢掉规格书,快速看懂原理图
肖特基二极管三个核心参数,看完就会用了!
USB转串口IICI2CSPIUART适配器可编程开发板TYPE接口
电源
供电: VIN3.0~10V,可 USB 接口供电,即插即用。
工作电压: VWK3.3V 或者 VIN, 跳线切换。
电源输出: VIN、 3.3V 及 VWK 供其它设备使用,最高 500mA 输出能力。
功耗:
无操作自动休眠,休眠电流低至 5uA。
通讯速率(非 IO 模拟, 温补晶振, 时钟精准)
UART: 通讯速率 1200~921600bps(1.2kbps~0.9Mbps)。
I2C/SMBus: 通讯速率 0.33kHz~1.8MHz, 可搜索总线上所有从设备。
SPI: 通讯速率 2.75kHz~5.5MHz, 从模式,可设置时钟极性和相位。
1-Wire: 通用读写, 可连接多种型号 1-Wire 设备(芯片)。
扩展功能
板载 IIC 接口 AT24CxxEEPROM 芯片、 SHT 温湿度传感器芯片、 16 位差分 AD 采集。
板载 SPI 接口 GD25Qxx 芯片,可用于 SPI 接口测试或者存储用户数据。
板载 1-Wire 接口 DS18B20 温度传感器/DS28EC20/2431/2502EEPROM 芯片
IIC 屏幕专用接口,连接 OLED12832 屏幕。
外形尺寸
30mm*45mm*3mm(PCB 尺寸,不包含 USB 连接器)
工作温度: -40~85℃
其它
驱动程序: WinXP~Win10、 WinCE、 Android
全球唯一识别码
公开 PCB 原理图及测试源码
支持 Keil 编程,在线仿真,最多 10 个 GPIO,电压比较器, PWM内置专用透传协议,无需开发即可实现复杂外设数据交互
应用领域
USB 与串行口物理层透明通讯
串行接口转发器
电子设备固件 ISP 升级
EEPROM、 FLASH 读写器、数据存储器
串行接口芯片、设备测试、 Demo 运行器
相关问答
i2c转ttl怎么接线?
这个简单,插电脑安驱动,打开串口软件.在不发送数据的情况下量电压,5v或3.3v的暂时认为是tx引脚(一般是3.3v).再然后打开串口软件的自动发送,自动发送00,间隔时...
arm的串口有哪些?
ARM处理器的串口主要分为两类:标准串口和高级串口。标准串口包括UART(UniversalAsynchronousReceiver/Transmitter)和USART(UniversalSy...
摩迪威和摩枭的区别是什么?
2.接口:摩迪威提供了多种传感器接口,包括I2C、串口和数字/模拟引脚,使其能够与各种类型的传感器进行通信。而摩枭主要提供了电机驱动接口和扩展引脚,用于连...
mdc810是什么?
mdc810是一款高效的数据中心网络芯片,由思科公司推出。它支持以太网、光纤通道等多种网络协议,能够实现高速、可靠的网络连接,满足大规模数据中心的需求。该...
SPI、I2C、USART等协议有什么共同点和区别?
USART就是属于较慢的了,一般为1152200bps,我一般也用这个速率,由于速度较慢,一般用来作为调试接口较多。还有市场上有些模块会用串口,串口蓝牙,MPU6050(陀...还...
单片机和外设(或外部系统)的通信方式除了串口通信之外还有那...
I平方C,SMBUS,SPI.SPI,I2C总线都可以阿1-line单总线,IIC总线通信
玩树莓派能学到什么?
$gpioreadall可以得到树莓派的IO口定义,基本的SPI,串口,CAN,I2C通信都是应有尽有。我们可以借此和很多外设,传感器连接做一些趣味项目,比如智能小车,还可...
mc81f4204w芯片引脚参数?
MC81F4204W芯片是一款8位单片机,具有28个引脚。其中,VDD和VSS分别为芯片的电源正负极引脚,XTAL1和XTAL2是连接外部晶体的引脚,P0.0~P0.7和P1.0~P1.7是IO口引....
q80c参数?
Q80C是一种高性能、低功耗的ARMCortex-M4F内核单片机。它具有丰富的外设资源,包括多个串口、SPI、I2C、GPIO等。同时,Q80C还支持USB、CAN、以太网等通信接口,...
单片机并口传输最大速度?
单片机并口硬盘传输速度最快是133M;51单片机传输方式:串口、COM口是指的物理接口形式(硬件)。而TTL、RS-232、RS-485是指的电平标准(电信号)串行通信:指数...