精华内容
下载资源
问答
  • 图1是由运放阻容等元件组成的V/I变换电路,能将0—5V的直流电压信号线性地转换成0-10mA的电流信号,A1是比较器.A3是电压跟随器,构成负反馈回路,输入电压Vi与反馈电压Vf比较,在比较器A1的输出端得到输出电压VL...

    下面我将给大家介绍6种常用的V-I、I-V转换电路

    1、 0-5V/0-10mA的V/I变换电路

    图1是由运放和阻容等元件组成的V/I变换电路,能将0—5V的直流电压信号线性地转换成0-10mA的电流信号,A1是比较器.A3是电压跟随器,构成负反馈回路,输入电压Vi与反馈电压Vf比较,在比较器A1的输出端得到输出电压VL,V1控制运放A1的输出电压V2,从而改变晶体管T1的输出电流IL而输出电流IL又影响反馈电压Vf,达到跟踪输入电压Vi的目的。输出电流IL的大小可通过下式计算:IL=Vf/(Rw+R7),由于负反馈的作用使Vi=Vf,因此IL=Vi/(Rw+R7),当Rw+R7取值为500Ω时,可实现0-5V/0-10mA的V/I转换,如果所选用器件的性能参数比较稳定,运故A1、A2的放大倍数较大,那么这种电路的转换精度,一般能够达到较高的要求。
    在这里插入图片描述

    2.带负反馈的电压-电流转换电路

    电压/电流转换即V/I转换,是将输入的电压信号转换成满足一定关系的电流信号,转换后的电流相当一个输出可调的恒流源,其输出电流应能够保持稳定而不会随负载的变化而变化。V/I转换原理如图2。
    在这里插入图片描述
    由图1可见,电路中的主要元件为一运算放大器LM324和三极管BG9013及其他辅助元件构成,V0为偏置电压,Vin为输入电压即待转换电压,R为负载电阻。其中运算放大器起比较器作用,将正相端电压输入信号与反相端电压V-进行比较,经运算放大器放大后再经三极管放大,BG9013的射级电流Ie作用在电位器Rw上,由运放性质可知:

    V-=Ie·Rw=(1+k)Ib·Rw

    (k为BG9013的放大倍数)

    流经负荷R的电流Io即BG9013的集电极电流等于k·Ib。令R1=R2,则有

    V0+Vm=V+=V-=(1+k)Ib·Rw=(1+1/k)Io·Rw

    其中k>>1,所以Io≈(Vo+Vin)/Rw。
      
      由上述分析可见,输出电流Io的大小在偏置电压和反馈电阻Rw为定值时,与输入电压Vin成正比,而与负载电阻R的大小无关说明了电路良好的恒流性能。改变V0的大小,可在Vin=0时改变Io的输出。在V0一定时改变Rw的大小,可以改变Vin与Io的比例关系。由Io≈(V0+Vi)/Rw关系式也可以看出,当确定了Vin和Io之间的比例关系后,即可方便地确定偏置电压V0和反馈电阻Rw。例如将0~5V电压转换成0~5mA的电流信号,可令V0=0,Rw=1kΩ,其中Vo=0相当于将其直接接地。若将0~5V电压信号转换成1~5mA电流信号,则可确定V0=1.25V,Rw=1.25kΩ。同样若将4~20mA电流信号转换成1~5mA电流信号,只需先将4~20mA转换成电压即可按上述关系确定V0和Rw的参数大小,其他转换可依次类推。

    为了使输入输出获得良好的线性对应关系,要特别注意元器件的选择,如输入电阻R1、R2及反馈电阻Rw,要选用低温漂的精密电阻或精密电位器,元件要经过测量后再焊接,并经过仔细调试以获得的性能。我们在多次实际应用中测试,上述转换电路的非线性失真一般小于0.03%,转换精度符合要求。

    展开全文
  • 版本:V1.53.1.6类型:MOBA跑酷大小:1.81 GB评分:9.2标签:moba腾讯游戏塔防竞技游戏角色扮演联机对战立即下载王者荣耀安卓苹果可以建立亲密关系吗?在王者荣耀s21赛季上线以后,安卓苹果就可以互相加好友了。...

    c7cb064440ef820cbd52dd80a3a723ec.png

    版本:V1.53.1.6

    类型:MOBA跑酷大小:1.81 GB评分:9.2

    标签:

    moba

    腾讯游戏

    塔防

    竞技游戏

    角色扮演

    联机对战

    立即下载

    王者荣耀安卓和苹果可以建立亲密关系吗?在王者荣耀s21赛季上线以后,安卓和苹果就可以互相加好友了。玩家们最关心的就是能不能挂关系。那么到底能够挂吗,下面小编就来给大家介绍一下吧。

    202ea4ff63b667abbf8dcd65d2610793.png

    王者荣耀安卓和苹果可以建立亲密关系吗?

    1.已确定安卓和苹果系统可以互加好友了,但微信和QQ还是不能加的(也不能一起玩),举个例子安卓微信区,可以加苹果微信区的好友,但不能加苹果QQ区的好友。

    2.安卓和苹果玩家可以互相赠送金币,赠送后是可以增加亲密度的,送金币一次能加2点亲密度,不过一个好友一天只能送一次。

    3.安卓和苹果玩家不能互送花,也就是想靠花直接刷亲密度是没办法了,这个不确定是bug还是限制,如果不能靠花送亲密度,那就只能靠:

    送金币:2点亲密度

    一起匹配:3点亲密度

    一起排位:6点亲密度

    用cp英雄一起玩:额外增加3点亲密度(比如cp英雄排位,就是3+6=9点)

    上面和送花加一起一周同个好友最好只能提升140点亲密度,如果想再加亲密度就只能靠送皮肤了,一个皮肤加10点亲密度,超过上限也能增加。

    目前还不能确定到底是否能建立亲密关系,但既然有亲密度,大概率是可以挂关系的,只是苹果安卓的关系比较难刷,送花不行基本只能靠对局刷,100亲密度就是一级关系,今天肯定会有玩家试人机刷亲密度,晚上就可以确定关系能否挂了。

    2020年亲密度等级有过调整,以前亲密度是有最高上限的只能到9999点,现在从2000(四级亲密)开始,每多1000亲密就增加一级,玩家可以无限刷亲密,之前四级的亲密要求100、600、1200和2000是没有变化的,1级没有特殊图标,2级600点亲密度开始才会展示亲密关系图标,当然这种是可以隐藏的。安卓苹果互加好友功能上线后,像恋人这种关系别人当然是可以查看到的,所以不可能安卓、苹果分别处对象了!

    除了好友方面的改动,还有战队改动,s21赛季更新后安卓和苹果玩家也可以加入同一个战队了。

    总而言之王者荣耀安卓和苹果现在不确定能不能建立亲密关系,但是可以肯定的是可以挂关系。

    以上就是找游戏网小编分享给大家的"王者荣耀安卓和苹果能不能建立亲密关系"的解答,希望能够帮助到大家。

    展开全文
  • 4、 千湖万绿配置好各自小区配置后,千湖小区需要添加邻接小区信息配置,并且添加邻接关系表。(注意事项,邻接小区信息配置一定要对端基站的小区信息完全一致) 千湖小区信息 万绿小区信息 千湖添加邻接小区...

    目的:实现千湖小区到万绿小区的切换。
    1、 千湖mme需要添加到万绿小区的mme地址解析。
    在这里插入图片描述
    2、 千湖小区需要添加到万绿小区mme的路由。(直接使用缺省路由缩短配置时间)
    在这里插入图片描述
    3、 路由都是双向的,因此万绿小区也要添加到千湖小区mme的路由。(下图错误:优先级应该为1)
    在这里插入图片描述
    4、 千湖和万绿配置好各自小区配置后,千湖小区需要添加邻接小区信息配置,并且添加邻接关系表。(注意事项,邻接小区信息配置一定要和对端基站的小区信息完全一致)
    千湖小区信息
    在这里插入图片描述
    万绿小区信息
    在这里插入图片描述
    千湖添加邻接小区信息配置
    在这里插入图片描述
    千湖添加邻接关系表
    在这里插入图片描述

    Q1–>W1的切换配置完成。

    展开全文
  • 详细介绍GPIO、I2C、SPI通讯原理以及物理层原理

    千次阅读 多人点赞 2021-08-26 10:03:20
    针对GPIO、I2C、SPI的讲解,对这些通讯方式有个大致框架,对日后的开发会有帮助,了解因为所以然。 一. GPIO 1. 什么是GPIO? GPIO全拼叫General Purpose Input Output(通用输入输出)简称IO口也叫总线扩展器,...

    目录

    一. GPIO

    1. 什么是GPIO?

    2. GPIO组成原理

    3. GPIO工作原理

    二. I2C

    1. 什么是I2C?

    2. I2C组成原理

    3. I2C的特性

    4. I2C的通讯模式

    5. I2C的通讯过程

    6. I2C接口工作模式

    7. 硬件拉高拉低的过程

    8. 一对多

    9. 开发流程

    三. SPI

    1. 什么是SPI?

    2. SPI优与缺点

    3. SPI组成原理

    4. SPI通讯模式

    5. 通讯过程


    前言 

    针对GPIO、I2C、SPI的讲解,对这些通讯方式有个大致框架,对日后的开发会有帮助,了解因为所以然。

    一. GPIO

    1. 什么是GPIO?

    GPIO全拼叫General Purpose Input Output(通用输入输出)简称IO口也叫总线扩展器,GPIO口是由引脚,功能寄存器组成,不同的架构中的GPIO封装不同,所使用的引脚数与寄存器数不同,具体可以参考芯片手册里的GPIO篇。

    GPIO的作用是用来控制连接在此GPIO口上的外设,我们一般通过观察原理图找到当前板子的GPIO口引出在哪个口上或者排针上,我们把我们的外设接到上面去就可以通过GPIO与这个外设进行交互控制,在驱动层我们通过读写GPIO口中的功能寄存器来改变连接在此GPIO上的外设状态。

     
    

    2. GPIO组成原理

    GPIO原理图如下:

    取自STM32F7系列,不同架构的GPIO口封装不同,这里仅用于当前示例

    从上面原理图可以看出STM32F7系列GPIO是由三个寄存器以及“TTL肖特基触发器、二极管、P-MOS管和N-MOS管”组成

    3. GPIO工作原理

    电子器件的作用:

    器件名

    作用

    输出数据寄存器此寄存器的值会通过输出驱动器输出,其中指定位用于决定使用P-MOS还是N-MOS,有些位表示输出高低电平,如寄存器是4位的,其中0-2位代表输出模式,第3位表示输出电平信号,数字信号1则高电平,数字信号0则低电平
    P-MOSVgs(电荷)小于一定的值就会导通,利用这个特性和实现推挽与开漏输出
    N-MOSVgs(电荷)大于一定的值就会导通,利用这个特性和实现推挽与开漏输出
    保护二极管IO引脚上下两边两个二极管用于防止引脚外部过高、过低的电压输入。当引脚电压高于VDD时,上方的二极管导通;当引脚电压低于VSS时,下方的二极管导通,防止不正常电压引入芯片导致芯片烧毁,即只有电流不高于VDD也不低于VSS时才能正常通过
    TTL肖特基触发器用于将电流信号转化为模拟数字信号0或1,当使用模拟输入时不会通过触发器,模拟输入是指不通过内部转换器,需要外部外接adc进行ad采样转换

    每个GPIO口都有一组引脚连接,并且这组引脚,如PA-PG(引脚编号)连接到GPIOA中,其中有一个引脚的作用是输出,说的直接一点GPIO口是一个可编程的引脚,我们通过对GPIO口里的寄存器进行配置,让CPU对特定的引脚输出高电平。

    上面涉及到一个知识点,推挽与开漏输出,这两个模式是使用P-MOS与N-MOS两个晶体管实现的

    P-MOS与N-MOS的区别

    P-MOS是接了VDD(正极电源),所以它拥有输出高电流的能力,所以给P-MOS高电平就可以导通P-MOS管,因为接了电源线的原因一旦导通了就可以让电源线里的工作电压流通,而N-MOS上面接了VSS,若给高电平是无法导通的,因为它没有接电源线是无法输出高电平的,如果给了N-MOS高电平即便流通了因为没有VDD电源线它也无法正常输出电流,若给了低电平则会流向VSS接地处,所以N-MOS只能给低电平才有效,若想N-MOS驱动可以外接上拉电阻。

    所以这里输出低电流的话输出到N-MOS晶体管的引脚上,那么始终输出的是接地部分,可以有效降低材料的消耗率。

    这里说一下高电平与低电平在电路里的区分:

    这里以TTL电路为列,高电平>3.4V,低电平<0.2V,所以即便N-MOS没有输出任何电流,它也是低电平。

    使用这两个器件能够在输出高低电平时保证材料的消耗率降低,如果使用一个线路输出高低电平的话会损耗会提升,N-MOS会一直接地,所以输出端其实一点电流都没有,这会极大降低消耗率。

    MOS是场效应管,它有两种类型,P沟道与M沟道,至于哪种类型取决于MOS源接在VDD还是VSS,接在VDD就是P沟道,接在VSS就是M沟道

    推挽输出

    连接在输出控制电路里的数字器件,可以输出高电平与低电平,输出数字信号0时N-MOS导通,P-MOS高阻,输出数字信号1时P-MOS导通,N-MOS高阻抗

     

    开漏输出

    只能输出低电平,输出数字0时N-MOS导通,P-MOS高阻,无法输出高电平,若需要输出高电平需要在N-MOS晶体管后的引脚上接一个上拉电阻,将所有不确定的信号变成高电平,它只能从N-MOS这条线路上流过,所以就导致了它不能输出高电平

    输出电路会获取输出数据寄存器里当前的模式位是什么,如推挽或开漏,若推挽则用电路比较器进行电流比较来确定输出到P-MOS还是N-MOS,若是开漏模式则根据N-MOS导通特性以及当前数字信号的值0/1,来输出对应的电流导通,同时电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高。

    开漏负载能力较强,因为有上拉电阻,所以一般长时间的设备会用开漏输出

    二. I2C

    1. 什么是I2C?

    I2C全拼Inter Integrated Circuit,简称IIC或I2C,是由Philips公司开发的两线时串行总线,用于SOC与外设的连接通讯,它只需要两根线就能实现I2C的通讯,采用主从模式,主的一方可以读写数据,而从的一方只能等待被读写。从的一方没有主动权。

    I2C是双向通讯的,由两根线完成,分别是:SDA(串行数据线)、SCL(串行时钟线),接口输出模式为开漏输出,其总线接口已经集成到SOC内部,我们只需要通过原理图找到它的接口,在用外设的杜邦线或者其它方法连接到此接口上就可以实现I2C的通讯。

    SDA与SCL都外接了上拉电阻,所以当SDA空闲时刻输出的永远是高电平,它对外设也有一定要求,要求外设的输出模式也是开漏输出,因为这跟它本身的电路实现有关,若两个电路接口模式不一则是无法完成正常通讯的。

    其中I2C里的上拉电阻也不是随便用的,因为电阻值越高意味着信号拉高周期越长,那么通讯周期时间就越高,速率就下来了。

    I2C为每个设备提供了一个地址,可以通过这个地址找到不同的设备,来表明不同的设备,只有从设备收到是自己的地址时才响应。

    因为连接在I2C上的可能有很多个设备,从设备需要设置自己的地址,主设备不用,因为主设备是不会被从设备读写的,主设备是负责读写其它设备的。

    通讯时会有一个起始数据,这个数据是9个bit位,前7位是从设备地址,最后一位是方向(0/1(读或写))

    这也就表明从设备的地址不能超过7个bit

    2. I2C组成原理

    架构图:

    SMBA线用于SMBUS 的警告信号,I2C 通讯没有使用,可以忽略

    I2C内部是有自己的控制单元的,用于处理I2C的通讯,可以说是一个小芯片,它不属于CPU,它只是被集成SOC里(看架构,有的架构是没有的)

    3. I2C的特性

    • 仅需两根线
    • 接口集成在PCB内部
    • 因为是开漏输出,电流消耗较小(高电流由上拉电阻完成,通常情况下器件不需要输出高电平所以这块功耗较小)
    • 世界级标准,大多数开发板都支持
    • 一对多,一根线接多跟外设,通过地址区分,节省排版空间

    4. I2C的通讯模式

    双向传输总线:

    模式

    速率(kbit/s)

    标准模式(Standard-mode)100
    快速模式(Fast-mode)400
    快速模式+(Fast-mode Plus)1M
    高速模式(High-speed mode)3.4M

    单向传输总线:

    模式

    速率(kbit/s)

    超快速模式(Ultra Fast-mode)5M

    这些模式是根据速率来决定的,也就是说我们将I2C通讯速率设置成与上面对应的速率那么就是处于这个模式当中,其中说是这么快其实是有延迟的,因为要流过上拉电阻,这个取决于上拉电阻的阻值,因为信号在经过上拉电阻时会有一个周期变化,这个周期变化区别于阻值。

    设置方法:

    我们需要根据当前的PCLK时钟频率来计算的,这和设置PWM占空比类似,都需要经过计算然后设置I2C里的CCR时钟控制寄存器的值,因为如果频率不同是无法正常工作的。

    如:时钟频率是66MHZ,预分频值是65MHZ,系数是1/2那么计算公式如下:

    时钟频率=PCLK/((预分频值+1))/分频系数

    PCLK我们得知是66,分频值我们设置的是65,分频系数是1/2也就是除于2

    所以公式:66/(65+1)/2 =0.5

    在将0.5转化为HZ的单位:0.5*1000=500KHZ,这里还有一个公式,就是算HZ转秒,赫兹的倒数就是它的秒这个公式:(1/500)=0.002ms,1毫秒=1000微秒,0.002毫秒等于2微秒,通过这样的算法公式就可以得知我们现在的频率是每2微秒工作一次

    我们想让它每0.5毫秒工作一次,所以TCNTB的值=500毫秒/当前微秒频率2

    500/2=250,所以TCNTB的值应该为250,当然你也可以这也算,2微秒一次,1毫秒=1000微秒,0.5毫秒就等于500微秒,500微秒/2微秒=250,就得出经过250次2微秒后就到达了500微秒,而500微秒就等于0.5毫秒

    5. I2C的通讯过程

    通讯步骤:

    • 开始信号:SCL为高电平而SDA由高到低的跳变,表示产生一个起始条件
    • 结束信号:SCL为高电平而SDA由低到高的跳变,表示产生一个 停止条件
    • 应答信号:当发送完信号之后则拉低

    总线在空闲状态时,SCL和SDA都保持着高电平

    这三种信号里,起始信号是必须需要的,而结束信号和应答信号都可以视情况不要。

    在起始条件产生后,总线处于忙状态,由本次数据传输的主从设备独占,其他I2C器件无法访问总线;而在停止条件产生后,本次数据传输的主从设备 将释放总线,总线再次处于空闲状态

    传输过程:

    • 每次传输时的数据/地址以9位bit进行传输,前8位是数据,最后一位是应答位
    • 传输时高位在前,低位在后
    • 主设备在SCL和SDA都处于高电平状态时,先将SDA拉到低电平,然后在将SCL也拉入低电平,这样SDA产生了一个下降沿的信号,从设备检测到之后便知道主设备发来了起始信号,那么从设备需要主动拉高SDA线告诉主设备我准备好了

    • 这个电平变化不是说一个时间点的变化,比如上一秒是高电平下一秒是低电平这不算变化,时间点变化是要求在一个周期里某一时间段处于高电平,某一时间段处于低电平,整个周期里完成这样一个动作才属于上升沿或下降沿变化,这个周期取决于I2C的时钟频率
    • 如下图的周期变化,假设一个周期是1.2毫秒,那么这个毫秒里的周期变化如下

    • T1到T2之间处于高电平,T3到T4之间处于低电平,然后整个周期就变成了下降沿的信号
    • 然后主设备会在SCL线上产生时钟周期的脉冲信号,即发高电平,每产生一个脉冲信号都会从SDA线上发送一个数据出去,然后从设备检测到脉冲信号了就从SDA线上去读一个BIT位,在产生脉冲信号之后,SCL是处于低电平的,那么此时SDA电平会根据传输的数字信号进行翻转(为了防止数据不稳定,要求在SCl处于低电平时SDA才允许改变电平值,SCL发送一次脉冲信号后会要求拉低电平)
    • 首先最开始发送的是地址信息,每次有效位为8位,当主设备发送8位之后就不会在发了,且发送完八位以后会主动让SDA线一直处于高电平(因为SDA线发送BIT可能是高或低电平,可能第8位是低电平所以需要拉高回来),然后就会一直等待从设备拉低,当从设备拉低以后那么主设备监听到之后就会认为此次通讯是正确的


    • 然后接下来就可以发送数据位了,与地址信息一样,SCL产生脉冲之后SDA进行翻转,从设备进行读取,当发送完成之后就需要产生停止位,这个是由主设备完成的,会拉高SCL电平使其一直处于高电平,然后将SDA进行周期变化:上升沿,即在一定周期里拉低电平然后在拉高电平,然后此时SCL与SDA都处于高电平模式,则代表总线处于空闲状态可以被其它设备占用

    从设备是需要实时监听SCL的电平变化,来完成对应的动作

    以下是发送170(十六进制:0xAA; 二进制:1010 1010)到从设备的传输时序:


    总结理解起始与结束信号就是:

    • 起始条件:SCL线是高电平时,SDA线从高电平向低电平切换。
    • 停止条件:SCL线是高电平时,SDA线从低电平向高电平切换。

    这其中还有重复起始条件,即不用停止符号,只需要发送一个重复起始条件后续可以发送任意字节的数据,当全部发送完成之后在发送停止条件

    • 即在不释放总线的情况下给从设备发送Sr信号,然后重复上一次的传输,这样做的好处在于不会出现在传输期间被别的设备抢占的情况,因为每次传输结束都会有一定的空闲时间,如果这个时间周期被别的设备占用会出现一些数据不完整的情况,因为每次传输只能传输一个字节的有效数据位,每次通讯都要产生起始和结束信号,所以会有一定的空闲时间

    具体的通讯步骤可以参考I2C官方文档

    6. I2C接口工作模式

    I2C接口有四种工作模式

    工作模式

    介绍

    从发送器模式从设备收到主设备发来的ADDR地址后,将内部的数据寄存器里的值通过数据控制模块,发送给SDA总线,这种模式一般应用于主设备读取从设备里的数据
    从接收器模式从设备收到主设备发来的ADDR地址后,通过数据控制模块将SDA总线的数据存于到数据寄存器中
    主发送器模式在发送ADDR地址后且得到从设备响应后将数据寄存器里的值发送到SDA总线上
    主接收器模式在发送ADDR地址后且得到从设备响应后将SDA总线上的数据写入到数据寄存器中

    数据寄存器一般是DR寄存器(数据缓存寄存器),这块寄存器是等待内部程序将其读走的

    其中因为是高位到地位发送的,所以内部会有一个位移寄存器的过程才能写入到DR寄存器

    7. 硬件拉高拉低的过程

    I2C的SDA与SCL都外接了上拉电阻,如果一直处于拉高状态那么只能输出高电平无法输出低电平,那么数字逻辑信号时钟是1,这样结果是不对的,所以需要有一个拉低的过程才能保证传输的bit位是有效且正确的。

    I2C内部有一个逻辑控制器,负责控制这一块,当需要上拉时候会控制FET(场效应管,主要作用是控制半导体器件,控制电阻值),来拉低上拉电阻值使其电流固定在低电平值范围,产生低电平信号

    拉低:

    拉高:

     

     S3C2400的物理层的拓扑结构(仅供参考):

    8. 一对多

    I2C给每个从设备设置地址,然后通过发送地址位来选择要操控哪个从设备。

    在每个从设备连接后需要设置自己的地址,便于I2C主设备查找。

    每个设备连接到I2C的SDA与SCL上,然后I2C主设备对这条线发送地址当从设备收到以后来确定是否是寻找自己

    下图的连接就是将所有设备的SCL与SDA连接到I2C的主设备上,也就是说将I2C主设备的SDA与SCL引出来,然后从设备接到这根线上去,然后发送数据时接在这跟线上的所有设备都能监听到电平变化,就像socket的广播模式一样。

    主设备是不需要设置自身地址的,因为不会有人找它,当然如果要与其它外设进行合作开发,可以设置一个自己的地址,并编写监听代码让自己做主或从

     

    9. 开发流程

    以下是我在资料里找到的开发流程,若裸机编程可以用作参考

    主机接收模式:

    主机发送模式:

     

    三. SPI

    1. 什么是SPI?

    SPI全拼Serial Peripheral interface(串行外围设备接口),是由Motorola(摩托罗拉)在MC68HCXX系列处理器上定义的,主要应用于EEPROM(带电可擦可编程只读存储器),FLASH,RTC(实时时钟),AD转换器,还有数字信号处理器和数字信号解码器。

    SPI,是一种高速的,全双工,同步的通信总线,且只需要四根引脚线,与I2C一样都大大简化了PCB板子的布局空间,SPI依然是一种世界级的流行标准,大多数板子都内置了SPI的接口。

    Motorola设计它的初衷也是为了节约排版空间。

    2. SPI优与缺点

    优点

    • 支持全双工通信
    • 通信简单
    • 数据传输速率块

    缺点

    • 没有指定的读写方向控制
    • 没有应答机制确认是否接收到数据
    • 跟I2C总线协议比较在数据,可靠性上有一定的缺陷

    3. SPI组成原理

    SPI模块框架图


    SPI结构

    上图结构中的SCK、SS、SDO、SDI是比较重要的几根线,其作用如下:

    名称

    作用

    SCK串行时钟信号,主设备产生
    SS片选线,主要用于发送片选CS信号,即选择从设备
    SDO主设备输入,从设备输出
    SDI主设备输出,从设备输入

    对于SS片选信号这里在多解释一下,在SPI中可能存在许多设备,但是只能有一个主设备,主设备通过SS线来控制选择哪个设备,默认情况下SS线是低电平状态,主设备通过选择连接在对应SS线下的设备,然后使其发送高电平,当连接在对应SS线上的设备收到高电平时就会做出响应,开始接收SDO或SDI的数据,SS线会有多个,可以外接许多设备,SCK与SDO、SDI只有一个,其它设备都接在上面。

    其内部是有DR寄存器与位移寄存器,用来存数据与写数据

    4. SPI通讯模式

    SPI有四种通讯模式,分别是:

    1. Mode0
    2. Mode1
    3. Mode2
    4. Mode3

    SPI官方没有给定名字,只给了模式0-3,其作用如下:

    模式

    作用

    Mode0

    SCLK输出数字信号0时处于空闲状态,SCLK输出数字信号为1时则代表有效状态
    Mode1SCLK输出数字信号0时处于空闲状态,SCLK输出数字信号为1时则代表有效状态,数据采样是在第2个边沿,数据发送在第1个边沿

    Mode2

    SCLK输出数字信号0时处于有效状态,SCLK输出数字信号1时处于空闲状态
    Mode3SCLK输出数字信号0时处于有效状态,SCLK输出数字信号1时处于空闲状态,数据采样是在第1个边沿,数据发送在第2个边沿

    这些模式我们需要通过设置SCLK的”CPOL(时钟极性)和CPHA(时钟相位)”模式来完成,你可以把CPOL与CPHA理解为一个标志位,它们标志位不同会使SCLK的输出电平状态不同,也会改变数据输出的边沿

    SPI工作模式与CPOL和CPHA的对应关系以及它俩的作用:

    模式

    CPOL

    CPHA

    Mode000
    Mode101
    Mode210
    Mode311

    边沿

    这里说一下在SPI中什么是边沿,这里的第1个边沿与第2个边沿表示的是电平变化

    边沿表示的是上升沿或下降沿

    上升沿:即在一定周期时由低电平变化到高电平,然后此时在进行数据采样,即电平信号到数字信号转换

    下降沿:即在一定周期时由高电平变化到低电平,然后此时在进行数据采样,即电平信号到数字信号转换

    CPOL

    用来决定SCL空闲时应该是怎样的电平状态,若为0,SCLK空闲时输出低电平,若为1空闲时输出高电平

    CPHA

    它用来表示该SDI有效还是SDO有效,若它的值为0则代表第0个边沿数据采样,即SDI上可以进行数据采样,若它为1时则SDO数据可以进行采样

    同时它与CPOL是关联的:

    若CPHA为0,CPOL为0时:

    若CPOL为0,则第一个边沿有效,即SCLK空闲时是低电平,那么边沿就等于上升沿,同时SDI输出信号,SDO可以采样了

    若CPHA为0,CPOL为1时:

    若CPOL为1,则第一个边沿有效,即SCLK空闲时是高电平,那么边沿就等于下降沿,同时SDO输出信号,SDI可以采样了

    SDI与SDO线对主设备和从设备方向不同,SDI线在主设备上是输出,从设备上是输入,所以它们是相反的,所以当SDI输出信号时,对于从设备来说,它就可以读数据了所以主设备与从设备两根线SDO与SDI两根线作用是不一样的,所以上面的状态对于不同的设备是相反的,也就是刚好实现了主设备写时,从设备读,主设备读时,从设备写
    采样意思是设备可以去某个线上去读数据了

    SPI是没有控制信号的,只能通过SCLK时钟的状态来告诉从设备现在的流方向,从设备需要实时检测当前的SCLK状态

    工作时需要保证从设备与主设备一致的工作模式,其次许多从设备在出厂时就已经设定好了工作模式,是无法修改的,有些从设备是可以修改的。

    5. 通讯过程

    • 首先拉高对应设备的SS线,选择对应的从设备
    • 通过SLCk产生时钟边沿变化,来告诉从设备读写
    • 主设备里的控制逻辑通过位移寄存器从高到低的方式移动给SDI总线上
    • 从设备接收到之后也通过位移寄存器的方式按照顺序移到DR寄存器中
    • 这里给大家看一下SCLK产生时钟周期时做了什么
    • 如下图,当SCLK周期开始变成低电平时则代表数据有输出了,当变成高电平时则代表数据可以采样(读)了,即输出→输出完成,这是整个周期做的事情,下位机只需要等待周期变化完成之后根据当前模式去到指定的线上读或写数据就可以了

     

    • SPI是双向的,主机发的时候一样可以收从机的数据,在一个周期里完成数据交换,但是只有一个DR寄存器,所以SPI的方法是位移,主机高到低,从机低到高的交换,当主机高位移出去,低位就空一个出来,而从机低位移出一位,高位就空出一位

     在通讯之前需要保证双方时钟频率是一致的,一般情况下从设备是无法修改时钟频率的,只有主设备能够修改时钟频率,将主设备的时钟频率修改与从设备一致,默认情况下是不需要修改这些的,这个可以根据芯片手册中SPI上的使能时钟接的是谁,如果提供了GPIO口进行修改那么就支持可编程时钟,若没有则代表当前的MCU不支持编程SPI的时钟频率

    展开全文
  • java.lang.NoSuchMethodError: org.yaml.snakeyaml.LoaderOptions.setMaxAliasesForCollections(I)V 思路:网上查找别人的说是版本引用问题,然后全局搜索(Ctrl+N)‘setMaxAliasesForCollections’竟然没查询到...
  • 博客其他文档可以学习:https://www.cnblogs.com/zhiqiang_zhang/ I2C总线线路的走线方式 I2C器件与I2C总线的接线方式 I2C总线连接规范 I2C总线中上拉电阻、电源电压、总线电容三者之间的函数关系 I2C总线PCB布线...
  • 等价关系、商集集合的划分.pdf

    千次阅读 2020-12-28 22:03:18
    等价关系、商集集合的划分2009年7月 保定学院学报 Jul.,20090FBAODINGUNIVERSITY第22卷第4期 JOURNAL VoL22No.4文章编号:1674.2494【2009)04.0...
  • fpsf(32,66,43,:) 1×1×1×2 single 数组 ans(:,:,1,1) = 0.0342 ans(:,:,1,2) = -0.0213 >> fpsf_1(32,66,43) ans = 0.0342 - 0.0213i 结论 当oneside=False时,torch.rfft的输出的确是实部虚部 补充: pytorch...
  • 文章目录第二章 指令:计算机的语言2.1 引言2.2 计算机硬件的操作2.3 计算机硬件的操作数2.3.1 存储器操作数2.3.2 常数或立即操作数2.4 有符号数与无符号数2.5 计算机中指令的表示2.6 逻辑操作2.7 决策指令2.7.1 ...V
  • 要区分ubuntu还是redhat的话。...gcc -v。然后会告诉你关于系统的及编译的一些信息。这样你就知道了。一般linux系统都会有gcc。我的如下,我的是ubuntu显然如下:banxi1988@banxi:~$ gcc -vUsin...
  • 要学习GitLab CI/CD 必须要了解以下几个内容 GitLab Runner GitLab 与GitLab Runner的关系 .gitlab-ci.yml 更多的细节就是 GitLab Runner 的安装 GitLab 与GitLab Runner的关系 GitLab Runner 的注册与配置 ....
  • RISC-V指令

    千次阅读 2021-01-08 14:25:22
    0 RISC-V和其他开放架构有何不同 如果仅从“免费”或“开放”这两点来评判,RISC-V架构并不是第一个做到免费或开放的处理器架构。 在开始之前,我们先通过论述几个具有代表性的开放架构,来分析RISC-V架构的不同之...
  • BERT实体关系抽取 序言 项目参考了BioBERT、https://github.com/yuanxiaosc/Entity-Relation-Extraction两个BERT应用模型,BioBERT 是一种生物医学语言表示模型,专为生物医学命名实体识别、关系提取、问答等生物...
  • 等价关系习题.docx

    2020-12-29 15:21:46
    设RR是集合A上的等价关系,用例子证明RR不一定是等价关系。2.试问由4个元素组成的有限集上所有的等价关系的个数为多少3.给定集合S={1,2,3,4,5},找出S上的等价关系R,此关系R能够产生划分{{1,2},{3...
  • 1, intel至强酷睿I系列,到底哪个好这俩系列其实用途是不一样的。酷睿i是民用系列,至强则是服务器系列。他们有很多特性是不同的,但是最重要最简单的性能区别你可以大致了解一下。这里只讲桌面部分的酷睿,因为...
  • RISC-V GCC工具链介绍

    千次阅读 2021-03-31 12:41:52
    一、RISC-V GCC工具链种类 RISC-V GCC工具链与普通的GCC工具链基本相同,用户可以遵照开源的riscv-gnu-toolchain项目(请在Github中搜索riscv-gnu-toolchain)中的说明自行生成全套的GCC工具链。 由于GCC工具链支持...
  • X86指令集是美国Intel公司为其第一块16位CPU(i8086)专门开发的,美国IBM公司1981年推出的世界第一台PC机中的CPU–i8088(i8086简化版)使用的也是X86指令。 采用CISC(Complex Instruction Set Compu.
  • i 1 j 是什么意思 i.j.k是什么意思

    千次阅读 2021-03-21 10:53:13
    i 1 j 是什么意思 i.j.k是什么意思以下文字...c语言 i/=++j 是什么意思。 是i=j+1么相当于两句j=j+1;i=i/j;也就是 j先加然后i除以j自加后的值,得的结果赋值for(i=1;i<10;i++){for(j=1;j<=i;j++)解释一下这是什...
  • 技巧一:使用LDO稳压器,从5V电源向3.3V系统供电 标准三端线性稳压器的压差通常是 2.0-3.0V。要把 5V 可靠地转换为 3.3V,就不能使用它们。压差为几百个毫伏的低压降 (Low Dropout, LDO)稳压器,是此类应用的...
  • 用一个公式简单表达,即: RISC ISA = 1 个基本整数指令集 + 多个可选的扩展指令集 3.1RISC-V的基础指令模块 RISC-V有六种基本指令格式: R 类型指令,用于寄存器-寄存器操作 I 型指令,用于短立即数访存 load ...
  • 大脑如何表征时间情绪之间的关系呢?目前的研究仍未能揭示这一点,可能是因为在实验室环境中模拟日常生活存在一定的复杂性难度。本研究将实验材料(电影)压缩成数小时的多种情绪反应,以时间动态为特征,就如同...
  • 等价关系习题 -

    千次阅读 2020-12-28 22:03:17
    设RR是集合A上的等价关系,用例子证明R?R不一定是等价关系。2.试问由4个元素组成的有限集上所有的等价关系的个数为多少? 3.给定集合S={1,2,3,4,5},找出S上的等价关系R,此关系R能够产生划分{{1,2},...
  • PCA对应关系分析与Biplot的关系

    千次阅读 2021-03-17 02:02:40
    SVD奇异值分解是这三种技术的根本。...XX- [R×Çr×cX=Ur×r小号- [R×ÇV′Ç×ÇX=Ur×rSr×cVc×c′米m [米≤分钟([R,C ^)][m≤min(r,c)]X(米)X(m)米mXXX(米)=Ur×mSm×mV′c×mX(m)=Ur×mSm×mVc×m′U=U...
  • I2C总线(3)–时钟同步仲裁》;《I2C总线(4)–高速模式》 为什么采用漏极开路? 首先,连接到 I2C 上的设备是开漏输出的。以漏极开漏输出(OD)为例,是指将输出级电路结构改为一个漏极开路输出的 MOS 管。这样做...
  • GitLab CI / CD 项目配置.gitlab-ci.yml文件

    千次阅读 2021-03-06 17:07:26
    依赖关系和缓存。 您要顺序运行的命令和您要并行运行的命令。 将应用程序部署到的位置。 您是要自动运行脚本还是手动触发任何脚本。 脚本被分组为作业,并且作业作为更大的管道的一部分运行。您可以将多个独立的...
  • NPNPNP 的电流方向 、大小关系 、电压偏置

    万次阅读 多人点赞 2021-01-22 11:51:04
    它最主要的功能是电流 放大开关作用。Emitter,Base,Collector NPN管,集电极电流IC基极电流IB流入管子。发射极电流IE流出管子。且IC+IB=IE。 Icb+Ibe=Ice 即βIbe+Ibe=Ice PNP管,集电极电流IC基极电流IB...
  • 关系和非关系数据库区别

    千次阅读 2021-11-01 16:23:00
    关系型数据库:二、关系型数据库关系型数据库的区别1.关系数据库①优点②缺点2.非关系型数据库(NoSQL)①优点②缺点 一、描述主流的数据库系统 1.关系型数据库: Mysql(Oracle公司) 、 SQL server(微软) 、...
  • 近世代数--极大理想--I是R的极大理想↔R/I是域 博主是初学近世代数(群环域),本意是想整理一些较难理解的定理、算法,加深记忆也方便日后查找;如果有错,欢迎指正。↔\leftrightarrow↔
  • 野火i.MX Linux开发实战指南

    千次阅读 2021-03-06 21:53:07
    对于一般用户来说,因为经常接触PC、手机,可能会知道Windows、iOS、Andorid系统,但对Linux系统却知之甚少,这是因为 Linux的应用场景主要是服务器嵌入式设备,在直面消费者的桌面系统领域并不占据优势。...
  • 三相异步电机的定子绕组为三相对称绕组。大、中容量的高压电动机常接成星形,引出三根线;中、小容量的低压电动机常...现有一台铭牌标注为380V Y接法的三相异步电机一台输出三相220V的变频器,问变频器能否带动电机?

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 455,663
精华内容 182,265
关键字:

v和i的关系