【cubeide】程控衰减器PE4302...

news/2024/10/31 1:26:01/

(225条消息) PE4302射频衰减器 程控衰减器 高线性衰减器 原理图和PCB_kvdz_taobao_com的博客-CSDN博客

PE4302最大功率衰减31.5dB。

P/S(模式选择)LE(使能)
手动拨码01
串行程控11

            靠近ON的一侧均为1.

GPIO设置:

 pe43xx.h

#ifndef PE43xx_h
#define PE43xx_h#include "ytcesys.h"
#include "main.h"
// Define types of sensors.
#define PE4302 02
// untested as I don't own these
#define PE4306 06
#define PE4312 12void PE43xx_f( uint8_t type);
void begin();
int setLevel(float level);
void _writeLevel();
float getLevel();
float getMax();
float getStep();void PE43xx_init(uint8_t type,float level);
void PE43xx_changelevel(float level);#endif

pe43xx.c

#include "pe43xx.h"uint8_t _type;
float _max;
float _step;
float _level;//type写PE43xx (PE4302/PE4306/PE4312)void PE43xx_f( uint8_t type) {
//	_pin_le = pin_le;
//	_pin_clock = pin_clock;
//	_pin_data = pin_data;_type = type;
}void begin() {// set our internal max and step valuesswitch (_type) {case PE4302:case PE4312:_max = 31.5;_step = 0.5;break;case PE4306:_max = 30;_step = 1;break;default:#warning type not certain, going with defaults, step=1 max=30_step = 1;_max = 30;break;}// set level to 0setLevel(0);
}int setLevel(float level) {// bounds checkif(level < 0 || level > getMax() ) {return 0;}_level = level;_writeLevel();return 1;
}void _writeLevel() {// PE4302 and PE4312 wants something like this//// C16  C8  C4  C2  C1  C0.5  =>  result//  0    0   0   0   0    0   =>  0db//  0    0   0   0   0    1   =>  0.5db//  0    0   1   1   0    1   =>  6.5db//  1    1   1   1   1    1   => 31.5db// for PE4306 (which has only 1db resolution)//// C16  C8  C4  C2  C1  =>  result//  0    0   0   0   0  =>  0db//  0    0   0   0   1  =>  1db//  0    1   0   0   1  =>  9db//  1    1   1   1   1  => 31db// so the big different is that one can set the .5 bit or not// get the integer part, it will be the same for both chipsint intlevel = _level;//_level==31.5...,int intlevel==31// default to 5 bitsint bits = 5;// if our step is less than 1 the chip supports the 0.5 decimalif(_step < 1) {// one more bitbits = 6;// if the decimal is not 0 shift 1 into our levelif( (_level*10 - intlevel*10) > 0) //有小数部分{intlevel = intlevel << 1;
//            bitWrite(intlevel, 0, 1);intlevel+=1;} else {intlevel = intlevel << 1;
//            bitWrite(intlevel, 0, 0);}}// LE and CLOCK down to get the chip listen
//    digitalWrite(_pin_le, LOW);
//    digitalWrite(_pin_clock,LOW);HAL_GPIO_WritePin(_pin_le_GPIO_Port, _pin_le_Pin, GPIO_PIN_RESET);HAL_GPIO_WritePin(_pin_clock_GPIO_Port, _pin_clock_Pin, GPIO_PIN_RESET);// Write the level out MSB firstint b;for (int bit = bits; bit > 0; bit--) {b = ((intlevel << 1) >> bit) & 0x01;HAL_GPIO_WritePin(_pin_data_GPIO_Port, _pin_data_Pin, b);HAL_GPIO_WritePin(_pin_clock_GPIO_Port, _pin_clock_Pin, GPIO_PIN_SET);HAL_GPIO_WritePin(_pin_clock_GPIO_Port, _pin_clock_Pin, GPIO_PIN_RESET);}// toggle LE to latch
//    digitalWrite(_pin_le, HIGH); // Toggle LE high to enable latch
//    digitalWrite(_pin_le, LOW);  // and then low again to hold it.HAL_GPIO_WritePin(_pin_le_GPIO_Port, _pin_le_Pin, GPIO_PIN_SET);HAL_GPIO_WritePin(_pin_le_GPIO_Port, _pin_le_Pin, GPIO_PIN_RESET);
}// getters
float getLevel() {return _level;
}float getMax() {return _max;
}float getStep() {return _step;
}//main调用函数
void PE43xx_init(uint8_t type,float level)//第一次用
{PE43xx_f(type);begin();setLevel(level);}
void PE43xx_changelevel(float level)//非第一次用
{setLevel(level);}

