SPMI协议的理解

SPMI协议理解

  1. SPMI总线分高速和低速,高速是0-26MHz,低速是0-15MHz;总线上最多4个主设备,16个从设备;当前控制总线的主设备叫BOM,从设备分2种:一种不能申请占总线,另一种能申请占总线,这种情况下CLK的时钟是BOM发的,从设备只控制数据总线。
  2. SPMI主设备的2个信号线是CMOS结构,从设备也是,但从设备内可以集成500k-2M的下拉电阻,也可以放到外面的连接线上;但若从设备多了,总的下拉电阻必须大于125K.
  3. 每次数据通信前,都有一个总线仲裁的过程,各设备在仲裁阶段申请总线,由BOM决定仲裁结果。即仲裁前BOM必须存在。
  4. 一次数据通信的过程是:总线仲裁+SSS(Sequence Start Condition) + 命令和书数据Frame + ACK + BUS Park
  5. 总线在IDLE时,2个信号都是低电平,其中CLK由BOM强拉低,DATA由下拉电阻若拉低,谁想发数据,谁就在总线IDLE的时候拉高数据总线,旧BOM检测到后62us内发出CLK,开始仲裁过程。
  6. 仲裁结束后,新的BOM就产生了,再由其发送SSC,开始它想要的通信了。
  7. 总线上的数据按紧急性分为2类:优先级和次优级,各设备自己知道自己数据的优先级别。
  8. 总线上的所有设备都应该有一个地址,主设备的地址是0x0000—0x0011,从设备地址是0x0000—0x1111共16个,每个数据通信都是基于设备地址的。
  9. 仲裁结束时,设备共有4个仲裁优先级别,分别是从设备A bit仲裁,主设备优先级仲裁,从设备SR bit仲裁,主设备次优先级仲裁。
  10. 仲裁时,按照从高到低的顺序在数据线上安排时间Bit,相关的设备按照自己的数据紧急程度采用相应的仲裁优先级别,在相应的bit时间上动作,若有工作,则相应的设备仲裁成功,若没有,则继续在数据线上安排低仲裁级别的时间bit.
  11. 若同时有多个从设备采用同样的仲裁时间bit,则从设备之间继续仲裁,算法结果是谁的地址大,谁成功,即0x1111总是成功,为避免这种情况,它下次不能用A bit方式仲裁,即从设备内部是依据地址仲裁的。
  12. 主设备之间用MPL作为仲裁依据,保证每个主设备成为BOM的几率相同,每个主设备的MPL在每次仲裁结束后重新计算,各主设备只要知道当前BOM的MID就能计算自己新的MPL。
  13. 仲裁时序的Bit安排:发起仲裁+C bit +A bit + Master Priority仲裁 + SR bit + Master Secondary仲裁,其中C bit的作用是判断是否有Master设备需要连接,A bit判断是否有从设备用A bit级别参与仲裁,SR bit判断是否有从设备用SR bit级别参与仲裁,若没有,则不安排仲裁时间bit;Master Priority仲裁和Master Secondary仲裁不需要判断bit,但在时间上必须安排仲裁过程。
  14. 总线仲裁前,必须有一个旧的BOM,如果没有,则必须有一个初始化过程。
  15. 初始化时,各主设备先后发起仲裁请求,估计是先发起的设备默认成为BOM。
  16. 当前BOM完成通信后,可以发命令退出BOM位置,其他master依据自己的MPL,顺序拉高Data信号,最早拉高的master成为新的BOM,并且立即把自己的MPL设置为3.
  17. SSC只能由BOM发出吗?谁控制CLK,谁发SSC。
  18. 从设备能当假BOM,但是CLK仍然由老BOM发出,SSC也由老BOM发出,从设备只驱动DAT。
  19. 只要知道当前BOM的MID,其他主设备就能算出自己当前的MPL,因为当前BOM的MPL是3,这个是怎么算的?因为MID顺序对应的MPL组数很多,用以实现轮流当BOM,但是当知道MPL=3对应的MID时,则4个MID和MPL的对应关系就一一对应了。说明他们的对应关系是有规律的,一对一的。这样新连上的master就根据自己的MID,得知自己新的MPL,为下一步的仲裁做准备。
  20. 每次传输数据前,都是由总线仲裁申请开始,这个申请可以由所有master和有资格的slave发起。
  21. 设备连接分3种方式:

1)、当观察到SSC后,检测command sequence发送完毕后,总线IDLE后,立即拉数据线,申请仲裁,BOM输出CLK后,申请者响应C bit;

2)、一直观察总线,当发现是IDLE,则发起仲裁申请,若有BOM的CLK输出,则设备响应C bit,若没有BOM的CLK输出,则设备自己输出CLK,充当BOM;

3)、检测到有人申请仲裁,则设备响应C bit就行,若有人申请但没有CLK,则设备产生CLK,充当BOM。

  1. 开机后,执行初始化过程,所有master都会依次发起总线仲裁,执行连接过程,监测总线的动作,当发现没CLK一段时间后,就自己当BOM,谁的MID低,谁当BOM;BOM产生后,紧接着就发出C bit,执行连接过程,在执行仲裁过程,然后才发SSC,SSC后面只能跟命令或数据序列了。
  2. BOM可以发送交出去总线命令,让下一个MPL的master设备当BOM,若没有其他已经连接的master,则总线失去BOM,为没有初始化的状态。也就是说BOM一定可以退出这个角色。
  3. 凡是没有参与总线仲裁的master,或者不再履行总线功能的,不再更新MPL的master,都视为断开连接的master,但它仍能监视总线。
  4. 从设备由sleep,active,shutdown,startup共4中工作模式,startup时,所有的LDO都关了,需要enable信号,才进入active状态;Active状态时,主设备可以设置各寄存器,控制从设备了;Sleep是active的低功耗模式,也能设置各寄存器,只要从设备内部寄存器的时钟还存在;用命令能进入shutdown模式,所有LDO关掉,用reset命令或信号,可以退出shutdown模式。
  • 7
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值