几种常用的接口协议的积累,欢迎补充

总的来说,
UART用在与主机(比如计算机)接口外设相连。
I2C是由飞利浦公司提出的,用于与芯片与芯片之间的通信。
spi是摩托罗拉最先提出的,用于芯片与芯片间的通信,与i2c不同的是传输需要四根线,i2c传输需要两根线,所以速率比i2c快。
最早是没有统一的串行接口标准的,各个公司在自己的领域分别提出来,最终成为了通用的标准。
这些协议分别用在不同的通信,分别完成不通的功能。就像人体内有很多肌肉。但由于完成的功能不同而结构不同。

1.   PWM :  驱动风扇,蜂鸣器 ..
百度百科的解释很专业,可也很不容易懂。
脉宽调制(PWM)基本原理:控制方式就是对逆变电路开关器件的通断进行控制,使输出端得到一系列幅值相等的脉冲,用这些脉冲来代替正弦波或所需要的波形。也就是在输出波形的半个周期中产生多个脉冲,使各脉冲的等值电压为正弦波形,所获得的输出平滑且低次谐波少。按一定的规则对各脉冲的宽度进行调制,即可改变逆变电路输出电压的大小,也可改变输出频率。

     那么简单的说,就比如你有5V电源,要控制一台灯的亮度,有一个传统办法,就是串联一个 可调电阻,改变电阻,灯的亮度就会改变。还有一个办法,就是PWM调节。不用串联电阻,而是串联一个开关。假设在1秒内,有0.5秒的时间开关是打开的,0.5秒关闭,那么灯就亮0.5秒,灭0.5秒。这样持续下去,灯就会闪烁。如果把频率调高一点,比如是1 毫秒,0.5 毫秒开,0.5 毫秒灭,那么灯的闪烁频率就很高。我们知道,闪烁频率超过一定值,人眼就会感觉不到。所以,这时你看不到灯的闪烁,只看到灯的亮度只有原来的一半。
       同理,如果1毫秒内,0.1毫秒开,0.9毫秒灭,那么,灯的亮度就只有原来的10分之一。
这就是PWM的基本原理。专业的说法百度一下就很多,我说了也不专业。但是道理就是这么简单,具体PWM还分几种,总的来说,都是保持一定的电压或电流不变,但改变一定周期内的导通和关断时间。这样等效于保持导通,但改变电压或电流大小。
这样的PWM控制方式,在数 s 字控制电路上应用很方便。因为让电脑去控制一个 可调电阻是比较困难的,而且 可调电阻还有 模拟电路固有的不稳定问题。

2.   SPI: SPI(Serial Peripheral Interface)是MOTOROLA公司提出的同步串行总线方式。高速同步串行口。3~4线接口,收发独立、可同步进行.

    因其硬件功能强大而被广泛应用。在单片机组成的智能仪器和测控系统中。如果对速度要求不高,采用SPI总线模式是个不错的选择。它可以节省I/O端口,提高外设的数目和系统的性能。标准SPI总线由四根线组成:串行时钟线(SCK)、主机输入/从机输出线(MISO)。主机输出/从机输入线(MOSI)和片选信号(CS)。有的SPI接口芯片带有中断信号线或没有MOSI。

      SPI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI)。SPI总线可以实现多个SPI设备互相连接。提供SPI串行时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。主从设备间可以实现全双工通信,当有多个从设备时,还可以增加一条从设备选择线。如果用通用IO口模拟SPI总线,必须要有一个输出口(SDO),一个输入口(SDI),另一个口则视实现的设备类型而定,如果要实现主从设备,则需输入输出口,若只实现主设备,则需输出口即可,若只实现从设备,则只需输入口即可。

