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
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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函数
|
||||
Executable → Regular
BIN
Binary file not shown.
@@ -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);
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user