From 12457af5365d426b22f36ef496a5aeba0011064c Mon Sep 17 00:00:00 2001 From: Gatsby Date: Fri, 1 Nov 2024 11:11:37 +0800 Subject: [PATCH] update: upgrade CX926A C++ API to v1.10 and RISC-V firmware to v1.8 - Updated C++ library wrapper to support latest library features in v1.10 - Synchronized with RISC-V firmware update to v1.8 for compatibility --- Makefile | 3 +- cx9261A_api/ChangeLog.txt | 49 ++++++++++++++++++ ...lib_v1.7.bin => MultiPointsCalib_v1.8.bin} | Bin 61516 -> 61516 bytes cx9261A_api/cx9261adriver.cpp | 21 ++++---- cx9261A_api/cx9261adriver.h | 2 +- 5 files changed, 61 insertions(+), 14 deletions(-) create mode 100644 cx9261A_api/ChangeLog.txt rename cx9261A_api/{MultiPointsCalib_v1.7.bin => MultiPointsCalib_v1.8.bin} (67%) mode change 100755 => 100644 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 1e24cea1557bf55d763bf49d39f95ad2d7e2806a..9b0f74c328b4ad25f06b6eace637cfc9425139d5 GIT binary patch delta 9182 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 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"