3.   I2C:(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备. 比如:   光照传感器 ISL29003

I2C总线用两条线(SDA和SCL)在总线和装置之间传递信息,在微控制器和外部设备之间进行串行通讯或在主设备和从设备之间的双向数据传送。I2C是OD输出的,大部分I2C都是2线的(时钟和数据),一般用来传输控制信号。

I2C是多主控总线,所以任何一个设备都能像主控器一样工作,并控制总线。总线上每一个设备都有一个独一无二的地址,根据设备它们自己的能力,它们可以作为发射器或接收器工作。多路微控制器能在同一个I2C总线上共存。

    I2S(Inter-IC Sound Bus)是飞利浦公司为数字音频设备之间的音频 数据传输而制定的一种总线标准。

    I2S则大部分是3线的(除了时钟和数据外,还有一个左右声道的选择信号),I2S主要用来传输音频信号。如STB、DVD、MP3等常用

4.    UART:通用异步串行口。按照标准波特率完成双向通讯,速度慢.   比如: WIFI模块 --TLN13UA06

     UART总线是异步串口,因此一般比前两种同步串口的结构要复杂很多,一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART发送器组成,硬件上由两根线,一根用于发送,一根用于接收。

     UART是用于控制计算机与串行设备的芯片。有一点要注意的是,它提供了RS-232C数据终端设备接口,这样计算机就可以和调制解调器或其它使用RS-232C接口的串行设备通信了 。作为接口的一部分,UART还提供以下功能:

        将由计算机内部传送过来的并行数据转换为输出的串行数据流。将计算机外部来的串行数据转换为字节,供计算机内部使用并行数据的器件使用。在输出的串行数据流中加入奇偶校验位,并对从外部接收的数据流进行奇偶校验。在输出数据流中加入启停标记,并从接收数据流中删除启停标记。
       处理由键盘或鼠标发出的中断信号(键盘和鼠标也是串行设备)。可以处理计算机与外部串行设备的同步管理问题。有一些比较高档的UART还提供输入输出数据的缓冲区,现在比较新的UART是16550,它可以在计算机需要处理数据前在其缓冲区内存储16字节数据,而通常的UART是8250。现在如果您购买一个内置的调制解调器,此调制解调器内部通常就会有16550 UART。

5.     GPIO (General Purpose Input Output 通用输入/输出)或总线扩展器利用工业标准I²C、SMBus™或SPI™接口简化了I/O口的扩展。 比如: LED...

        当微控制器或芯片组没有足够的I/O端口,或当系统 需要采用远端串行通信或控制时,GPIO产品能够提供额外的控制和监视功能。每个GPIO端口可通过软件分别配置成输入或输出。Maxim的GPIO产品线包括8端口至28端口的GPIO,提供推挽式输出或漏极开路输出。提供微型3mm x 3mm QFN封装。

GPIO的优点(端口扩展器)

  低功耗:GPIO具有更低的功率损耗(大约1μA,μC的工作电流则为100μA)。

  集成IIC从机接口:GPIO内置IIC从机接口,即使在待机模式下也能够全速工作。

  小封装:GPIO器件提供最小的封装尺寸 ― 3mm x 3mm QFN!

  低成本:您不用为没有使用的功能买单!

  快速上市:不需要编写额外的代码、文档,不需要任何维护工作!

  灵活的灯光控制:内置多路高分辨率的PWM输出。

  可预先确定响应时间:缩短或确定外部事件与中断之间的响应时间。

  更好的灯光效果:匹配的电流输出确保均匀的显示亮度。

       布线简单:仅需使用2条IIC总线或3条SPI总线

6.    SDIO
     SDIO是SD型的扩展接口,除了可以接SD卡外,还可以接支持SDIO接口的设备,插口的用途不止是插存储卡。支持 SDIO接口的PDA,笔记本电脑等都可以连接象GPS接收器,Wi-Fi或蓝牙适配器,调制解调器,局域网适配器,条型码读取器,FM无线电,电视接收 器,射频身份认证读取器,或者数码相机等等采用SD标准接口的设备。

I2S和PCM接口都是数字音频接口,而蓝牙到cpu以及codec的音频接口都是用PCM接口,是不是两个接口有各自不同的应用呢?先来看下概念。
7. PCMPCM-clock 、PCM-sync、PCM-in、PCM-out)脉冲编码调制,模拟语音信号经过采样量化以及一定数据排列就是PCM了。理论上可以传输单声道、双声道、立体声和多声道。是数字音频的raw data。

     脉冲编码调制就是把一个时间连续,取值连续的模拟信号变换成时间离散,取值离散的数字信号后在信道中传输。脉冲编码调制就是对模拟信号先抽样,再对样值幅度量化,编码的过程

      PCM:(pulse coded modulation)脉冲编码调制,是将模拟信号抽样量化,然后使已量化值变换成代码。通常pcm有4跟信号 线:pcm-clk,pcm-sync,pcm-in,pcm-out。在使用pcm之前,应该配置好pcm接口。通常会设定frame sync,bit samples,tristate edge,pcm-sync,Enable GCI mode,Mute等等。市面上有很多codec,分单声道和立体声。举个例子,mc14583是一种单声道的codec,它的作用就是将从mic进来的模拟信号,转换成pcm-in信号,或者将pcm-out的信号变换为模拟信号从spk端输出。

       I2S是音频数字化后数据排列的一种格式,所传输的就是PCM,支持单声道和立体声。

    PCM是一个通称、混称,I2S是对原始PCM进行数据排序处理,本质就是PCM,可以说I2S是PCM的子集。所以我想蓝牙芯片上的PCM接口同样可以用I2S来传输。CPU和codec上的PCM和I2S接口也是为支持更多硬件提供的资源。

      一般cpu到蓝牙的通话实时音频使用pcm,有的蓝牙芯片内置MP3codec,mp3走uart/usb更合适。

     PCM和I2S的区别在于,pcm一般是固定8k的采样率的单声道音频,最早似乎和固定电话的编码有直接关系,之后所有的话音编码几乎都是在pcm编码基础上再次编码得到的。而I2S则多了一个专门的信号线,采样率也可以配置到较高的频率,如44k。

