- 背景
- MIPI RFFE协议
- 被控器件资料
- 程序实现
- 参考资料
背景
前段时间教研室需要制作一个拥有自动增益控制功能的放大器组,选来选去找到了一款英飞凌的放大器模块,该模块情况在第三部分详细介绍(具有代表性),重点在于这个模块使用MIPI RFFE协议控制,这个协议控制我之前没有使用过,但是我以前使用过类似SPI和IIC的协议感觉会差不多,但是实现的具体难度在于,不同于前述的SPI,IIC和CAN总线,这个总线的资料少的可怜,基本上只有官方提供的说明文档,我尝试从知网,IEEE等网站寻找资料发现也没有什么有实际指导意义的资料,但是通过尝试已经实现了通过协议控制器件的功能并在总线上挂载了4个设备,在硬件电路的设计和软件设计中遇到了很多问题也学到了很多东西,对于协议的大体已经明了,但是还有很多具体的功能没有实现和理解,在这里和大家分享和交流一下。
MIPI RFFE协议
看这章之前请您先将MIPI RFFE协议下载下来。(在我的页面有很多关于MIPI RFFE相关的资料)
网上能找到的很多资料都是对于这个协议的描述,并没有触及到这个协议的实际的内容,这一章将比较详细的介绍MIPI RFFE协议的重点。
目录
- Introduction
- Terminology
- References
- Architecture and Operations Overview
- Physical Layer
- Protocol Layer
- Applications
2.1 Definitions
首先是协议用到的一些术语的解释:
19 Address Frame是地址帧,用来标志需要写入的器件地址,该地址帧可以使主机区分挂载在总线上的器件从而分开控制,有一位的奇偶校验位(这个奇偶校验位在后面大量反复出现)。
20 Broadcast 广播不赘述
21 广播地址,和路由器当中的广播一样,而且地址为也一样,可以类比的理解。
22 Bus Idle是总线空闲信号,标志着总线当前没有数据的发送与接受。
23 Bus Park Cycle总线终止信号,一般在一个数据帧结束后发送(后面详述)。
24 Command Frame指令帧。
4.1 Overview
Figure 1是MIPI RFFE架构的简图,从图中可以看出MIPI RFFE架构的组成很简单由一个主机和多个从机构成,主机与从机之间通过两根数据线进行数据传输:SCLK为时钟线 SDATA为数据线。紧接着的内容详细阐述了MIPI RFFE架构的组织形式,有兴趣可以仔细阅读相关章节。
4.1.2 Device Identification
该章详细介绍了从机的识别,每一个从机在MIPI RFFE都可以设置一个独占的USID,主机通过对指定USID的器件进行编程从而实现对每一个总线上的器件进行单独编程。由于大多的器件在初始化的时候已经设定了好了USID或者USID的可用值需要扩展,必须对USID进行软件编程从而扩展在总线上的从机数目,上图说明了如何设置一个从机器件的USID。
4.2 Read and Write Timing
由于SCLK和SDATA信号其实传输的速率在MHz级别,所以其传输的有效性和线长有一定的关系,协议标准推荐的主从机之间数据线的长度不要超过15cm,在我实际的使用当中(第一版测试电路)发现线长会导致信号发送至从机出现问题,可能是线长导致了SCLK和SDATA信号直接出现了明显的信号错位导致信号失效,减小线长能明显改善这一问题。
4.2.1 RFFE Clock
绿色标记文字表明协议规定SCLK信号无论何种情况下只能由主机驱动向从机发送,从机不能驱动时钟信号,同时时钟的起始和终结都是以低电平0状态结束,表1规定了协议的时钟的范围。
4.2.1.1
SCLK信号不应该在无信号传输和空闲状态下驱动,在空闲状态下最好保持SCLK信号线处于低电平的状态。
时钟信号的波形相关约束其中最需要关心的有下面几个参数:
- 上升下降转换时间;在这里其时间标注为ns级别,在设计时这个困扰了我很久,因为我使用的板子是STM32和MSP430,其转换时间不可能达到ns级别,后来实测发现ms级别的转换时间也可以实现功能,可能是我理解出现了问题,有懂的大佬可以给我交流一下。
- 高电平和低电平的保持时间;如图TSCLKOH和TSCLKOL
- 占空比;理想情况下输出的SCLK信号是一个50%高50%低的标准方波信号,然而我们是通过单片机的GPIO高低电平转换加上延时函数实现功能的,很难保持完美的方波信号,所以这里给出了最保守的占空比。
4.2.2 RFFE Data(SDATA)
规范这里写到:“数据应该在SCLK上升沿时写入主机与从机,同时在SCLK下降沿时读取信号。”
4.2.2.1 Specifications for the SDATA Driver
与SCLK信号对应的SDATA信号的规范。
重点–Bus Park Cycle Timing这是本规范出现的第一个协议规范信号它出现在数据帧的结尾,标志着数据传输的结束。
这一段文字表达了一个意思就是SDATA线在SCLK的下降沿被释放,所以在SCLK下降沿出现之前需要SDATA处于低电平状态。
4.3 Operating States(重点)
规范规定从机设备至少需要具备三种运行状态:**状态,关闭状态,初始状态。
上图为规范给出的一种状态之间的转换状态机,首先简单解释一下图中出现的一些量的含义:VIO系统的供电,PWR_MODE是一个从机内的协议规定好的标准寄存器,专门用来设置从机的电源相关的参数,通过写这个积存器可以起到改变从机运行状态的功能。所以如图可以在不同的状态之间进行转换。但是需要注意的是虽然协议强制的规定了很多的东西但是这个状态的转变状态机给予了器件生产厂商很大的自由度,所以您购买的实际的器件的状态转换的状态机可能和上图存在很大的差别,具体以实物为准。
4.4.1 STARTUP
在重启之后STARTUP状态是从机的默认状态,这是协议规定好的。但是,注意最后一句,对于STARTUP状态,从机应该自动的转换成**状态。应该表示这没有进行硬性的规定,所以这里很重要,可能你的器件需要额外的操作才可以进入**状态。
4.3.2 ACTIVE
只有进入了**模式我们才可以对从机的相关寄存器进行操作从而改变从机的运行状态以实现我们的目的。
4.3.3 LOW POWER
低功耗模式是厂商自己定义的模式,其功能可以完全不同,但是大多数情况下是出于节省系统的功耗的角度来出发的,我们需要关心的是从机如何从低功耗模式转化成**模式:通过改变PWR_MODE寄存器的值来实现相关的功能或者通过VIO设置(需要设备状态机转换功能的支持)。
5.1.1 Signaling Voltages
- MIPI RFFE支持两种电压大小的标准:1.2v或者1.8v
- MIPI RFFE协议对于高低电压信号的约定:无论那种电压制式,当电压值出于0~0.2VIO时判定为低电压,当电压值为0.8VIO~VIO时判定为高电压。
- MIPI RFFE拉电流和灌电流值。