Browse Source

修改REG地址

xsync_v2
zhaohe 2 years ago
parent
commit
b6ba9ab22e
  1. 65
      xsync.cpp
  2. 50
      xsync.hpp
  3. 43
      xsync_regs.hpp

65
xsync.cpp

@ -304,6 +304,35 @@ list<string> OutputSigLevelTypeStrSet() {
} // namespace timecode_output_module
namespace camera_sync_packet_generator_module {
static map<string, TriggerSigType_t> Str2TriggerSigTypeMap = {
{"off", koff}, //
{"internal_genlock_sig", kinternal_genlock_sig},
{"ext_genlock_sig", kext_genlock_sig},
};
string TriggerSigType2Str(TriggerSigType_t type) {
for (auto &item : Str2TriggerSigTypeMap) {
if (item.second == type) return item.first;
}
return "unkown";
}
TriggerSigType_t Str2TriggerSigType(string type) {
auto it = Str2TriggerSigTypeMap.find(type);
if (it != Str2TriggerSigTypeMap.end()) {
return it->second;
}
return koff;
}
list<string> TriggerSigTypeStrSet() {
list<string> ret;
for (auto &item : Str2TriggerSigTypeMap) {
ret.push_back(item.first);
}
return ret;
}
} // namespace camera_sync_packet_generator_module
} // namespace xsync
static XsyncTimecode_t timecode64ToXsyncTimeCode(Timecode64_t tc64) {
@ -1003,3 +1032,39 @@ xs_error_code_t Xsync::TimecodeOutputModule_getHeadphoneOutputLevel(timecode_out
level = (timecode_output_module::OutputSigLevelType_t)readbak;
return kxs_ec_success;
}
xs_error_code_t Xsync::CameraSyncPacketGeneratorModule_setTriggerSig(camera_sync_packet_generator_module::TriggerSigType_t sig) {
uint32_t readbak = 0;
DO_XSYNC(reg_write(reg::kcamera_sync_out_camera_sync_select, sig, readbak, 10));
return kxs_ec_success;
}
xs_error_code_t Xsync::CameraSyncPacketGeneratorModule_getTriggerSig(camera_sync_packet_generator_module::TriggerSigType_t &sig) {
uint32_t readbak = 0;
DO_XSYNC(reg_read(reg::kcamera_sync_out_camera_sync_select, readbak, 10));
sig = (camera_sync_packet_generator_module::TriggerSigType_t)readbak;
return kxs_ec_success;
}
xs_error_code_t Xsync::CameraSyncPacketGeneratorModule_setReportPeriod(uint32_t packetNum) {
uint32_t readbak = 0;
if (packetNum == 0) packetNum = 1;
DO_XSYNC(reg_write(reg::kstm32_camera_sync_signal_count_report_period, packetNum, readbak, 10));
return kxs_ec_success;
}
xs_error_code_t Xsync::CameraSyncPacketGeneratorModule_getReportPeriod(uint32_t &packetNum) {
uint32_t readbak = 0;
DO_XSYNC(reg_read(reg::kstm32_camera_sync_signal_count_report_period, readbak, 10));
packetNum = readbak;
return kxs_ec_success;
}
xs_error_code_t Xsync::CameraSyncPacketGeneratorModule_getPacketIndex(uint32_t &index) {
uint32_t readbak = 0;
DO_XSYNC(reg_read(reg::kstm32_camera_sync_signal_count, readbak, 10));
index = readbak;
return kxs_ec_success;
}
xs_error_code_t Xsync::CameraSyncPacketGeneratorModule_clearPacketIndex() {
uint32_t readbak = 0;
DO_XSYNC(reg_write(reg::kstm32_camera_sync_signal_count, 0, readbak, 10));
return kxs_ec_success;
}

50
xsync.hpp

@ -162,6 +162,19 @@ list<string> OutputSigLevelTypeStrSet();
} // namespace timecode_output_module
namespace camera_sync_packet_generator_module {
typedef enum {
koff = 0, // 关闭输出
kinternal_genlock_sig = 1, // 外部genlock信号
kext_genlock_sig = 2, // 内部genlock信号
} TriggerSigType_t;
string TriggerSigType2Str(TriggerSigType_t type);
TriggerSigType_t Str2TriggerSigType(string type);
list<string> TriggerSigTypeStrSet();
} // namespace camera_sync_packet_generator_module
class Xsync {
public:
private:
@ -369,6 +382,43 @@ class Xsync {
public:
/*******************************************************************************
* *
*******************************************************************************/
/**
* @brief
*
* @param sig
* @return xs_error_code_t
*/
xs_error_code_t CameraSyncPacketGeneratorModule_setTriggerSig(camera_sync_packet_generator_module::TriggerSigType_t sig);
xs_error_code_t CameraSyncPacketGeneratorModule_getTriggerSig(camera_sync_packet_generator_module::TriggerSigType_t &sig);
/**
* @brief
*
* @param packetNum :30 30
* @return xs_error_code_t
*/
xs_error_code_t CameraSyncPacketGeneratorModule_setReportPeriod(uint32_t packetNum);
xs_error_code_t CameraSyncPacketGeneratorModule_getReportPeriod(uint32_t &packetNum);
/**
* @brief
*
* @param index
* @return xs_error_code_t
*/
xs_error_code_t CameraSyncPacketGeneratorModule_getPacketIndex(uint32_t &index);
/**
* @brief
*
* @return xs_error_code_t
*/
xs_error_code_t CameraSyncPacketGeneratorModule_clearPacketIndex();
public:
/*******************************************************************************
* TTL输出模块控制 *
*******************************************************************************/
/**

43
xsync_regs.hpp

@ -13,8 +13,9 @@ namespace xsync {
namespace reg {
using namespace std;
#define REG_ADD_OFF_STM32 (0x0000)
#define REG_ADD_OFF_FPGA_TEST (0x00020)
#define REG_ADD_OFF_STM32 (0x0000)
#define REG_ADD_OFF_STM32_CONFIG_START_ADD (0x0010)
#define REG_ADD_OFF_FPGA_TEST (0x00020)
// 控制中心寄存器地址
#define REG_ADD_OFF_SIG_GENERATOR (0x00030)
// 输入组件
@ -25,13 +26,13 @@ using namespace std;
#define REG_ADD_OFF_TIMECODE_IN (0x0140)
#define REG_ADD_OFF_GENLOCK_IN (0x0150)
// 输出组件
#define REG_ADD_OFF_TTLOUT1 (0x0200)
#define REG_ADD_OFF_TTLOUT2 (0x0210)
#define REG_ADD_OFF_TTLOUT3 (0x0220)
#define REG_ADD_OFF_TTLOUT4 (0x0230)
#define REG_ADD_OFF_TIMECODE_OUT (0x0240)
#define REG_ADD_OFF_GENLOCK_OUT (0x0250)
#define REG_ADD_OFF_STM32_IF (0x0260)
#define REG_ADD_OFF_TTLOUT1 (0x0200)
#define REG_ADD_OFF_TTLOUT2 (0x0210)
#define REG_ADD_OFF_TTLOUT3 (0x0220)
#define REG_ADD_OFF_TTLOUT4 (0x0230)
#define REG_ADD_OFF_TIMECODE_OUT (0x0240)
#define REG_ADD_OFF_GENLOCK_OUT (0x0250)
#define REG_ADD_OFF_CAMERA_SYNC_OUT (0x0260)
// 调试组件
#define REG_ADD_OFF_DEBUGER (0x0300)
typedef enum {
@ -53,15 +54,16 @@ typedef enum {
* @brief
* REG 16(32) STM32配置寄存器0
*/
kstm32_obtaining_ip_mode = REG_ADD_OFF_STM32 + 0,
kstm32_ip = REG_ADD_OFF_STM32 + 1,
kstm32_gw = REG_ADD_OFF_STM32 + 2,
kstm32_netmask = REG_ADD_OFF_STM32 + 3,
kstm32_camera_sync_signal_count = REG_ADD_OFF_STM32 + 4, // 写任意数值之后清零
kstm32_config0 = REG_ADD_OFF_STM32 + 5, // bit0: timecode report enable, bit1: camera sync report enable
kstm32_obtaining_ip_mode = REG_ADD_OFF_STM32_CONFIG_START_ADD + 0,
kstm32_ip = REG_ADD_OFF_STM32_CONFIG_START_ADD + 1,
kstm32_gw = REG_ADD_OFF_STM32_CONFIG_START_ADD + 2,
kstm32_netmask = REG_ADD_OFF_STM32_CONFIG_START_ADD + 3,
kstm32_config0 = REG_ADD_OFF_STM32_CONFIG_START_ADD + 4, // bit0: timecode report enable, bit1: camera sync report enable
kstm32_camera_sync_signal_count = REG_ADD_OFF_STM32_CONFIG_START_ADD + 5, // 写任意数值之后清零
kstm32_camera_sync_signal_count_report_period = REG_ADD_OFF_STM32_CONFIG_START_ADD + 6, // 上报周期,单位为帧数
kstm32_action0 = REG_ADD_OFF_STM32 + 14, // action reg
kstm32_action_val0 = REG_ADD_OFF_STM32 + 15, // action val reg
kstm32_action0 = REG_ADD_OFF_STM32_CONFIG_START_ADD + 14, // action reg
kstm32_action_val0 = REG_ADD_OFF_STM32_CONFIG_START_ADD + 15, // action val reg
/**
* @brief
@ -128,12 +130,6 @@ typedef enum {
* @brief
* REG_ADD_OFF_TIMECODE_OUT
*/
// reg [31:0] r0_timecode_select;
// reg [31:0] r1_timecode0;
// reg [31:0] r2_timecode1;
// reg [31:0] r3_timecode_format;
// reg [31:0] r4_bnc_outut_level_select;
// reg [31:0] r5_headphone_outut_level_select;
ktimecode_out_timecode_select = REG_ADD_OFF_TIMECODE_OUT + 0,
ktimecode_out_timecode0 = REG_ADD_OFF_TIMECODE_OUT + 1,
@ -142,6 +138,7 @@ typedef enum {
ktimecode_out_bnc_outut_level_select = REG_ADD_OFF_TIMECODE_OUT + 4,
ktimecode_out_headphone_outut_level_select = REG_ADD_OFF_TIMECODE_OUT + 5,
kcamera_sync_out_camera_sync_select = REG_ADD_OFF_CAMERA_SYNC_OUT + 0,
} RegAdd_t;

Loading…
Cancel
Save