手机通话时候的编码一般都会被解码成8k采样率的pcm码,高了也没有用。因为本来手机通话的话音频段就是300~3400Hz而已,编码也是按8k采样的。某些手机平台并没有I2S接口,相对来说基本上都会有pcm接口。

A2DP应该还是走的UART,8k的采样率, 而且很多蓝牙芯片都内置mp3 codec,走ACL的UART更合适

目前很多蓝牙,芯片内置了mp3解码器,所以mp3格式的音频并不需要bb这边做解码,从我自己经验看,记得只有最开始的时候做蓝牙有考虑这方面问题,后来的蓝牙项目基本上只有话音走pcm,其他的走UART。

8.     CAN
      CAN,全称为“Controller Area Network”,即控制器局域网,是国际上应用最广泛的现场总线之一。最初,CAN被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置ECU之 间交换信息,形成汽车电子控制网络。比如:发动机管理系统、变速箱控制器、仪表装备、电子主干系统中,均嵌入CAN控制装置。
一个由CAN 总线构成的单一网络中,理论上可以挂接无数个节点。实际应用中,节点数目受网络硬件的电气特性所限制。例如,当使用Philips P82C250作为CAN收发器时,同一网络中允许挂接110个节点。CAN 可提供高达1Mbit/s的数据传输速率,这使实时控制变得非常容易。另外,硬件的错误检定特性也增强了CAN的抗电磁干扰能力。

什么是CSMA/CD ?
        CSMA/CD是“载波侦听多路访问/冲突检测”(Carrier Sense Multiple Access with Collision Detect)的缩写。
利 用CSMA访问总线,可对总线上信号进行检测,只有当总线处于空闲状态时,才允许发送。利用这种方法,可以允许多个节点挂接到同一网络上。当检测到一个冲 突位时,所有节点重新回到‘监听’总线状态,直到该冲突时间过后,才开始发送。在总线超载的情况下,这种技术可能会造成发送信号经过许多延迟。为了避免发 送时延,可利用CSMA/CD方式访问总线。当总线上有两个节点同时进行发送时,必须通过“无损的逐位仲裁”方法来使有最高优先权的的报文优先发送。

你可能感兴趣的:(嵌入式)