精华内容
下载资源
问答
  • 因而电子控制漫备、微型计算机和以数字处理为基础各种电气装置,不仅要求电网电压稳定,而且要求能抑制电源噪声干扰, 要求一个既稳定又纯净电源。   SVC—C系列抗干扰:扰精密交流 稳压器足我翻5 叶-...
  • 本征电路电流过小,抗干扰能力弱,输出信号更容易耦合进来。 2、输出走线太长时候,不光容易自激,而且信号也容易受到干扰,最好走屏蔽,没有条件,可以考虑输出串小电阻。串联小电阻,不完全是解决相位问题,...
    

    如何防止放大电路自激?

    个人经验,最有效的方法:

    1、放大电路的阻值是否太大了? 例如我看过放大10倍的电路,电阻选用100k,1M。(甚至教科书也这么写)。本征电路电流过小,抗干扰能力弱,输出信号更容易耦合进来。

    2、输出走线太长的时候,不光容易自激,而且信号也容易受到干扰,最好走屏蔽,没有条件,可以考虑输出串小电阻。串联小电阻,不完全是解决相位问题,同时解决容性负载过大时,造成的运放工作异常。

    3、放大倍数不宜过大,输出信号过强,输入信号过于弱,则容易耦合。

    4、跨阻并联电容,虽然从理论上是有效地,但是电容影响输出相位一致性,电容离散型过大。在强调相位一致性的场景,需要考虑相位影响。

    5、接地,永恒的话题。


    运放震荡自激的原因:

    1、环路增益大于1 2、反馈前后信号的相位差在360度以上,也就是能够形成正反馈。

    参考《自控原理》和《基于运算放大器和模拟集成电路的电路设计》

    自激振荡的引起,主要是因为集成运算放大器内部是由多级直流放大器所组成,由于每级放大器的输出及后一级放大器的输入都存在输出阻抗和输入阻抗及分布电容,这样在级间都存在R-C相移网络,当信号每通过一级R-C网络后,就要产生一个附加相移.此外,在运放的外部偏置电阻和运放输入电容,运放输出电阻和容性负载反馈电容,以及多级运放通过电源的公共内阻,甚至电源线上的分布电感,接地不良等耦合,都可形成附加相移.结果,运放输出的信号,通过负反馈回路再叠加增到180度的附加相移,且若反馈量足够大,终将使负反馈转变成正反馈,从而引起振荡.

    具体一点可能

    1.可能运放是分布电容和电感引起的 2. 运放驱动容性负载导致。

    3.可能是反馈过深引起的

    解决方法:

    1. 环内补偿

    运放反馈电阻并接反馈电容:

    小电容叫做移相电容,防止运放自激的一般取0点几皮法到几十皮法几百皮法,看工作的频率以及运放的型号来定

    简单点说加的电容越大,带宽越窄

    防止振荡Rf和运放的输入电容及杂散电容形成极点,如果该极点在运放使用的频率范围内就可能使运放产生振荡;加入Cf后,Cf和Rf产生零点,用来抵消极点。一般取值Cf>Ci,Ci为运放的输入电容和输入脚杂散总电容。

    2. 环路外补偿法、

    在运放的输出端串上一个小电阻

    再连到后级,十几欧到几十欧之间既可,具体值与后级电路的输入电容有关,可尝试不同的电阻值,获得稳定的输出

    PS:

    1.电源供电稳定,最好并联0.1uf ,10uf等电容

    2.放大倍数不能过大,放大级数也不要超过四级

    实验或测试之前,若用示波器接在运放输出端,有时可以看到频率较高且近似正弦波的波形,偶尔也出现低频振荡的情况.可根据产生振荡的原理采取不同的方法解决:

    (1)反馈极性是否接错或负反馈太强.若将负反馈错接成正反馈则极易产生振荡.另外,负反馈愈强也愈易产生自激.

    (2)若输出端接有的电容性负载,由于容性负载加强了电路的相移,所以更易自激.可以用另一个RC环节来补偿相移,如果补偿得好自激振荡就会消除.

    (3)接线杂散电容过大.当输入回路为高阻时,由接线到地或接线之间的杂散电容与电阻组成的滞后环节,将使组件变得不稳定.为此可在Rf(反馈电阻)两端并联一个电容CF,或者在运放的输人端并联一个RC支路,这两个环节都属于超前校正的性质,即它们产生的相位超前作用将有可能抵消前面所述杂散电容所起的相位滞后作用,从而使运放稳定.

    (4)电源接线旁路措施不够.电源引线不仅具有一定电阻,还有一定的电感和分布电容,因此当有许多运放接到同一根电源线时,,将通过这些因素产生相互之间的影响,解决的办法是在印刷电路板插座上的正负电源的接线端与地之间接上几十uF的电解电容和0.01uF的陶瓷电容相并联,如果运放是作为宽频放大,须选用低电感量的电容.


    以前研究所的老头跟我说:模电是一门艺术;也有人说:模电是一门魔术,难于捉摸; 其实我觉得:模电是一门赌术,买大买小而已。动手过程中发现规律,理论结合实际,螺旋式发展。

    展开全文
  • 去耦电容和滤波电容的布置是改善电路板的电源质量,提高抗干扰能力的一项重要举措。实际上,印制电路板的走线、引脚连线和接线等都有可能带来较大的电感效应,电感的存在会在电源线上引起纹波和毛刺,而在电源和地...
  • 【FPGA】高速DA学习和使用(1)

    千次阅读 2019-11-02 11:20:54
    #来自学渣的问候 这个是一个学完之后的总结 DAC——数模转换器,将数字信号转换...数字信号的好处在于它容易被处理,电路的搭建也更加容易,信号抗干扰能力也更强,比模拟信号更容易加密。 模拟信号最好的地方就...

    #来自学渣的问候

    这个是一个学完之后的总结

    DAC——数模转换器,将数字信号转换成模拟信号(电压、电流)。

    模拟信号:信号的频率、幅值、相位随时间连续变化。在一定时间内,任意取值都能得到一个瞬间的数量。
    数字信号:信号是离散的,不连续的。信号的整体都用有限的数字位去处理。

    数字信号的好处在于它容易被处理,电路的搭建也更加容易,信号抗干扰的能力也更强,比模拟信号更容易加密。
    模拟信号最好的地方就是它的信号非常直观、易于实现,但是它容易受到干扰、也容易被窃听。
    但是,在生活中,我们还是有很多使用到模拟信号的地方,因此我们需要将数字信号转换为模拟信号(比如耳机),这个时候就需要一个转换器,将数字信号转换为模拟信号。
    这个就是DAC,在FPGA中,因为FPGA它的特性,所以DAC的速度比较高,我们一般叫高速DA。
    在这里插入图片描述
    这里是一个高速ADDA,既有数模转换,也有模数转换,但是今天就讲数模转换。

    数模转换器的原理是这样的:数字量是通过代码按位数组合起来表示的,对于有权码,每位代码都有自己的位权,在转换的时候,必须要将代码按位权大小转换成相应的模拟量,然后让模拟量相加,就能得到相应的和数字量对应的模拟量。

    在硬件电路上,这个转换是利用权位电阻网络来实现的。
    拿黑金这块DA芯片(AD9708来说)
    AD9708是亚德诺(ADI)半导体生产的TxDAC系列数模转换器,具有高性能低功耗的特点,转换位数为8位,最大转换速度是每秒125MSPS
    在这里插入图片描述
    在图中可以看到,AD9708有一根接入的时钟线,和8位的数据线。这个芯片需要FPGA去给一个时钟信号,然后输入8位的数据,芯片内置一个1.2V的参考电压,然后是电流源和锁存器。IOUTA、IOUTB就是模拟的一个差分电流。数模转换之后,整个模块电路还会经过一个低通滤波器、以及幅度调节电路,因为最后我们从输出口检测到的是一个**-5V–+5V**的单端模拟电压值。
    在这里插入图片描述
    这个时钟给入的信号是50MHz,官方例程给的就是这样。

    这是芯片的时序图

    在这里插入图片描述
    这是一个上升沿将数字信号转换为模拟信号,在下降沿的时候将数据写入进去,这样芯片在上升沿采数据才是一个稳定的时刻。
    在这里插入图片描述
    从原理图来看的话,除了供电,我们只需要给CLOCK和DATA就可以了。
    高速DAC的原理就是这样的。换个看程序。

    展开全文
  • (1)为了得到较好动态特性和灵敏度,... (3)在大多数场合,霍尔传感器都具有很强的抗外磁场干扰能力,一般在距离模块5-10cm之间存在一个两倍于工作电流Ip电流所产生磁场干扰是可以忽略,但当有更强磁场
  • I2C SPI UART和CAN区别

    千次阅读 2016-05-27 08:44:02
    I2C数据输入输出用根线,SPI则分为...所以系统内部通信可用I2C,若要与外部通信则最好用SPI带隔离(可以提高抗干扰能力)。但是I2C和SPI都不适合长距离传输。长距离时就要用485了。  第:   SPI(Serial

    I2C的数据输入输出用的是一根线,SPI则分为dataIN和dataOUT。由于这个原因,采用I2C时CPU的端口占用少,SPI多一根。但是由于I2C的数据线是双向的,所以隔离比较复杂,SPI则比较容易。所以系统内部通信可用I2C,若要与外部通信则最好用SPI带隔离(可以提高抗干扰能力)。但是I2C和SPI都不适合长距离传输。长距离时就要用485了。 
    第一: 
         SPI(Serial Peripheral Interface:串行外设接口); I2C(INTER IC BUS);UART(Universal Asynchronous Receiver Transmitter:通用异步收发器) 
    第二,区别在电气信号线上: 
         SPI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI)。SPI总线可以实现多个SPI设备互相连接。提供SPI串行时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。主从设备间可以实现全双工通信,当有多个从设备时,还可以增加一条从设备选择线。     如果用通用IO口模拟SPI总线,必须要有一个输出口(SDO),一个输入口(SDI),另一个口则视实现的设备类型而定,如果要实现主从设备,则需输入输出口,若只实现主设备,则需输出口即可,若只实现从设备,则只需输入口即可。 
         I2C总线是双向、两线(SCL、SDA)、串行、多主控(multi-master)接口标准,具有总线仲裁机制,非常适合在器件之间进行近距离、非经常性的数据通信。在它的协议体系中,传输数据时都会带上目的设备的设备地址,因此可以实现设备组网。     如果用通用IO口模拟I2C总线,并实现双向传输,则需一个输入输出口(SDA),另外还需一个输出口(SCL)。(注:I2C资料了解得比较少,这里的描述可能很不完备) 
         UART总线是异步串口,因此一般比前两种同步串口的结构要复杂很多,一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART发送器组成,硬件上由两根线,一根用于发送,一根用于接收。显然,如果用通用IO口模拟UART总线,则需一个输入口,一个输出口。 
    第三,从第二点明显可以看出,SPI和UART可以实现全双工,但I2C不行; 
    个人认为: 
         I2C线更少,我觉得比UART、SPI更为强大,但是技术上也更加麻烦些,因为I2C需要有双向IO的支持,而且使用上拉电阻,我觉得抗干扰能力较弱,一般用于同一板卡上芯片之间的通信,较少用于远距离通信。SPI实现要简单一些,UART需要固定的波特率,就是说两位数据的间隔要相等,而SPI则无所谓,因为它是有时钟的协议。 
         I2C的速度比SPI慢一点,协议比SPI复杂一点,但是连线也比标准的SPI要少。 
    SPI总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。外围设置FLASHRAM、网络控制器、LCD显示驱动器、A/D转换器和MCU等。SPI总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一般使用4条线:串行时钟线(SCK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOST和低电平有效的从机选择线SS(有的SPI接口芯片带有中断信号线INT或INT、有的SPI接口芯片没有主机输出/从机输入数据线MOSI)。 
    SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是SDI(数据输入),SDO(数据输出),SCK(时钟),CS(片选)。 
    (1)SDO     – 主设备数据输出,从设备数据输入 
    (2)SDI    – 主设备数据输入,从设备数据输出 
    (3)SCLK – 时钟信号,由主设备产生 
    (4)CS        – 从设备使能信号,由主设备控制 
    其中CS是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),对此芯片的操作才有效。这就允许在同一总线上连接多个SPI设备成为可能。 
    接下来就负责通讯的3根线了。通讯是通过数据交换完成的,这里先要知道SPI是串行通讯协议,也就是说数据是一位一位的传输的。这就是SCK时钟线存在的原因,由SCK提供时钟脉冲,SDI,SDO则基于此脉冲完成数据传输。数据输出通过 SDO线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取。完成一位数据传输,输入也使用同样原理。这样,在至少8次时钟信号的改变(上沿和下沿为一次),就可以完成8位数据的传输。 
    要注意的是,SCK信号线只由主设备控制,从设备不能控制信号线。同样,在一个基于SPI的设备中,至少有一个主控设备。这样传输的特点:这样的传输方式有一个优点,与普通的串行通讯不同,普通的串行通讯一次连续传送至少8位数据,而SPI允许数据一位一位的传送,甚至允许暂停,因为SCK时钟线由主控设备控制,当没有时钟跳变时,从设备不采集或传送数据。也就是说,主设备通过对SCK时钟线的控制可以完成对通讯的控制。SPI还是一个数据交换协议:因为SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。不同的SPI设备的实现方式不尽相同,主要是数据改变和采集的时间不同,在时钟信号上沿或下沿采集有不同定义,具体请参考相关器件的文档。 
    在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。在多个从设备的系统中,每个从设备需要独立的使能信号,硬件上比I2C系统要稍微复杂一些。 
    最后,SPI接口的一个缺点:没有指定的流控制,没有应答机制确认是否接收到数据。 
    AT91RM9200的SPI接口主要由4个引脚构成:SPICLK、MOSI、MISO及 /SS,其中SPICLK是整个SPI总线的公用时钟,MOSI、MISO作为主机,从机的输入输出的标志,MOSI是主机的输出,从机的输入,MISO 是主机的输入,从机的输出。/SS是从机的标志管脚,在互相通信的两个SPI总线的器件,/SS管脚的电平低的是从机,相反/SS管脚的电平高的是主机。在一个SPI通信系统中,必须有主机。SPI总线可以配置成单主单从,单主多从,互为主从。SPI的片选可以扩充选择16个外设,这时PCS输出=NPCS,说NPCS0~3接4-16译码器,这个译码器是需要外接4-16译码器,译码器的输入为NPCS0~3,输出用于16个外设的选择。 
    SPI协议举例 
    SPI是一个环形总线结构,由ss(cs)、sck、sdi、sdo构成,其时序其实很简单,主要是在sck的控制下,两个双向移位寄存器进行数据交换。 
       假设下面的8位寄存器装的是待发送的数据10101010,上升沿发送、下降沿接收、高位先发送。 
       那么第一个上升沿来的时候 数据将会是sdo=1;寄存器=0101010x。下降沿到来的时候,sdi上的电平将所存到寄存器中去,那么这时寄存器=0101010sdi,这样在 8个时钟脉冲以后,两个寄存器的内容互相交换一次。这样就完成里一个spi时序。 
    举例: 
       假设主机和从机初始化就绪:并且主机的sbuff=0xaa,从机的sbuff=0x55,下面将分步对spi的8个时钟周期的数据情况演示一遍:假设上升沿发送数据 
    这样就完成了两个寄存器8位的交换,,sdi、sdo相对于主机而言的。其中ss引脚作为主机的时候,从机可以把它拉底被动选为从机,作为从机的是时候,可以作为片选脚用。根据以上分析,一个完整的传送周期是16位,即两个字节,因为,首先主机要发送命令过去,然后从机根据主机的命令准备数据,主机在下一个8位时钟周期才把数据读回来。 SPI 总线是Motorola公司推出的三线同步接口,同步串行3线方式进行通信:一条时钟线SCK,一条数据输入线OSI,一条数据输出线MISO;用于CPU与各种外围器件进行全双工、同步串行通讯。SPI主要特点有:可以同时发出和接收串行数据;可以当作主机或从机工作;提供频率可编程时钟;发送结束 中断标志;写冲突保护;总线竞争保护等。下图示出SPI总线工作的四种方式,其中使用的最为广泛的是SPI0和SPI3方式 (实线表示):                                       
    SPI总线四种工作方式 SPI 模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果 CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI主模块和与之通信的外设备时钟相位和极性应该一致。 
    SPI总线包括1根串行同步时钟信号线以及2根数据线。 
       SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI主模块和与之通信的外设音时钟相位和极性应该一致。 
    补充: 
    上文中最后一句话:SPI主模块和与之通信的外设备时钟相位和极性应该一致。个人理解这句话有2层意思:其一,主设备SPI时钟和极性的配置应该由外设来决定;其二,二者的配置应该保持一致,即主设备的SDO同从设备的SDO配置一致,主设备的SDI同从设备的SDI配置一致。因为主从设备是在SCLK的控制下,同时发送和接收数据,并通过2个双向移位寄存器来交换数据。 
    上升沿主机SDO发送数据1,同时从设备SDO发送数据0;紧接着在SCLK的下降沿的时候从设备的SDI接收到了主机发送过来的数据1,同时主机也接收到了从设备发送过来的数据0. 
    SPI协议心得 
    SPI接口时钟配置心得: 
    在主设备这边配置SPI接口时钟的时候一定要弄清楚从设备的时钟要求,因为主设备这边的时钟极性和相位都是以从设备为基准的。因此在时钟极性的配置上一定要搞清楚从设备是在时钟的上升沿还是下降沿接收数据,是在时钟的下降沿还是上升沿输出数据。但要注意的是,由于主设备的SDO连接从设备的SDI,从设备的SDO连接主设备的SDI,从设备SDI接收的数据是主设备的SDO发送过来的,主设备SDI接收的数据是从设备SDO发送过来的,所以主设备这边SPI时钟极性的配置(即SDO的配置)跟从设备的SDI接收数据的极性是相反的,跟从设备SDO发送数据的极性是相同的。下面这段话是Sychip Wlan8100 Module Spec上说的,充分说明了时钟极性是如何配置的: 
    The 81xx module will always input data bits at the rising edge of the clock, and the host will always output data bits on the falling edge of the clock. 
    意思是:主设备在时钟的下降沿发送数据,从设备在时钟的上升沿接收数据。因此主设备这边SPI时钟极性应该配置为下降沿有效。 
    又如,下面这段话是摘自LCD Driver IC SSD1289: 
    SDI is shifted into 8-bit shift register on every rising edge of SCK in the order of data bit 7, data bit 6 …… data bit 0. 
    意思是:从设备SSD1289在时钟的上升沿接收数据,而且是按照从高位到地位的顺序接收数据的。因此主设备的SPI时钟极性同样应该配置为下降沿有效。 
    时钟极性和相位配置正确后,数据才能够被准确的发送和接收。因此应该对照从设备的SPI接口时序或者Spec文档说明来正确配置主设备的时钟。 
    软件过程改进 
    SPI: Software Process Improvement. 软件过程改进。是软件企业项目过程质量的改进,CMM,ISO9000-3说的就是这个。 
    UART 
    开放分类: 计算机、通信、信息 
    UART: Universal Asynchronous Receiver/Transmitter,通用异步接收/发送装置,UART是一个并行输入成为串行输出的芯片,通常集成在主板上,多数是16550AFN芯片。因为计算机内部采用并行数据数据,不能直接把数据发到Modem,必须经过UART整理才能进行异步传输,其过程为:CPU先把准备写入串行设备的数据放到UART的寄存器(临时内存块)中,再通过FIFO(First Input First Output,先入先出队列)传送到串行设备,若是没有FIFO,信息将变得杂乱无章,不可能传送到Modem。 
    它是用于控制计算机与串行设备的芯片。有一点要注意的是,它提供了RS-232C数据终端设备接口,这样计算机就可以和调制解调器或其它使用RS-232C接口的串行设备通信了。作为接口的一部分,UART还提供以下功能:将由计算机内部传送过来的并行数据转换为输出的串行数据流。将计算机外部来的串行数据转换为字节,供计算机内部使用并行数据的器件使用。在输出的串行数据流中加入奇偶校验位,并对从外部接收的数据流进行奇偶校验。在输出数据流中加入启停标记,并从接收数据流中删除启停标记。处理由键盘或鼠标发出的中断信号(键盘和鼠标也是串行设备)。可以处理计算机与外部串行设备的同步管理问题。有一些比较高档的UART还提供输入输出数据的缓冲区,现在比较新的UART是16550,它可以在计算机需要处理数据前在其缓冲区内存储16字节数据,而通常的UART是8250。现在如果您购买一个内置的调制解调器,此调制解调器内部通常就会有16550 UART。

    区别在电气信号线上:

         SPI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI)。SPI总线可以实现 多个SPI设备互相连接。提供SPI串行时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。主从设备间可以实现全双工通信,当有多个从设备时,还可以增加一条从设备选择线。

         如果用通用IO口模拟SPI总线,必须要有一个输出口(SDO),一个输入口(SDI),另一个口则视实现的设备类型而定,如果要实现主从设备,则需输入输出口,若只实现主设备,则需输出口即可,若只实现从设备,则只需输入口即可。

         I2C总线是双向、两线(SCL、SDA)、串行、多主控(multi-master)接口标准,具有总线仲裁机制,非常适合在器件之间进行近距离、非经常性的数据通信。在它的协议体系中,传输数据时都会带上目的设备的设备地址,因此可以实现设备组网。

         如果用通用IO口模拟I2C总线,并实现双向传输,则需一个输入输出口(SDA),另外还需一个输出口(SCL)。(注:I2C资料了解得比较少,这里的描述可能很不完备)

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

         显然,如果用通用IO口模拟UART总线,则需一个输入口,一个输出口。

    从以上很明显可以看出,SPI和UART可以实现全双工,但I2C不行;

    第四,看看牛人们的意见吧!

         A:I2C线更少,我觉得比UART、SPI更为强大,但是技术上也更加麻烦些,因为I2C需要有双向IO的支持,而且使用上拉电阻,我觉得抗干扰能力较弱,一般用于同一板卡上芯片之间的通信,较少用于远距离通信。SPI实现要简单一些,UART需要固定的波特率,就是说两位数据的间隔要相等,而SPI则无所谓,因为它是有时钟的协议。

         B:I2C的速度比SPI慢一点,协议比SPI复杂一点,但是连线也比标准的SPI要少。

    -----------------------------------------------------------------------------------------------------------------------------------

    SPI 是一种允许一个主设备启动一个与从设备的同步通讯的协议,从而完成数据的交换。也就是SPI是一种规定好的通讯方式。这种通信方式的优点是占用端口较少,一般4根就够基本通讯了。同时传输速度也很高。一般来说要求主设备要有SPI控制器(但可用模拟方式),就可以与基于SPI的芯片通讯了。

        SPI 的通信原理很简单,它需要至少4根线,事实上3根也可以。也是所有基于SPI的设备共有的,它们是SDI(数据输入),SDO(数据输出),SCK(时 钟),CS(片选)。其中CS是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),对此芯片的操作才有效。这就允许 在同一总线上连接多个SPI设备成为可能。

         接下来就负责通讯的3根线了。通讯是通过数据交换完成的,这里先要知道SPI是串行通讯协议,也就是说数据是一位一位的传输的。这就是SCK时钟线存在的原 因,由SCK提供时钟脉冲,SDI,SDO则基于此脉冲完成数据传输。数据输出通过SDO线,数据在时钟上沿或下沿时改变,在紧接着的下沿或上沿被读取。 完成一位数据传输,输入也使用同样原理。这样,在至少8次时钟信号的改变(上沿和下沿为一次),就可以完成8位数据的传输。

         要注意的是,SCK信号线只由主设备控制,从设备不能控制信号线。同样,在一个基于SPI的设备中,至少有一个主控设备。

         这样传输的特点:这样的传输方式有一个优点,与普通的串行通讯不同,普通的串行通讯一次连续传送至少8位数据,而SPI允许数据一位一位的传送,甚至允许暂停,因为SCK时钟线由主控设备控制,当没有时钟跳变时,从设备不采集或传送数据。也就是说,主设备通过对SCK时钟线的控制可以完成对通讯的控制。

         SPI还是一个数据交换协议:因为SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。

         不同的SPI设备的实现方式不尽相同,主要是数据改变和采集的时间不同,在时钟信号上沿或下沿采集有不同定义,具体请参考相关器件的文档。

    I2C

    ? 只要求两条总线线路:一条串行数据线SDA 一条串行时钟线SCL

    ? 每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机从机关系软件设定地址主机可以作为主机发送器或主机接收器

    ? 它是一个真正的多主机总线如果两个或更多主机同时初始化数据传输可以通过冲突检测和仲裁,防止数据被破坏

    ? 串行的8 位双向数据传输位速率在标准模式下可达100kbit/s 快速模式下可达400kbit/s 高速模式下可达3.4Mbit/s

    ? 片上的滤波器可以滤去总线数据线上的毛刺波保证数据完整

    ? 连接到相同总线的IC 数量只受到总线的最大电容400pF 限制

    UART

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

         显然,如果用通用IO口模拟UART总线,则需一个输入口,一个输出口。

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

    明显可以看出,SPI和UART可以实现全双工,但I2C不行。

    -----------------------------------------------------------------------------------------------------------------------------------

    什么是CAN总线?

    ===========================

    CAN 全称为Controller Area Network,即控制器局域网,由德国Bosch 公司最先提出,是国际上应用最广泛的现场总线之一。CAN 是一种多主方式的串行通讯总线,基本设计规范要求有高的位速率、高抗电磁干扰性,而且要能够检测出总线的任何错误。当信号传输距离达10Km 时CAN 仍可提供高达50Kbit/s 的数据传输速率。CAN 具有十分优越的特点:

    A、较低的成本与极高的总线利用率;

    B、 数据传输距离可长达10Km,传输速率可高达1Mbit/s;

    C、可靠的错误处理和检错机制,发送的信息遭到破坏后可自动重发;

    D、节点在错误严重的情况下具有自动退出总线的功能;

    E、报文不包含源地址或目标地址仅用标志符来指示功能信息和优先级信息;

    由于人为、自然、其它外界环境的影响和人们对公交系统的安全可靠性、真实、实时性的追求,使得我们对通信方式,通信设备有了更高的要求,基于CAN总线的网络则成为我们最佳的选择

    --------------------------------------------------------------------------------------------------------

    CAN总线

    现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。CAN(Controller Area Network)属于现场总线的范畴,它是一种有效支持分布式控制或实时控制的串行通信网络。较之目前许多RS-485基于R线构建的分布式控制系统而言, 基于CAN总线的分布式控制系统在以下方面具有明显的优越性:

        首先,CAN控制器工作于多主方式,网络中的各节点都可根据总线访问优先权(取决于报文标识符)采用无损结构的逐位仲裁的方式竞争向总线发送数据,且CAN协议废除了站地址编码,而代之以对通信数据进行编码,这可使不同的节点同时接收到相同的数据,这些特点使得CAN总线构成的网络各节点之间的数据通信实时性强,并且容易构成冗余结构,提高系统的可靠性和系统的灵活性。而利用RS-485只能构成主从式结构系统,通信方式也只能以主站轮询的方式进行,系统的实时性、可靠性较差;

        其次,CAN总线通过CAN控制器接口芯片82C250的两个输出端CANH和CANL与物理总线相连,而CANH端的状态只能是高电平或悬浮状态,CANL端只能是低电平或悬浮状态。这就保证不会出现象在RS-485网络中,当系统有错误,出现多节点同时向总线发送数据时,导致总线呈现短路,从而损坏某些节点的现象。而且CAN节点在错误严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响,从而保证不会出现象在网络中,因个别节点出现问题,使得总线处于“死锁”状态。

        而且,CAN具有的完善的通信协议可由CAN控制器芯片及其接口芯片来实现,从而大大降低系统开发难度,缩短了开发周期,这些是只仅仅有电气协议的RS-485所无法比拟的。另外,与其它现场总线比较而言,CAN总线是具有通信速率高、容易实现、且性价比高等诸多特点的一种已形成国际标准的现场总线。这些也是目前 CAN总线应用于众多领域,具有强劲的市场竞争力的重要原因。

        CAN (Controller Area Network)即控制器局域网络,属于工业现场总线的范畴。与一般的通信总线相比,CAN总线的数据通信具有突出的可靠性、实时性和灵活性。由于其良好的性能及独特的设计,CAN总线越来越受到人们的重视。它在汽车领域上的应用是最广泛的,世界上一些著名的汽车制造厂商,如BENZ(奔驰)、BMW(宝马)、PORSCHE(保时捷)、ROLLS-ROYCE(劳斯莱斯)和JAGUAR(美洲豹)等都采用了CAN总线来实现汽车内部控制系统与各检测和执行机构间的数据通信。同时,由于CAN总线本身的特点,其应用范围目前已不再局限于汽车行业,而向自动控制、航空航天、航海、过程工业、机械工业、纺织机械、农用机械、机器人、数控机床、医疗器械及传感器等领域发展。CAN已经形成国际标准,并已被公认为几种最有前途的现场总线之一。其典型的应用协议有: SAE J1939/ISO11783、CANOpen、CANaerospace、DeviceNet、NMEA 2000等。

    什么是CAN总线?

    CAN意为Controller Area Network的缩写,意为控制区域网络。是国际上流行的现场总线中的一种。是一种特别适合于组建互连的设备网络系统或子系统。

    2. CAN总线特点?

    l CAN是到目前为止为数不多的有国际标准的现场总线

    l CAN通讯距离最大是10公里(设速率为5Kbps),或最大通信速率为1Mbps(设通信距离为40米)。

    CAN总线上的节点数可达110个。通信介质可在双绞线,同轴电缆,光纤中选择。

         CAN采用非破坏性的总线仲裁技术,当多个节点同时发送数据时,优先级低的节点会主动退出发送,高优先级的节点可继续发送,节省总线仲裁时间。

         CAN是多主方式工作,网上的任一节点均可在任意时刻主动地向网络上其他节点发送信息。

    CAN采用报文识别符识别网络上的节点,从而把节点分成不同的优先级,高优先级的节点享有传送报文的优先权。

    报文是短帧结构,短的传送时间使其受干扰概率低,CAN有很好的效验机制,这些都保证了CAN通信的可靠性。

    -----------------------------------------------------------------------------------------------------------------------------------

    SPI通常有SCK时钟,STB片选,DATA数据信号三个信号。 I2C通常有 SDA数据和SCL时钟两个信号。

    SPI:Motorola推出的同步串行通讯方式,三线同步总线,硬件强大,软件相对简单,cpu有更多时间处理其他事务。SCK时钟,STB片选,DATA数据信号三信号。多了一个片选信号

    I2C:PHilips推出的串行总线,一根SDA串行数据线,一根串行时钟线SCL。按照地址来计算的

    -----------------------------------------------------------------------------------------------------------------------------------

    UART

    Universival Asychronous Receiver/Transmitter(通用异步串行口),UART是一种较为通用的数据传输的方法(即Start Bit+Data+Check+StopBit),而COM口中Rx、Tx的数据格式即为UART。UART和RS232是两种异步数据传输标准.计算机中的COM1和COM2都是RS232串行通信标准接口。当Uart接口连到PC机上时,需要接RS232电平转换电路。

    UART使用发送数据线TXD和接收数据线RXD来传送数据,接收和发送可以单独进行也可以同时进行。它传送数据的格式有严格的规定,每个数据以相同的位串形式传送,每个串行数据由起始位,数据位,奇偶校验位和停止位组成。从起始位到停止位结束的时间称为一帧(frame),即一个字符的完整通信格式。

    SPI

    Serial Perheral Interface,是一种全双工同步串行接口标准,串行通信的双方用四根线进行通信,这四根连线分别是:片选信号,I/O时钟,串行输入,串行输出,这种接口的特点是快速,高效,并且操作起来比I2C要简单一些,接线也比较简单,TLC2543提供SPI接口。

    I2C

    Inter-Integrated Circuit(集成电路之间), I2C总线是一种由PHILIPS公司开发的两线式双向串行总线,用于连接微控制器及其外围设备。I2C总线产生于在80年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。例如管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能状态,如电源和系统风扇。可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的安全性,方便了管理。I2C属于两线式串行总线,它由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送,最高传送速率100kbps。各种被控制电路均并联在这条总线上,但就像电话机一样只有拨通各自的号码才能工作,所以每个电路和模块都有唯一的地址,在信息的传输过程中,IC2总线上并接的每一模块电路既是主控器(或被控器),又是发送器(或接收器),这取决于它所要完成的功能。CPU发出的控制信号分为地址码和控制量两部分,地址码用来选址,即接通需要控制的电路,确定控制的种类;控制量决定该调整的类别(如对比度、亮度等)及需要调整的量。这样,各控制电路虽然挂在同一条总线上,却彼此独立,互不相关。

    CAN

    Controller Area Network(区域网络控制器),CAN 全称为Controller Area Network,即控制器局域网,由德国Bosch 公司最先提出,是国际上应用最广泛的现场总线之一。CAN 是一种多主方式的串行通讯总线,基本设计规范要求有高的位速率、高抗电磁干扰性,而且要能够检测出总线的任何错误。当信号传输距离达10Km 时CAN 仍可提供高达50Kbit/s 的数据传输速率。现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。CAN属于现场总线的范畴,它是一种有效支持分布式控制或实时控制的串行通信网络。较之目前许多RS-485基于R线构建的分布式控制系统而言, 基于CAN总线的分布式控制系统具有明显的优越性。


    第一,名称
    spi(serial peripheral interface:串行外设接口);
    i2c(inter ic bus:意为ic之间总线)
    uart(universal asynchronous receiver transmitter:通用异步收发器)
    第二,区别在电气信号线上:
    spi总线由三条信号线组成:串行时钟(sclk)、串行数据输出(sdo)、串行数据输入(sdi)。spi总线可以实现 多个spi设备互相连接。提供spi串行时钟的spi设备为spi主机或主设备(master),其他设备为spi从机或从设备(slave)。主从设备间可以实现全双工通信,当有多个从设备时,还可以增加一条从设备选择线。
    如果用通用io口模拟spi总线,必须要有一个输出口(sdo),一个输入口(sdi),另一个口则视实现的设备类型而定,如果要实现主从设备,则需输入输出口,若只实现主设备,则需输出口即可,若只实现从设备,则只需输入口即可。
    i2c总线是双向、两线(scl、sda)、串行、多主控(multi-master)接口标准,具有总线仲裁机制,非常适合在器件之间进行近距离、非经常性的数据通信。在它的协议体系中,传输数据时都会带上目的设备的设备地址,因此可以实现设备组网。
    如果用通用io口模拟i2c总线,并实现双向传输,则需一个输入口(sda),另外还需一个输出口(scl)。(注:i2c资料了解得比较少,这里的描述可能很不完备)
    uart总线是异步串口,因此一般比前两种同步串口的结构要复杂很多,一般由波特率产生器(产生的波特率等于传输波特率的16倍)、uart接收器、uart发送器组成,硬件上由两根线,一根用于发送,一根用于接收。
    显然,如果用通用io口模拟uart总线,则需一个输入口,一个输出口。
    第三,从第二点明显可以看出,spi和uart可以实现全双工,但i2c不行;
    第四,看看牛人们的意见吧!
    i2c线更少,我觉得比uart、spi更为强大,但是技术上也更加麻烦些,因为i2c需要有双向io的支持,而且使用上拉电阻,我觉得抗干扰能力较弱,一般用于同一板卡上芯片之间的通信,较少用于远距离通信。spi实现要简单一些,uart需要固定的波特率,就是说两位数据的间隔要相等,而spi则无所谓,因为它是有时钟的协议。
    i2c的速度比spi慢一点,协议比spi复杂一点,但是连线也比标准的spi要少
    展开全文
  • uart,spi,i2c总线区别

    2016-06-14 22:50:32
    uart,spi,i2c总线区别  I2C数据输入输出用根线,SPI则... 所以系统内部通信可用I2C,若要与外部通信则最好用SPI带隔离(可以提高抗干扰能力)。但是I2C和SPI都不适合长距离传输。长距离时就要用485 了

    uart,spi,i2c总线的区别 

    I2C的数据输入输出用的是一根线,SPI则分为dataIN和 dataOUT。由于这个原因,采用I2CCPU的端口占用少,SPI多一根。但是由于I2C的数据线是双向的,所以隔离比较复杂,SPI则比较容易。 所以系统内部通信可用I2C,若要与外部通信则最好用SPI带隔离(可以提高抗干扰能力)。但是I2CSPI都不适合长距离传输。长距离时就要用485 了。

    第一:

    SPI(Serial Peripheral Interface:串行外设接口);

    I2C(INTER IC BUS)

    UART(Universal Asynchronous Receiver Transmitter:通用异步收发器)

    第二,区别在电气信号线上:

    SPI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI)SPI总线可以实现多个SPI设备互相连接。提供 SPI串行时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。主从设备间可以实现全双工通信,当有多 个从设备时,还可以增加一条从设备选择线。

    如果用通用IO口模拟SPI总线,必须要有一个输出口(SDO),一个输入口(SDI),另一个口则视实现的设备类型而定,如果要实现主从设备,则需输入输出口,若只实现主设备,则需输出口即可,若只实现从设备,则只需输入口即可。

    I2C总线是双向、两线(SCLSDA)、串行、多主控(multi-master)接口标准,具有总线仲裁机制,非常适合在器件之间进行近距离、非经 常性的数据通信。在它的协议体系中,传输数据时都会带上目的设备的设备地址,因此可以实现设备组网。

    如果用通用IO口模拟I2C总线,并实现双向传输,则需一个输入输出口(SDA),另外还需一个输出口(SCL)。(注:I2C资料了解得比较少,这里的描述可能很不完备)

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

    显然,如果用通用IO口模拟UART总线,则需一个输入口,一个输出口。

    第三,从第二点明显可以看出,SPIUART可以实现全双工,但I2C不行;

    个人认为:

    I2C线更少,我觉得比UARTSPI更为强大,但是技术上也更加麻烦些,因为I2C需要有双向IO的支持,而且使用上拉电阻,我觉得抗干扰能力较弱, 一般用于同一板卡上芯片之间的通信,较少用于远距离通信。SPI实现要简单一些,UART需要固定的波特率,就是说两位数据的间隔要相等,而SPI则无所 谓,因为它是有时钟的协议。

    I2C的速度比SPI慢一点,协议比SPI复杂一点,但是连线也比标准的SPI要少。

    SPI总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。外围设置FLASHRAM、网络控制器、LCD显示驱动器、A/D转换器和MCU等。SPI总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一般使用4条线:串行时钟线(SCK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOST和低电平有效的从机选择线SS(有的SPI接口芯片带有中断信号线INTINT、有的SPI接口芯片没有主机输出/从机输入数据线MOSI)

    SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是SDI(数据输入),SDO(数据输出),SCK(时钟),CS(片选)。

    1SDO     – 主设备数据输出,从设备数据输入

    2SDI    – 主设备数据输入,从设备数据输出

    3SCLK – 时钟信号,由主设备产生

    4CS        – 从设备使能信号,由主设备控制

    其中CS是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),对此芯片的操作才有效。这就允许在同一总线上连接多个SPI设备成为可能。

    接下来就负责通讯的3根线了。通讯是通过数据交换完成的,这里先要知道SPI是串行通讯协议,也就是说数据是一位一位的传输的。这就是SCK时钟线存在的原因,由SCK提供时钟脉冲,SDISDO则基于此脉冲完成数据传输。数据输出通过 SDO线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取。完成一位数据传输,输入也使用同样原理。这样,在至少8次时钟信号的改变(上沿和下沿为一次),就可以完成8位数据的传输。 

    要注意的是,SCK信号线只由主设备控制,从设备不能控制信号线。同样,在一个基于SPI的设备中,至少有一个主控设备。这样传输的特点:这样的传输方式有一个优点,与普通的串行通讯不同,普通的串行通讯一次连续传送至少8位数据,而SPI允许数据一位一位的传送,甚至允许暂停,因为SCK时钟线由主控设备控制,当没有时钟跳变时,从设备不采集或传送数据。也就是说,主设备通过对SCK时钟线的控制可以完成对通讯的控制。SPI还是一个数据交换协议:因为SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。不同的SPI设备的实现方式不尽相同,主要是数据改变和采集的时间不同,在时钟信号上沿或下沿采集有不同定义,具体请参考相关器件的文档。

    在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。在多个从设备的系统中,每个从设备需要独立的使能信号,硬件上比I2C系统要稍微复杂一些。

    最后,SPI接口的一个缺点:没有指定的流控制,没有应答机制确认是否接收到数据。

    AT91RM9200SPI接口主要由4个引脚构成:SPICLKMOSIMISO及 /SS,其中SPICLK是整个SPI总线的公用时钟,MOSIMISO作为主机,从机的输入输出的标志,MOSI是主机的输出,从机的输入,MISO 是主机的输入,从机的输出。/SS是从机的标志管脚,在互相通信的两个SPI总线的器件,/SS管脚的电平低的是从机,相反/SS管脚的电平高的是主机。在一个SPI通信系统中,必须有主机。SPI总线可以配置成单主单从,单主多从,互为主从。

    SPI的片选可以扩充选择16个外设,这时PCS输出=NPCS,NPCS0~34-16译码器,这个译码器是需要外接4-16译码器,译码器的输入为NPCS0~3,输出用于16个外设的选择。

    SPI协议举例

    SPI是一个环形总线结构,由sscs)、scksdisdo构成,其时序其实很简单,主要是在sck的控制下,两个双向移位寄存器进行数据交换。

    假设下面的8位寄存器装的是待发送的数据10101010,上升沿发送、下降沿接收、高位先发送。

    那么第一个上升沿来的时候 数据将会是sdo=1;寄存器=0101010x。下降沿到来的时候,sdi上的电平将所存到寄存器中去,那么这时寄存器=0101010sdi,这样在 8个时钟脉冲以后,两个寄存器的内容互相交换一次。这样就完成里一个spi时序。

    举例:

    假设主机和从机初始化就绪:并且主机的sbuff=0xaa,从机的sbuff=0x55,下面将分步对spi8个时钟周期的数据情况演示一遍:假设上升沿发送数据 

    这样就完成了两个寄存器8位的交换,,sdisdo相对于主机而言的。其中ss引脚作为主机的时候,从机可以把它拉底被动选为从机,作为从机的是时候,可以作为片选脚用。根据以上分析,一个完整的传送周期是16位,即两个字节,因为,首先主机要发送命令过去,然后从机根据主机的命令准备数据,主机在下一个8位时钟周期才把数据读回来。 SPI 总线是Motorola公司推出的三线同步接口,同步串行3线方式进行通信:一条时钟线SCK,一条数据输入线OSI,一条数据输出线MISO;用于CPU与各种外围器件进行全双工、同步串行通讯。SPI主要特点有:可以同时发出和接收串行数据;可以当作主机或从机工作;提供频率可编程时钟;发送结束 中断标志;写冲突保护;总线竞争保护等。下图示出SPI总线工作的四种方式,其中使用的最为广泛的是SPI0SPI3方式 (实线表示):                                       

    SPI总线四种工作方式 SPI 模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果 CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI主模块和与之通信的外设备时钟相位和极性应该一致。

    SPI总线包括1根串行同步时钟信号线以及2根数据线。

    SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI主模块和与之通信的外设音时钟相位和极性应该一致。

    补充: 

    上文中最后一句话:SPI主模块和与之通信的外设备时钟相位和极性应该一致。个人理解这句话有2层意思:其一,主设备SPI时钟和极性的配置应该由外设来决定;其二,二者的配置应该保持一致,即主设备的SDO同从设备的SDO配置一致,主设备的SDI同从设备的SDI配置一致。因为主从设备是在SCLK的控制下,同时发送和接收数据,并通过2个双向移位寄存器来交换数据。

    上升沿主机SDO发送数据1,同时从设备SDO发送数据0;紧接着在SCLK的下降沿的时候从设备的SDI接收到了主机发送过来的数据1,同时主机也接收到了从设备发送过来的数据0.

    SPI协议心得

    SPI接口时钟配置心得:

    在主设备这边配置SPI接口时钟的时候一定要弄清楚从设备的时钟要求,因为主设备这边的时钟极性和相位都是以从设备为基准的。因此在时钟极性的配置上一定要搞清楚从设备是在时钟的上升沿还是下降沿接收数据,是在时钟的下降沿还是上升沿输出数据。但要注意的是,由于主设备的SDO连接从设备的SDI,从设备的SDO连接主设备的SDI,从设备SDI接收的数据是主设备的SDO发送过来的,主设备SDI接收的数据是从设备SDO发送过来的,所以主设备这边SPI时钟极性的配置(即SDO的配置)跟从设备的SDI接收数据的极性是相反的,跟从设备SDO发送数据的极性是相同的。下面这段话是Sychip Wlan8100 Module Spec上说的,充分说明了时钟极性是如何配置的:

    The 81xx module will always input data bits at the rising edge of the clock, and the host will always output data bits on the falling edge of the clock.

    意思是:主设备在时钟的下降沿发送数据,从设备在时钟的上升沿接收数据。因此主设备这边SPI时钟极性应该配置为下降沿有效。

    又如,下面这段话是摘自LCD Driver IC SSD1289

    SDI is shifted into 8-bit shift register on every rising edge of SCK in the order of data bit 7, data bit 6 …… data bit 0.

    意思是:从设备SSD1289在时钟的上升沿接收数据,而且是按照从高位到地位的顺序接收数据的。因此主设备的SPI时钟极性同样应该配置为下降沿有效。

    时钟极性和相位配置正确后,数据才能够被准确的发送和接收。因此应该对照从设备的SPI接口时序或者Spec文档说明来正确配置主设备的时钟。

    软件过程改进

    SPI: Software Process Improvement. 软件过程改进。是软件企业项目过程质量的改进,CMMISO90003说的就是这个。

    UART 

    开放分类: 计算机、通信、信息

    UART: Universal Asynchronous Receiver/Transmitter,通用异步接收/发送装置,UART是一个并行输入成为串行输出的芯片,通常集成在主板上,多数是16550AFN芯片。因为计算机内部采用并行数据数据,不能直接把数据发到Modem,必须经过UART整理才能进行异步传输,其过程为:CPU先把准备写入串行设备的数据放到UART的寄存器(临时内存块)中,再通过FIFOFirst Input First Output,先入先出队列)传送到串行设备,若是没有FIFO,信息将变得杂乱无章,不可能传送到Modem

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

    展开全文
  • uart,spi,i2c, can 总线区别

    千次阅读 2013-05-06 14:18:29
    I2C数据输入输出用根线,SPI则分为data...所以系统内部通信可用I2C,若要与外部通信则最好用SPI带隔离(可以提高抗干扰能力)。但是I2C和SPI都不适合长距离传输。长距离时就要用485了。 第:  SPI(Serial
  • SPI和I2C区别

    2012-12-27 15:24:54
    I2C数据输入输出用根线,SPI则分为dataIN...所以系统内部通信可用I2C,若要与外部通信则最好用SPI带隔离(可以提高抗干扰能力)。但是I2C和SPI都不适合长距离传输。长距离时就要用485了。  SPI,是英语Seria
  • uart,spi,i2c总线区别

    2011-04-27 15:38:00
    所以系统内部通信可用I2C,若要与外部通信则最好用SPI带隔离(可以提高抗干扰能力)。但是I2C和SPI都不适合长距离传输。长距离时就要用485 了。 第: SPI(Serial Peripheral Interface:串行外设接口);...
  • 文中从PCBLAYOUT角度,提供了一些处理技巧,对提高射频电路的抗干扰能力有较大用处。、RF布局这里讨论主要是多层板元器件位置布局。元器件位置布局关键是固定位于RF路径上元器件,通过调整其方向,...
  • IIC与SPI区别

    2018-09-12 09:24:11
    uart,spi,i2c总线区别 I2C数据输入输出用根线,SPI则分为... 所以系统内部通信可用I2C,若要与外部通信则最好用SPI带隔离(可以提高抗干扰能力)。但是I2C和SPI都不适合长距离传输。长距离时就要用485 了。
  • 却有着严格的要求,这是数字电路的一个特点。 2 系统的总体设计: 2.1 原理设计 本频率计的设计以AT89S52 单片机为核心,利用它内部的定时/计数器完成 待测信号周期/频率的测量。单片机AT89S52 内部具有2 个16 位...
  • SPI与IIC

    2016-03-07 22:18:00
    SPI,IIc总线区别IIC数据输入输出用根线,SPI则分为data ... 所以系统内部通信可用IIC,若要与外部通信则最好用SPI带隔离(可以提高抗干扰能力)。但是IIC和SPI都不适合长距离传输。第:SPI(Serial Perip...
  • 布线规则.txt

    2019-05-23 10:11:36
    一般数字电路的抗干扰能力比较强,例如TTL 电路噪声容限为0.4~0.6V,CMOS 电路噪声容限为电源电压0.3~0.45 倍,而模拟电路只要有很小噪声就足以使其工作不正常,所以这两类电路应该分开布局布线。...
  • c语言编写单片机技巧

    2009-04-19 12:15:17
    因此,使用C语言进行程序设计已成为软件开发的一个主流。用C语言来编写目标系统软件,会大大缩短开发周期,且明显地增加软件的可读性,便于改进和扩充,从而研制出规模更大、性能更完备的系统。 综上所述,用...
  • 关于ds18b20程序

    2009-05-05 18:01:55
    //12M,次6us,加进入退出14us(8M晶振,次9us) } /******************************************************** * DS18B20初始化 * ********************************************************/ bit Ds18b20_...

空空如也

空空如也

1 2
收藏数 27
精华内容 10
关键字:

抗干扰能力最好的一个是