You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

166 lines
6.9 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. #pragma once
  2. #include <fstream>
  3. #include <functional>
  4. #include <iostream>
  5. #include <list>
  6. #include <map>
  7. #include <memory>
  8. #include <set>
  9. #include <sstream>
  10. #include <string>
  11. #include <vector>
  12. namespace xsync {
  13. namespace reg {
  14. using namespace std;
  15. #define REG_ADD_OFF_STM32 (0x0000)
  16. #define REG_ADD_OFF_STM32_CONFIG_START_ADD (0x0010)
  17. #define REG_ADD_OFF_FPGA_TEST (0x00020)
  18. // 控制中心寄存器地址
  19. #define REG_ADD_OFF_SIG_GENERATOR (0x00030)
  20. // 输入组件
  21. #define REG_ADD_OFF_TTLIN1 (0x0100)
  22. #define REG_ADD_OFF_TIMECODE_IN (0x0140)
  23. #define REG_ADD_OFF_GENLOCK_IN (0x0150)
  24. // 输出组件
  25. #define REG_ADD_OFF_TTLOUT1 (0x0200)
  26. #define REG_ADD_OFF_TTLOUT2 (0x0210)
  27. #define REG_ADD_OFF_TTLOUT3 (0x0220)
  28. #define REG_ADD_OFF_TTLOUT4 (0x0230)
  29. #define REG_ADD_OFF_TIMECODE_OUT (0x0240)
  30. #define REG_ADD_OFF_GENLOCK_OUT (0x0250)
  31. #define REG_ADD_OFF_CAMERA_SYNC_OUT (0x0260)
  32. // 调试组件
  33. #define REG_ADD_OFF_DEBUGER (0x0300)
  34. typedef enum {
  35. /**
  36. * @brief
  37. * REG 0(16)
  38. */
  39. ksoftware_version = 0,
  40. kmanufacturer0 = 1,
  41. kmanufacturer1 = 2,
  42. kproduct_type_id = 3,
  43. ksn_id0 = 4,
  44. ksn_id1 = 5,
  45. ksn_id2 = 6,
  46. kmac0 = 7,
  47. kmac1 = 8,
  48. /**
  49. * @brief
  50. * REG 16(32) STM32配置寄存器0
  51. */
  52. kstm32_obtaining_ip_mode = REG_ADD_OFF_STM32_CONFIG_START_ADD + 0,
  53. kstm32_ip = REG_ADD_OFF_STM32_CONFIG_START_ADD + 1,
  54. kstm32_gw = REG_ADD_OFF_STM32_CONFIG_START_ADD + 2,
  55. kstm32_netmask = REG_ADD_OFF_STM32_CONFIG_START_ADD + 3,
  56. kstm32_config0 = REG_ADD_OFF_STM32_CONFIG_START_ADD + 4, // bit0: timecode report enable, bit1: camera sync report enable
  57. kstm32_camera_sync_signal_count = REG_ADD_OFF_STM32_CONFIG_START_ADD + 5, // 写任意数值之后清零
  58. kstm32_camera_sync_signal_count_report_period = REG_ADD_OFF_STM32_CONFIG_START_ADD + 6, // 上报周期,单位为帧数
  59. kstm32_action0 = REG_ADD_OFF_STM32_CONFIG_START_ADD + 14, // action reg
  60. kstm32_action_val0 = REG_ADD_OFF_STM32_CONFIG_START_ADD + 15, // action val reg
  61. /**
  62. * @brief
  63. * REG 48(32) FPGA配置寄存器0
  64. */
  65. kfpga_test_reg0 = REG_ADD_OFF_FPGA_TEST + 0,
  66. kfpga_test_reg1 = REG_ADD_OFF_FPGA_TEST + 1,
  67. kfpga_test_reg2 = REG_ADD_OFF_FPGA_TEST + 2,
  68. kfpga_test_reg3 = REG_ADD_OFF_FPGA_TEST + 3,
  69. kfpga_test_reg4 = REG_ADD_OFF_FPGA_TEST + 4,
  70. kfpga_test_reg5 = REG_ADD_OFF_FPGA_TEST + 5,
  71. kfpga_test_reg6 = REG_ADD_OFF_FPGA_TEST + 6,
  72. kfpga_test_reg7 = REG_ADD_OFF_FPGA_TEST + 7,
  73. kfpga_test_reg8 = REG_ADD_OFF_FPGA_TEST + 8,
  74. kfpga_test_reg9 = REG_ADD_OFF_FPGA_TEST + 9,
  75. kfpga_test_rega = REG_ADD_OFF_FPGA_TEST + 10,
  76. kfpga_test_regb = REG_ADD_OFF_FPGA_TEST + 11,
  77. kfpga_test_regc = REG_ADD_OFF_FPGA_TEST + 12,
  78. kfpga_test_regd = REG_ADD_OFF_FPGA_TEST + 13,
  79. kfpga_test_rege = REG_ADD_OFF_FPGA_TEST + 14,
  80. kfpga_test_regf = REG_ADD_OFF_FPGA_TEST + 15,
  81. /**
  82. * @brief
  83. */
  84. kSigGenerator_ctl = REG_ADD_OFF_SIG_GENERATOR + 0, // 控制模式选择寄存器
  85. kSigGenerator_genlock_format = REG_ADD_OFF_SIG_GENERATOR + 2, // genlock格式寄存器
  86. kSigGenerator_timecode_format = REG_ADD_OFF_SIG_GENERATOR + 3, // timecode格式寄存器
  87. kSigGenerator_control_trigger_reg = REG_ADD_OFF_SIG_GENERATOR + 4, // StartSigCtrl[0]
  88. kSigGenerator_timecode0 = REG_ADD_OFF_SIG_GENERATOR + 6, // timecode0
  89. kSigGenerator_timecode1 = REG_ADD_OFF_SIG_GENERATOR + 7, // timecode1
  90. kSigGenerator_timecode_start0 = REG_ADD_OFF_SIG_GENERATOR + 8, // 时码启动寄存器0
  91. kSigGenerator_timecode_start1 = REG_ADD_OFF_SIG_GENERATOR + 9, // 时码启动寄存器1
  92. kSigGenerator_work_state = REG_ADD_OFF_SIG_GENERATOR + 12, // 工作状态 read only
  93. /**
  94. * @brief TTL输出模块
  95. */
  96. kttlout1_input_sig_slt = REG_ADD_OFF_TTLOUT1 + 0,
  97. kttlout1_output_sig_slt = REG_ADD_OFF_TTLOUT1 + 1,
  98. kttlout1_config = REG_ADD_OFF_TTLOUT1 + 2,
  99. kttlout1_pulse_mode_duration = REG_ADD_OFF_TTLOUT1 + 3,
  100. kttlout1_pulse_mode_delay = REG_ADD_OFF_TTLOUT1 + 4,
  101. kttlout2_input_sig_slt = REG_ADD_OFF_TTLOUT2 + 0,
  102. kttlout2_output_sig_slt = REG_ADD_OFF_TTLOUT2 + 1,
  103. kttlout2_config = REG_ADD_OFF_TTLOUT2 + 2,
  104. kttlout2_pulse_mode_duration = REG_ADD_OFF_TTLOUT2 + 3,
  105. kttlout2_pulse_mode_delay = REG_ADD_OFF_TTLOUT2 + 4,
  106. kttlout3_input_sig_slt = REG_ADD_OFF_TTLOUT3 + 0,
  107. kttlout3_output_sig_slt = REG_ADD_OFF_TTLOUT3 + 1,
  108. kttlout3_config = REG_ADD_OFF_TTLOUT3 + 2,
  109. kttlout3_pulse_mode_duration = REG_ADD_OFF_TTLOUT3 + 3,
  110. kttlout3_pulse_mode_delay = REG_ADD_OFF_TTLOUT3 + 4,
  111. kttlout4_input_sig_slt = REG_ADD_OFF_TTLOUT4 + 0,
  112. kttlout4_output_sig_slt = REG_ADD_OFF_TTLOUT4 + 1,
  113. kttlout4_config = REG_ADD_OFF_TTLOUT4 + 2,
  114. kttlout4_pulse_mode_duration = REG_ADD_OFF_TTLOUT4 + 3,
  115. kttlout4_pulse_mode_delay = REG_ADD_OFF_TTLOUT4 + 4,
  116. /**
  117. * @brief
  118. * REG_ADD_OFF_TIMECODE_OUT
  119. */
  120. ktimecode_out_timecode_select = REG_ADD_OFF_TIMECODE_OUT + 0,
  121. ktimecode_out_timecode0 = REG_ADD_OFF_TIMECODE_OUT + 1,
  122. ktimecode_out_timecode1 = REG_ADD_OFF_TIMECODE_OUT + 2,
  123. ktimecode_out_timecode_format = REG_ADD_OFF_TIMECODE_OUT + 3,
  124. ktimecode_out_bnc_outut_level_select = REG_ADD_OFF_TIMECODE_OUT + 4,
  125. ktimecode_out_headphone_outut_level_select = REG_ADD_OFF_TIMECODE_OUT + 5,
  126. kcamera_sync_out_camera_sync_select = REG_ADD_OFF_CAMERA_SYNC_OUT + 0,
  127. /*******************************************************************************
  128. * *
  129. *******************************************************************************/
  130. ktimecode_in_timecode_sig_selt = REG_ADD_OFF_TIMECODE_IN + 0,
  131. ktimecode_in_timecode_format = REG_ADD_OFF_TIMECODE_IN + 1,
  132. ktimecode_in_timecode0 = REG_ADD_OFF_TIMECODE_IN + 2,
  133. ktimecode_in_timecode1 = REG_ADD_OFF_TIMECODE_IN + 3,
  134. /*******************************************************************************
  135. * TTL输入模块 *
  136. *******************************************************************************/
  137. kttlin_en = REG_ADD_OFF_TTLIN1 + 0,
  138. kttlin1_devide_factor = REG_ADD_OFF_TTLIN1 + 1,
  139. kttlin2_devide_factor = REG_ADD_OFF_TTLIN1 + 2,
  140. kttlin3_devide_factor = REG_ADD_OFF_TTLIN1 + 3,
  141. kttlin4_devide_factor = REG_ADD_OFF_TTLIN1 + 4,
  142. kttlin1_filter_factor = REG_ADD_OFF_TTLIN1 + 5,
  143. kttlin2_filter_factor = REG_ADD_OFF_TTLIN1 + 6,
  144. kttlin3_filter_factor = REG_ADD_OFF_TTLIN1 + 7,
  145. kttlin4_filter_factor = REG_ADD_OFF_TTLIN1 + 8,
  146. } RegAdd_t;
  147. } // namespace reg
  148. } // namespace xsync