main.c

  PE43xx_init(PE4302,16);PE43xx_changelevel(10);

其中的level是功率的衰减。单位:dB

xxdB=20lg(Ua/Ub)


http://www.ppmy.cn/news/456013.html

相关文章

程控电源CANoe上位机面板(CAN\ETH测试、RS232串口通信、编写设计思路)

程控电源CANoe上位机面板 编写此面板的目的编写思路一、通讯方式1、RS232串口连接2、CANoe与RS232串口相关的函数3、帧格式命令字4、校验码 二、面板设计1、所需文件说明2、导入使用3、功能模块化3.1 初始化3.2 端口设置3.3 控制方式3.4 脉冲程序3.5 电压电流状态3.6 运行设置的…

安捷伦or是德信号源+频谱仪操作: 从程控到自动测试 (四)平坦度检测的程控实现

安捷伦or是德信号源频谱仪操作&#xff1a;从程控到自动测试&#xff08;四&#xff09;平坦度检测的程控实现 一、概述 目前&#xff0c;对于射频模块的调试与测试&#xff0c;国内大多数的厂商(特别是中小型企业)均是通过最原始的手工调测方式&#xff0c;需要调试人员手动设…

IIR数字程控滤波器

该作品为2007年全国电子设计大赛D题&#xff0c;题目要求如下&#xff1a; 这个东西的目的就是做一个截止(中心)频率可调&#xff0c;通带类型可调(低通&#xff0c;高通)的程控滤波器&#xff0c;大二上学期用运放搭的状态变量滤波器实现过该功能&#xff0c;这次打算学习一…

python控制程控电源_程控电源原理_程控电源的用途浅谈

程控电源简介 程控电源指通过外部控制来设定输出电压、输出电流的稳压、稳流或稳压/稳流的电源。程控河试电源采用微机控制&#xff0c;技术先进&#xff0c;全程控、全按键操作&#xff0c;体积小、重量轻、携带方便&#xff0c;既可用于实验室&#xff0c;也可以现场使用。 程…

MAX262程控滤波器

一、简介。 MAX262内部有两个独立的程控滤波器&#xff0c;均可设置低通、高通、带通、带阻、全通&#xff0c;中心频率和Q值可调。 中心频率有64个档位可调&#xff0c;Q值有128个档位可调。 中心频率f0由采样频率FCLK和FN决定&#xff0c;最大不超过140KHz。 Q值由QN决定…

c#集成程控电源SCPI 命令( 德国EA)

public class EAPowerControl { #region 常用变量 /// <summary> /// 输出日志接口 /// </summary> private IPrintAction printAction; private static readonly string readError "SYST:ERR?"; // 读取错误…

分级输出四路带保护程控电源设计与实现

目录 中文摘要………………………………………………….………………………………………….…VI 外文摘要………………….…………………………….………………………………………….…VII 1 引言 1 1.1 选题背景 1 2 系统综述 2 2.1文献综述 2 2.1.1稳定电压输出与可调电压技…

ArduPilot开源代码之AP_InertialSensor_Backend

ArduPilot开源代码之AP_InertialSensor_Backend 1. 源由2. 设计3. 实例BMI2703.1 AP_InertialSensor_BMI2703.2 probe3.3 init3.4 start3.5 read_fifo3.6 update 4. 总结5. 参考资料 1. 源由 惯性传感器是飞控关于姿态最重要的一个传感器。从复杂度角度看&#xff0c;除了数据…