明确一件事情,此篇不写很准确的名词定义,而是用通俗易懂的方式理解一些电气概念,有了基本的轮廓概念之后,请大家回溯所学过的知识,进行批判性理解。
任何事情正确性都是相对的,也都有一定的适用范围。知识是有边界的。
我们还是在入门级别讲一些东西,打基础。
电是需要用电线之类的导体(可以通过电的物体)来输送。犹如水用水管来输送。
像水车这个靠水驱动的设备,大家试想下,水不流动了,水车也就不动了。但是水车是不知道自己不动了的。也就是它是一个完全被动型的设备。
实际上,大部分物体都是这种,环境、外部物体对它施加一个力量,它就做出个简单的反应。
很多童鞋,被填鸭式的教育,死记硬背式的教育变得很像水车了,而是我们要深层次的理解下,我们已经被教育成这个样子的,是否需要做出一些思维模式的改变?
这里说两个比较有名的句子,具体那位老大说的,自行搜索。
1、大胆假设、小心求证
2、没有调查就没有发言权
保持好奇心,要记得我们见到的任何见怪不怪的东西,都不简单。任何一个名词、经验、名句、公式、定理、定律延伸开来思考会是无穷无尽。
“一定是这样,因为公式就是这样的。”
”你一定错了,因为爱因斯坦早就说过了。”
经常我们听到类似以上两句的言论,很多人喜欢先列个权威,让人无从质疑,然后巴拉巴拉一通。爱因斯坦一生说了很多话,不是每句话都是对的,公式定理就是用来打破的,不然科学也不会再进步。
但是往往你确认一件事情的时候,你已经错了,大部分情况实际都是薛定谔的猫,是死是活?
所以我们所学的任何知识只是一种参考,而非绝对。
现在我们知道了有种东西是被动式的物体。这个概念很重要,你对着石头说话,它一般是不会给你反馈的。
妈妈说:“小明”,小明回答:“听到了”。两个人的对话,是有反馈的,这叫做应答。
你对旺财说:“过来”,旺财摇着尾巴跑了过来,这也是一个主动的反馈。
实际上相互交流,智能点就是有问有答,输入输出。
对付呆瓜,不需要回答,那就是下命令,输出;
还有一种情况是,你很忙,不想回答,有个话痨在你耳朵旁边喋喋不休,很烦,这个就是输入。
上面就是通讯最基本的三种方式。
你是中国人,你的朋友是俄罗斯人,你不懂俄语,朋友不懂中文,但都懂点英语。
你们约定好,用英语交流,这就是通讯协议。
我们看书上的通讯协议,有长短码,包头、包尾,结束符之类的东西(设备、智能芯片等等),实际就是用电线连接的两头的设备,不把协议规定好,相互之间通讯不说统一的语言,根本没法交流。现在我们要跑出来,先不管书上犹如密码一样的各种字符、图形,就依照实际我们的生活去理解,简单。
电一般需要用电线来传输。较真的开始说了,手机不用电线也能打电话接收发送电信号。
好,我服你较真的性格,那么换种说法,电需要能够导电的物质(介质)来传输,再较真,为什么太空也能传输电,去问麦克斯韦、爱因斯坦、特斯拉、波尔等等老人家吧!他们最近在平行宇宙另一边比较闲,与他们相比犹如蝼蚁与太阳的差距,所以就不深入下去,我们继续入门学习。
简单点,两个物体需要通讯,那么仅仅围绕线这个问题。学是为了用,那么我们继续通讯的话题。
以目前个人理解,除去无线电(无线传输电)再除去两边都是呆瓜的设备之间的连线。
稍微智能点的电器设备(芯片)之间连接,比较复杂点,相互间有通讯协议的连线,就是总线
实际总线这个名词是经不起推敲的,任何连线几乎都得有协议(电流、电压、功率、频率等等)个人理解,就是设备之间的连线电线,有些需要几根线相互配合才能正常传输特定的电信号。然后给这组线起了个名字叫总线。
总线又通分为两种串行总线、并行总线
我们可以把总线看成车道,轿车看成电信号数据,单行道、双向单车道都属于串行,只能一辆辆车跟随通过。
多车道属于并行,可以并排着过车。
记得所有的名词都是特例,例如当我们说到总线时,仅仅代表某一类的连接线路。还是那句话,电气设备需要我们提供什么,我们就给他什么,最终组合起来能够工作,就证明我们的连接线,元器件选型是对的。不必纠结于名词。
举例,例如两个设备需要I2C总线通讯,那我们就按照I2C总线的协议,要求连上就好了。
说到这里,就得说几种常用的总线了。
先说几种串行总线(连接线数少,容易实现,速度比并行线慢)
总结常用的就是一根线、两根线、三根线、四根线、八根线
一根线:单总线
两根线:I2C总线,CAN总线,485总线,USB等
三根线:RS232(常用连接三根线 TX RX GND)
四根线:SPI总线(SCK MISO MOSI CS)
八根线:网线(实际网线省掉4根,只用其中四根线也可以,速度慢一些,千兆网必须8根线)
对电子工程师,实际上相对简单,就是把这几根线连接到两个设备或者芯片上,总线对嵌入式软件工程师,就是比较头痛的操作,首先必须了解协议细节,才能写出可以通讯的程序来。
I2C 连接设备的接线方式
以I2C 接口为例,对硬件来说,就是两根线,可以连接到很多设备上,并且需要在每根线上接上一个电阻到电源(必须有)
I2C连接芯片的方式,实际把芯片看出设备,设备看出芯片也一样
STM32F407ZGT6 芯片实物图
焊在板子上的样子
画的焊接的位置(这是pcb的图面 2D 方式 上图是3D方式,实际代表一个东西)
放大后就可以看到SCL SDA两个引脚
这是一个芯片 stm32F407ZGT6
放大之后,看到它的139 140是I2C的引脚,也就是这两个脚支持I2C通讯
将上面两个芯片的 SCL SDA用走线连起来,然后在这两根线上焊上两个电阻 R417 R477 (这两个电阻一边接5V 两位一边分别接SCL SDA),对硬件来说实际工作已经完成了,制作出完整的板子后,交给软件工程师写嵌入式程序(往STM32F407 里面写程序,具体方式后续开源平台会讲)。
实物是这样的
无论是pcb(印制电路板实际就是在一个板子两面都有铜皮,把铜皮用药水腐蚀掉不用的,留下有用的一根根线)上的走线还是排线,目的就是把一堆器件连在一起,能够通过电信号。
最后,就是接口了,对硬件来说,所有的插座都是接口,排线或者其他种类的线材就是连接接口的。接口、接口就是相互能够连接的开口(插座口)非常直白的表示。
但是对软件来说,接口不是像实物这样,你可以理解程序接口是两段程序相互通讯的中间一段程序代码。
你可能存在的疑问:
1、I2C SPI 到底是什么?
2、pcb是什么,pcb上的走线是怎么走的?
3、很多图,但是感觉图总是和自己隔着一层,不好理解。
总结下:
任何设备能够正常通讯大部分需要线连接,通讯协议就是两个设备能够应答定义的共同语言,总线就是一类连接线路的统称,接口就是接口,连接口的意思。
学习带着问题去学,永远是会有疑问的,你可以网上搜索下这些接口的英文名词,加深理解,对比思考,看起来简单的一个名词,实际上都需要一个大部头的书籍才能讲清晰,特别是涉及通讯协议的内容。
例如下面的书:
很多时候大家看书看不懂,最主要的原因是,一个自然段大量的抛出专业名词,实际大部分专业名词可能倾尽一位科学大家的毕生精力,不是你理解能力差,而是功夫下的少。
贴近硬件的嵌入式工程师,大部分时间查询资料就是在看通讯协议,与各种接口打交道。你对各种协议了解的越多,出错越少。水平也会越来越高。
本节结束。