时序描述了SPI的三个端口高低电平变化的时序关系,观察CLOCK从低到高再到低的是一个时钟周期,在这个变化过程中,DATA位所置的电平值依次存储在芯片上的移位寄存器上,注意DATA位是在CLOCK置0时进行高低变换的,由于是6位衰减器,因此一共6个时钟周期先后发送6位数,发送完后LE从低到高再到低,完成这一次完整的衰减置位。2PE4312的串行控制时序
接下来需要做的是将2节中所得到的6位0/1通过2所示的时序发送给PE431这里采用的方法是使用Matlab通过串口直接控制单片机的管脚,对管脚置高低电平。这种方法不需要编写很复杂的单片机程序,只需要使用单片机的测试程序就能对单独的硬件进行调测。
除此之外实际应用时还需要关注,控制电平、一些外围配置需要在硬件设计时考虑,特别是需要注意到2中一些时间参数要在有控制速度要求的场景中充分考虑,不过这里我们只需要搞定最基本的部分。
到此,就采用最简单直接的方式通过SPI接口对PE4312数控衰减器完成了控制,这整个过程是后面进一步应用的基础,最好是在实际工作中找硬件试一下。
控制PE4312主要需要搞清楚真值表和时序。真值表相对比较好理解,因为在并行控制的应用中主要就是靠它来置位,主要搞清楚初始状态,和每一位的有效电平。如1所示,参考态所有的6位均为0,控制位置高时有效,所有位都置高时为最大衰减态。1PE4312的真值表
注意数据位DATA前后分别标有MSB和LSB,这个规定了6个控制位到底先发谁的问题,结合3可知第一位发过去的应该是16dB衰减所对应的控制位,而最后一位发过去的应该是0.5dB衰减所对应的控制位。3DATA数据的先后顺序
从衰减值转换为控制码
我们使用这样一个通信协议[0xAA0x010x100x000xBB],其中第一个数0xAA为帧头,第二个数0x01为功能码,第三个数0x10为当前控制的单片机管脚,第四个数0x00为将地址0x10置为低电平,第五个数为帧尾。
PE4312是PeregrineSemiconductor公司的一款数控衰减器,工作频率覆盖1MHz~4GHz,衰减步进0.5dB,6位,最大衰减量为35dB,它有并行和串行两种控制方式,这里将采用串行SPI接口进行控制。之所以选择这个器件进行举例,SPI接口是微波射频领域器件最常用的接口,比如波控芯片芯片还有综合器芯片大多采用SPI接口,PE4312的SPI使用相对简单易懂,适于作为后续应用的基础。
串行数据发送
这里设计实现一个函数,输入所需要的衰减值,转换为6位串行的0/1控制码,说是函数只是理解方便,但实际上只需要如下的几行matlab代码,这里也没有按函数编程。
ATT = 17.5; % 衰减值(dB)
Contr = zeros(1,6); % 创建6位的控制数组
ATT_bit = de2bi(ATT*2);
Contr(1:length(ATT_bit))=ATT_bit;
Contr(end:-1:1) = Contr % 得到所需要发送的控制码
在程序中衰减值是15dB,对应的6位控制应该是10001运行输出如4所示。4程序运行得到的15dB对应的控制码
PE4312衰减器SPI控制方法
PE4312串行SPI接口由三位分别为数据位、时钟位和使能位控制,DATA一位位的接收数据,随着CLOCK的高低变化将这一串串行数据接收到内部的移位寄存器,最终由LE的高低变化,这一过程就像是百米运动员排队上跑道,听到发令枪响起跑。
文章为作者独立观点,不代表股票交易接口观点