diff --git a/Makefile b/Makefile index 66d699b..7da8e11 100644 --- a/Makefile +++ b/Makefile @@ -26,6 +26,7 @@ CFLAGS_DEBUG := $(CFLAGS) $(DEBUG_FLAGS) CFLAGS_RELEASE := $(CFLAGS) $(RELEASE_FLAGS) # Collect source files +RISCV_BINARY := $(CURDIR)/cx9261A_api/MultiPointsCalib_v1.8.bin BIN_SRC := $(CURDIR)/cx9261a_riscv_bin.c SRCS := $(CURDIR)/cx9261adriver_c.cpp $(CURDIR)/cx9261A_api/cx9261adriver.cpp TEST_SRC := ld_test.c @@ -34,7 +35,7 @@ PACKAGE_HEADERS := ./cx9261adriver_c.h # Default target all: $(foreach arch, $(ARCHS), $(BUILD_DIR)/$(arch)/lib$(PROJECT_NAME)_dbg.a $(BUILD_DIR)/$(arch)/lib$(PROJECT_NAME).a) -$(BIN_SRC): $(CURDIR)/cx9261A_api/MultiPointsCalib_v1.7.bin +$(BIN_SRC): $(RISCV_BINARY) $(CURDIR)/tools/gen_riscvbin.py $< -o $(CURDIR) # Rule to create debug libraries for different architectures diff --git a/cx9261A_api/ChangeLog.txt b/cx9261A_api/ChangeLog.txt new file mode 100644 index 0000000..fd4bf24 --- /dev/null +++ b/cx9261A_api/ChangeLog.txt @@ -0,0 +1,49 @@ +ver 1.4.0 +API变动: +1. 增加了多点跳频相关函数,configRxMultiPointsQec,readRxCalibPredis,saveRxCalibPredis需要结合片上处理器程序一起使用 +2. configPll*函数现在接收Clock结构体而不是原来的参考时钟值(double) + +驱动优化: +1. configPll*函数现在不再使用std::map容器储存寄存器值,改为使用std::vector以增加在高速跳频情况下的响应速度 +2. 枚举变量显式指定大小为std::uint8_t,即unsigned char + + +ver 1.3.0 +API变动: +1. configBBPLL函数现在需要传入CX9261AConfiguration结构体,而不是原来的Clock结构体 +2. 增加txCalib函数,接受CX9261AConfiguration结构体,对Tx通道进行校准,包含原来的txBisectionQecCalib以及txBisectionDcCalib,并且自动进行电源管理配置 +3. configInterface函数现在需要传入Interface结构体,不再需要传入adc速率 +4. 增加IOMode枚举类型,包含CMOS,LVDS顺序模式和LVDS奇偶模式 +5. Interface结构体现在增加一个IOMode类型的变量,指示芯片接口模式 + +驱动优化: +1. configBBPLL函数现在会配置IOMode相关以及adc速率相关寄存器 +2. pll环路参数选择范围小幅度变化 +3. Rx窄带校准使用新的校准方法 +4. waitRxTSTFinished函数现在会在十次qecDelay后返回 +5. configPll函数现在在不同频率下行为一致 +6. configInterface函数现在增加IOMode相关寄存器配置,删除adc速率相关寄存器配置 +7. initialRxChannel函数修改0x706/0x722/0x73E寄存器配置,从0x65改到0x6D + + + +ver 1.2.0 +1. BUG FIX:配置流程中需要先切换到休眠模式再切换到校准模式 +2. configTxChannelFrequency函数需要在configTxChannel函数之前调用 + +ver 1.1.0 +1. BUG FIX:修复了0x6C3寄存器在选择通道来源Off并且使用外本振时值不对的错误。 +2. waitRxTSTFinished函数修改,现在会在校准结束后寄存器0x77E写入0x00,而不是在原来的恢复寄存器部分。 +3. initialTxChannel函数修改,现在initialTxChannel不再需要输入参数,原来需要输入通道本振频率配置的寄存器移到了新的函数configTxChannelFrequency中。 +4. rxTSTCalib函数修改,现在rxTSTCalib不再自动调用waitRxTSTFinished函数。 +5. BUG FIX:修复了rxTSTCalib函数在tx通道配置为外本振时不能正确校准的错误。 +6. beforeQecState函数修改,移除了冗余的寄存器状态保存。 +7. configQecCalib函数修改,删除了在不进行Tx校准时仍然进行寄存器恢复的代码。 +8. configTxChannelFrequency函数添加,用于配置Tx通道本振频率相关寄存器。 +9. 代码格式化。 +10. main.cpp demo调整。 + +ver 1.0.1 +1. 添加了configTxChannel函数,内部调用的configTxBandwidth和configTxMixer函数 +2. 校准过程中的pll锁定增加了锁定判断 +3. 添加了配合Demo工程的configFPGA函数以及对应的setPin函数 \ No newline at end of file diff --git a/cx9261A_api/MultiPointsCalib_v1.7.bin b/cx9261A_api/MultiPointsCalib_v1.8.bin old mode 100755 new mode 100644 similarity index 67% rename from cx9261A_api/MultiPointsCalib_v1.7.bin rename to cx9261A_api/MultiPointsCalib_v1.8.bin index 1e24cea..9b0f74c Binary files a/cx9261A_api/MultiPointsCalib_v1.7.bin and b/cx9261A_api/MultiPointsCalib_v1.8.bin differ diff --git a/cx9261A_api/cx9261adriver.cpp b/cx9261A_api/cx9261adriver.cpp index bbf1cbb..87e74a1 100644 --- a/cx9261A_api/cx9261adriver.cpp +++ b/cx9261A_api/cx9261adriver.cpp @@ -1,8 +1,4 @@ -// ReSharper disable CppCompileTimeConstantCanBeReplacedWithBooleanConstant -// ReSharper disable CppUseRangeAlgorithm -// ReSharper disable CppUseStructuredBinding -// ReSharper disable CppTooWideScopeInitStatement -#include "cx9261adriver.h" +#include "cx9261adriver.h" #include "utils.h" #ifdef __cplusplus @@ -1061,15 +1057,15 @@ void rxCalib(const CX9261AConfiguration& config, const RxChannel chan) { LOGGING(toString(chan) + "校准"); if (config.calib.rxMethod == CalibMethod::TST) { - if (chan == RxChannel::Rx1 && config.pllSource.rx1Source == LoSource::Off) { + if (chan == RxChannel::Rx1 && config.pllSource.rx1Source == LoSource::Off && !config.pllSource.rxUseExt) { LOGGING(toString(chan) + " OFF") return; } - if (chan == RxChannel::Rx2 && config.pllSource.rx2Source == LoSource::Off) { + if (chan == RxChannel::Rx2 && config.pllSource.rx2Source == LoSource::Off && !config.pllSource.rxUseExt) { LOGGING(toString(chan) + " OFF") return; } - if (chan == RxChannel::Rx3 && config.pllSource.rx3Source == LoSource::Off) { + if (chan == RxChannel::Rx3 && config.pllSource.rx3Source == LoSource::Off && !config.pllSource.rxUseExt) { LOGGING(toString(chan) + " OFF") return; } @@ -1443,7 +1439,7 @@ void configQecCalib(const CX9261AConfiguration& config) configCalibMethod(config.calib); // Rx校准只在有任意Rx通道不是Off时发生 const bool calibRx = config.pllSource.rx1Source != LoSource::Off || config.pllSource.rx2Source != LoSource::Off - || config.pllSource.rx3Source != LoSource::Off; + || config.pllSource.rx3Source != LoSource::Off || config.pllSource.rxUseExt; if (calibRx) { rxCalib(config, RxChannel::Rx1); rxCalib(config, RxChannel::Rx2); @@ -1504,7 +1500,8 @@ void configQecCalib(const CX9261AConfiguration& config) } } // Tx校准只在任意Tx通道不是Off时发生 - const bool calibTx = config.pllSource.tx1Source != LoSource::Off || config.pllSource.tx2Source != LoSource::Off; + const bool calibTx = config.pllSource.tx1Source != LoSource::Off || config.pllSource.tx2Source != LoSource::Off + || config.pllSource.txUseExt; if (calibTx) { txCalib(config); restoreQecState(regsState); @@ -1656,7 +1653,7 @@ void configInterface(const Interface& interface) if (interface.workMode == WorkMode::FDD) writeSpi(0x201, 0x00); else if (interface.portMode == PortMode::Single && interface.trMode == TrMode::R2T2) - writeSpi(0x201, 0x3F); + writeSpi(0x201, 0x3D); else writeSpi(0x201, 0x15); // 0x202 @@ -2081,7 +2078,7 @@ void configFPGA(const Interface& interface) setPin(40, 1); setPin(32, 1); - setPin(7, interface.ioMode == IOMode::CMOS ? 0 : 1); + setPin(7, interface.ioMode == IOMode::LVDS_E ? 0 : 1); setPin(34, 1); setPin(34, 0); diff --git a/cx9261A_api/cx9261adriver.h b/cx9261A_api/cx9261adriver.h index 308dad7..4b251e4 100644 --- a/cx9261A_api/cx9261adriver.h +++ b/cx9261A_api/cx9261adriver.h @@ -5,7 +5,7 @@ #ifndef CX9261ADRIVER_CX9261ADRIVER_H #define CX9261ADRIVER_CX9261ADRIVER_H -#define VERSION 1.9.0 +#define VERSION 1.10.0 #include "defs.h"