第一章课程概述.第二章控制设备第2节串行SPI接口控制PE4312数控衰减器.第三章控制仪器第2节通过GPIB控制信号源.第3节通过GPIB控制矢量网络分析仪.第4节通过GPIB控制频谱仪.第四章控制软件第五章综合案例一第2节应用工具包得到幅相加权.第3节共用端口的SPI控制.第六章综合案例二第七章综合案例三第八章课程总结
PE4312衰减器SPI控制方法
PE4312是PeregrineSemiconductor公司的一款数控衰减器,工作频率覆盖1MHz~4GHz,衰减步进0.5dB,6位,最大衰减量为35dB,它有并行和串行两种控制方式,这里将采用串行SPI接口进行控制。之所以选择这个器件进行举例,SPI接口是微波射频领域器件最常用的接口,比如波控芯片芯片还有综合器芯片大多采用SPI接口,PE4312的SPI使用相对简单易懂,适于作为后续应用的基础。
PE4312串行SPI接口由三位分别为数据位、时钟位和使能位控制,DATA一位位的接收数据,随着CLOCK的高低变化将这一串串行数据接收到内部的移位寄存器,最终由LE的高低变化,这一过程就像是百米运动员排队上跑道,听到发令枪响起跑。
控制PE4312主要需要搞清楚真值表和时序。真值表相对比较好理解,因为在并行控制的应用中主要就是靠它来置位,主要搞清楚初始状态,和每一位的有效电平。如1所示,参考态所有的6位均为0,控制位置高时有效,所有位都置高时为最大衰减态。1PE4312的真值表
时序描述了SPI的三个端口高低电平变化的时序关系,观察CLOCK从低到高再到低的是一个时钟周期,在这个变化过程中,DATA位所置的电平值依次存储在芯片上的移位寄存器上,注意DATA位是在CLOCK置0时进行高低变换的,由于是6位衰减器,因此一共6个时钟周期先后发送6位数,发送完后LE从低到高再到低,完成这一次完整的衰减置位。2PE4312的串行控制时序
注意数据位DATA前后分别标有MSB和LSB,这个规定了6个控制位到底先发谁的问题,结合3可知第一位发过去的应该是16dB衰减所对应的控制位,而最后一位发过去的应该是0.5dB衰减所对应的控制位。3DATA数据的先后顺序
除此之外实际应用时还需要关注,控制电平、一些外围配置需要在硬件设计时考虑,特别是需要注意到2中一些时间参数要在有控制速度要求的场景中充分考虑,不过这里我们只需要搞定最基本的部分。
从衰减值转换为控制码
这里设计实现一个函数,输入所需要的衰减值,转换为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对应的控制码
串行数据发送
接下来需要做的是将2节中所得到的6位0/1通过2所示的时序发送给PE431这里采用的方法是使用Matlab通过串口直接控制单片机的管脚,对管脚置高低电平。这种方法不需要编写很复杂的单片机程序,只需要使用单片机的测试程序就能对单独的硬件进行调测。
我们使用这样一个通信协议[0xAA0x010x100x000xBB],其中第一个数0xAA为帧头,第二个数0x01为功能码,第三个数0x10为当前控制的单片机管脚,第四个数0x00为将地址0x10置为低电平,第五个数为帧尾。
根据实际的单片机与PE4312的管脚连接,查阅对应的管脚,假定是0x01对应的是LE,0x02对应的是DATA,0x03对应的是CLK,那么接下来就可以根据2来写串行数据的发送程序。
fopen(com); % 打开串口
LE = [170 1 1 0 187]; % 十进制的LE控制
DATA = [170 1 2 0 187]; % 十进制的DATA控制
CLK = [170 1 3 0 187]; % 十进制的CLK控制
LE(4) = 0;
fwrite(com,LE); % 使能位置低
for 1:length(Contr)
DATA(4) = Contr(i);
fwrite(com,DATA); % 写入数据DATA位
CLK(4) = 1;
fwrite(com,CLK); % 时钟置高
pause(0.1); % 延时
CLK(4) = 0;
fwrite(com,CLK); % 时钟置低
end
LE(4) = 1;
fwrite(com,LE); % 使能位置高
pause(0.1); % 延时
LE(4) = 0;
fwrite(com,LE); % 使能位置低
fclose(com); % 关闭通信串口
delete(instrfindall);
到此,就采用最简单直接的方式通过SPI接口对PE4312数控衰减器完成了控制,这整个过程是后面进一步应用的基础,最好是在实际工作中找硬件试一下。
文章为作者独立观点,不代表股票交易接口观点