last week

This commit is contained in:
2026-06-15 09:57:51 +08:00
parent a9341db9c8
commit be39714c5e
16 changed files with 423 additions and 181 deletions
+126 -102
View File
@@ -51,77 +51,6 @@
#include "rfid/rfidfunction.h"
#include <QElapsedTimer>
#define PRINT_CTRL_ADDR_BASE 0xa400
#define PRINT_DIGITAL_CHAR_BASE_ADDR (0xe000)
#define WRITE_CALENDAR_DAT_ADDR (0xb100)
#define RECYCLE_SLOT_STOP 0x1
#define RECYCLE_SLOT_CLOSE 0x2
#define RECYCLE_SLOT_OPEN 0x0
#define PRINT_START_STOP_CTRL (PRINT_CTRL_ADDR_BASE + 0x40)
#define PRINT_RESET_PRODUCT_CNT (PRINT_CTRL_ADDR_BASE + 0x41)
#define RECYCLE_SLOT_CTRL_ADDR (PRINT_CTRL_ADDR_BASE + 0x42)
#define RESUME_FAULT_ADDR (PRINT_CTRL_ADDR_BASE + 0x43)
#define VAR_CNT_ADDR (PRINT_CTRL_ADDR_BASE + 0x50)
#define VAR_CTRL_REG_ADDR (PRINT_CTRL_ADDR_BASE + 0x51)
#define MAININKCTRL_ADDR (PRINT_CTRL_ADDR_BASE + 0x59)
//#define MAININKCTRL_ADDR (PRINT_CTRL_ADDR_BASE + 0x5a)
#define WRITE_CNT1GROUP_COUNT 0xB13E
#define WRITE_CNT1GROUP_NUM 0xB13F
#define WRITE_CNT1GROUP_SETTING 0xB140
#define READ_CNT1GROUP_CURR_LOOP 0x0190
#define READ_CNT1GROUP_CURR_INDEX 0x0194
#define FPGA_STATUS_BASE_ADDR 0x0000
#define FPGA_VERSOIN_NUM (FPGA_STATUS_BASE_ADDR + 0xfe)
#define READ_BUILD_DAT (FPGA_STATUS_BASE_ADDR + 0xf0)
#define READ_PRINTDATA_XOR (FPGA_STATUS_BASE_ADDR + 0xf2)
#define READ_SYNC_COUNTER (FPGA_STATUS_BASE_ADDR + 0xf4)
#define PHASE_DETECT_HIGH_VOLTAGE_TM 0x100
#define READ_CALENDAR_DAT_ADDR 0x180
#define READ_RAND_FIFO_ADDR 0x200 // 读FPGA的随机码FIFO
#define ROW_PRINT_SEQNENCE_ADDR 0xb200 //行扫描顺序
#define DAC_TABLE_ADDR 0xb280 //每一个行点对应的DAC值
#define NOT_GAP_DAC_TABLE_ADDR 0xb380 //每一个不隔点对应的DAC值
#define FULL_COL_DAC_TABLE_ADDR 0xb480 //每一个不隔点对应的DAC值
#define MATCH_FULL_DAC_TABLE_ADDR 0xB500 // 匹配满列 DAC表 起始地址
#define MATCH_1_DAC_TABLE_ADDR 0xB600 // 匹配单点 DAC表 起始地址
#define MATCH_2_DAC_TABLE_ADDR 0xB700 // 匹配两点 DAC表 起始地址
#define MATCH_3_DAC_TABLE_ADDR 0xB800 // 匹配三点 DAC表 起始地址
#define MATCH_4_DAC_TABLE_ADDR 0xB900 // 匹配四点 DAC表 起始地址
#define MATCH_5_DAC_TABLE_ADDR 0xBA00 // 匹配五点 DAC表 起始地址
#define MATCH_G1_DAC_TABLE_ADDR 0xBC00 // 匹配空一点 DAC表 起始地址
#define MATCH_G2_DAC_TABLE_ADDR 0xBC80 // 匹配空两点 DAC表 起始地址
#define MATCH_G3_DAC_TABLE_ADDR 0xBD00 // 匹配空三点 DAC表 起始地址
#define MATCH_G4_DAC_TABLE_ADDR 0xBD80 // 匹配空四点 DAC表 起始地址
#define MATCH_G5_DAC_TABLE_ADDR 0xBE00 // 匹配空五点 DAC表 起始地址
#define MATCH_G6_DAC_TABLE_ADDR 0xBE80 // 匹配空六点 DAC表 起始地址
#define MATCH_P1_DAC_TABLE_ADDR 0xBF00 // 匹配预备一 DAC表 起始地址
#define MATCH_P2_DAC_TABLE_ADDR 0xBF80 // 匹配预备二 DAC表 起始地址
#define MATCH_C_DAC_TABLE_ADDR 0xC000 // 匹配复杂 DAC表 起始地址
#define WRITE_COUNTER3_ADDR (0xb150)
#define WRITE_COUNTER4_ADDR (0xb164)
//#define READ_CNT3_CURVALUE_ADDR 0x01b4
#define READ_CNT3_CURVALUE_ADDR 0x1834
#define LOCADDR '1'
#define NOLEDLIGHT 0x10
#define REDLIGHTCODE 0X11
#define YELLOWLIGHTCODE 0X13
#define GREENLIGHTCODE 0X12
unsigned short DACArray[64];
quint16 notGapDACArray[64];
quint16 fullColDACArray[64];
@@ -2629,16 +2558,16 @@ int DevOp::writeFpgaPrintPara(bool ignoreWarn){
}
}
}
else if(type == 6 || type == 8){
else if(sysPara->status.build_dat.builTime == 73){
if(sysPara->status.currVoltageVersion != sysPara->status.lastVoltageVersion){
writeDacValue2Fpga_No72NewVoltData();
writeDacValue2Fpga_No73();
sysPara->status.lastVoltageVersion = sysPara->status.currVoltageVersion;
}
}
else if(sysPara->status.build_dat.builTime == 73){
else if(type == 6 || type == 8){
if(sysPara->status.currVoltageVersion != sysPara->status.lastVoltageVersion){
writeDacValue2Fpga_No73();
writeDacValue2Fpga_No72NewVoltData();
sysPara->status.lastVoltageVersion = sysPara->status.currVoltageVersion;
}
}
@@ -2827,38 +2756,54 @@ int DevOp::writeFpgaPrintPara(bool ignoreWarn){
sysPara->status.configDone = 1;
return 0;
}
template<typename T>
QString arrayToStr(const T* arr, int n) {
if (n <= 0) return QString();
QString result;
for (int i = 0; i < n; ++i) {
if (i != 0) result += ',';
result += QString::number(arr[i]);
}
return result;
}
void DevOp::writeDacValue2Fpga_No73()
{
// LogInfo::setRunStatusText(tr("No73 send DAC Data."));
quint16 matchFullDACArray[48];
quint16 matchStealDACArray[48];
quint16 matchContinousDACArray[48];
LogInfo::setRunStatusText(tr("No73 send DAC Data."));
static quint16 matchFullDACArray[48];
static quint16 matchStealDACArray[48];
static quint16 matchContinousDACArray[48];
quint16 rowDelayArray[64];
quint16 head1RowDelayArray[64];
static quint16 rowDelayArray[64];
static quint8 head1RowDelayArray[64];
static quint8 fullColRowDelayArray[64];
quint8 adjDACParameter[64];
static quint8 adjDACParameter[64];
quint8 matchTotalTableDACArray[15][64];
quint8* matchOneDACArray = &matchTotalTableDACArray[0][0];
quint8* matchTwoDACArray = &matchTotalTableDACArray[1][0];
quint8* matchThreeDACArray = &matchTotalTableDACArray[3][0];
quint8* matchFourDACArray = &matchTotalTableDACArray[6][0];
quint8* matchFiveDACArray = &matchTotalTableDACArray[10][0];
static quint16 matchTotalTableDACArray[15][64];
quint16* matchOneDACArray = &matchTotalTableDACArray[0][0];
quint16* matchTwoDACArray = &matchTotalTableDACArray[1][0];
quint16* matchThreeDACArray = &matchTotalTableDACArray[3][0];
quint16* matchFourDACArray = &matchTotalTableDACArray[6][0];
quint16* matchFiveDACArray = &matchTotalTableDACArray[10][0];
quint8 matchPrevious1DotDACArray[48];
quint8 matchPrevious2DotDACArray[48];
quint8 matchPrevious3DotDACArray[48];
quint8 matchPrevious4DotDACArray[48];
quint8 matchPrevious5DotDACArray[48];
quint8 matchGapDACArray[64][5];
quint8 matchP3dotGapDACArray[64][5];
static quint8 matchPrevious1DotDACArray[48];
static quint8 matchPrevious2DotDACArray[48];
static quint8 matchPrevious3DotDACArray[48];
static quint8 matchPrevious4DotDACArray[48];
static quint8 matchPrevious5DotDACArray[48];
static quint8 matchGapDACArray[64][5];
static quint8 matchP3dotGapDACArray[64][5];
memset(matchFullDACArray, 0, sizeof(matchFullDACArray));
memset(matchStealDACArray, 0, sizeof(matchStealDACArray));
memset(matchContinousDACArray, 0, sizeof(matchContinousDACArray));
memset(rowDelayArray, 0, sizeof(rowDelayArray));
memset(head1RowDelayArray, 0, sizeof(head1RowDelayArray));
memset(fullColRowDelayArray, 0, sizeof(fullColRowDelayArray));
memset(matchTotalTableDACArray, 0, sizeof(matchTotalTableDACArray));
@@ -2871,6 +2816,8 @@ void DevOp::writeDacValue2Fpga_No73()
memset(matchP3dotGapDACArray, 0, sizeof(matchP3dotGapDACArray));
memset(adjDACParameter, 0, sizeof(adjDACParameter));
int baseDacScale = sysPara->para.endVoltage;
QFile file("./conf/full_dac_raw.txt");
file.open(QIODevice::WriteOnly);
for (int i = 0; i < 48; i++)
@@ -2920,13 +2867,24 @@ void DevOp::writeDacValue2Fpga_No73()
out << sysPara->voltePara_No73.head1_row_delay_table[i]<< "\n";
}
file.close();
file.setFileName("./conf/full_row_delay.txt");
file.open(QIODevice::WriteOnly);
for (int i = 0; i < 48; i++)
{
QTextStream out(&file);
fullColRowDelayArray[i] = sysPara->voltePara_No73.full_row_delay_table[i];
out << sysPara->voltePara_No73.full_row_delay_table[i]<< "\n";
}
file.close();
file.setFileName("./conf/1_table_dac_raw.txt");
file.open(QIODevice::WriteOnly);
for (int i = 0; i < 48; i++)
{
QTextStream out(&file);
*matchOneDACArray = sysPara->voltePara_No73.pixel_1_table[i];// - head1_base_table[i];
out << sysPara->voltePara_No73.pixel_1_table[i] <<" "<< *matchOneDACArray << "\n";
out << sysPara->voltePara_No73.pixel_1_table[i] << "\n";
++matchOneDACArray;
}
file.close();
@@ -3065,27 +3023,92 @@ void DevOp::writeDacValue2Fpga_No73()
file.setFileName("./conf/general_dac_parameter.txt");
file.open(QIODevice::WriteOnly);
for (int i = 0; i < sizeof(sysPara->voltePara_No73.pixel_general_dac_parameter)/sizeof(sysPara->voltePara_No73.pixel_general_dac_parameter[0]); i++)
for (int i = 0; i < sizeof(sysPara->voltePara_No73.pixel_para_table)/sizeof(sysPara->voltePara_No73.pixel_para_table[0]); i++)
{
adjDACParameter[i] = sysPara->voltePara_No73.pixel_general_dac_parameter[i];
adjDACParameter[i] = sysPara->voltePara_No73.pixel_para_table[i];
QTextStream out(&file);
out << adjDACParameter[i];
out << "\n";
}
file.close();
#if 0 /* apply scale */
for (int i = 0; i < sizeof(matchFullDACArray)/sizeof (matchFullDACArray[0]); i++)
{
matchFullDACArray[i] = (matchFullDACArray[i] * baseDacScale)/100;
}
for (int i = 0; i < sizeof(matchContinousDACArray)/sizeof (matchContinousDACArray[0]); i++)
{
matchContinousDACArray[i] = (matchContinousDACArray[i] * baseDacScale)/100;
}
for (int i = 0; i < 15; i++)
{
for (int j = 0; j < 64; j++)
{
matchTotalTableDACArray[i][j] = (matchTotalTableDACArray[i][j] * baseDacScale)/100;
}
}
for (int i = 0; i < 48; i++)
{
QTextStream out(&file);
sysPara->voltePara_No73.pixel_full_table[i] = (sysPara->voltePara_No73.pixel_full_table[i]* baseDacScale)/100;
}
for (int i = 0; i < 48; i++)
{
QTextStream out(&file);
sysPara->voltePara_No73.pixel_continous_table[i] = (sysPara->voltePara_No73.pixel_continous_table[i]* baseDacScale)/100;
}
for (int i = 0; i < 48; i++)
{
sysPara->voltePara_No73.pixel_1_table[i] = (sysPara->voltePara_No73.pixel_1_table[i]* baseDacScale)/100;
sysPara->voltePara_No73.pixel_2_table[i][0] = (sysPara->voltePara_No73.pixel_2_table[i][0]* baseDacScale)/100;
sysPara->voltePara_No73.pixel_2_table[i][1] = (sysPara->voltePara_No73.pixel_2_table[i][1]* baseDacScale)/100;
sysPara->voltePara_No73.pixel_3_table[i][0] = (sysPara->voltePara_No73.pixel_3_table[i][0]* baseDacScale)/100;
sysPara->voltePara_No73.pixel_3_table[i][1] = (sysPara->voltePara_No73.pixel_3_table[i][1]* baseDacScale)/100;
sysPara->voltePara_No73.pixel_3_table[i][2] = (sysPara->voltePara_No73.pixel_3_table[i][2]* baseDacScale)/100;
sysPara->voltePara_No73.pixel_4_table[i][0] = (sysPara->voltePara_No73.pixel_4_table[i][0]* baseDacScale)/100;
sysPara->voltePara_No73.pixel_4_table[i][1] = (sysPara->voltePara_No73.pixel_4_table[i][1]* baseDacScale)/100;
sysPara->voltePara_No73.pixel_4_table[i][2] = (sysPara->voltePara_No73.pixel_4_table[i][2]* baseDacScale)/100;
sysPara->voltePara_No73.pixel_4_table[i][3] = (sysPara->voltePara_No73.pixel_4_table[i][3]* baseDacScale)/100;
sysPara->voltePara_No73.pixel_5_table[i][0] = (sysPara->voltePara_No73.pixel_5_table[i][0]* baseDacScale)/100;
sysPara->voltePara_No73.pixel_5_table[i][1] = (sysPara->voltePara_No73.pixel_5_table[i][1]* baseDacScale)/100;
sysPara->voltePara_No73.pixel_5_table[i][2] = (sysPara->voltePara_No73.pixel_5_table[i][2]* baseDacScale)/100;
sysPara->voltePara_No73.pixel_5_table[i][3] = (sysPara->voltePara_No73.pixel_5_table[i][3]* baseDacScale)/100;
sysPara->voltePara_No73.pixel_5_table[i][4] = (sysPara->voltePara_No73.pixel_5_table[i][4]* baseDacScale)/100;
}
#endif
fpgaWr(0xB300, (unsigned char *)(matchFullDACArray), sizeof (matchFullDACArray));
fpgaWr(0xB380, (unsigned char *)(matchContinousDACArray), sizeof (matchContinousDACArray));
fpgaWr(0xB400, (unsigned char *)(&rowDelayArray[0]), sizeof (rowDelayArray));
fpgaWr(0xB480, (unsigned char *)(&head1RowDelayArray[0]), sizeof (head1RowDelayArray));
fpgaWr(0xB480, (unsigned char *)(&head1RowDelayArray[0]), sizeof(head1RowDelayArray));
fpgaWr(0xB4C0, (unsigned char *)(&fullColRowDelayArray[0]), sizeof (fullColRowDelayArray));
fpgaWr(0xB500, (unsigned char *)(matchTotalTableDACArray[0]), sizeof (matchTotalTableDACArray));
fpgaWr(0xBC00, (unsigned char *)(matchP3dotGapDACArray[0]), sizeof (matchP3dotGapDACArray));
fpgaWr(0xBE00, (unsigned char *)(matchGapDACArray[0]), sizeof (matchGapDACArray));
fpgaWr(0xA600, (unsigned char *)(matchTotalTableDACArray[0]), sizeof (matchTotalTableDACArray));
// fpgaWr(0xA600, (unsigned char *)(sysPara->voltePara_No73.pixel_1_table), sizeof(sysPara->voltePara_No73.pixel_1_table));
//fpgaWr(0xB500, (unsigned char *)(matchTotalTableDACArray[0]), sizeof (matchTotalTableDACArray));
fpgaWr(0xBC00, (unsigned char *)(matchP3dotGapDACArray[0]), sizeof (matchP3dotGapDACArray)); // 0xBC00 - 0xBD40
fpgaWr(0xBE00, (unsigned char *)(matchGapDACArray[0]), sizeof (matchGapDACArray));
fpgaWr(0xC000, (unsigned char *)sysPara->voltePara_No73.pixel_big_table, sizeof(sysPara->voltePara_No73.pixel_big_table));// 写入8个 big data
fpgaWr(0xC100, (unsigned char *)adjDACParameter, sizeof(adjDACParameter));// 写入8个
LogInfo::setRunStatusText("Write dac value to fpga no 73:");
// TODO:: 用setRunStatusText输出上面十组数据的前10位的十六进制值
LogInfo::setRunStatusText("0xB300: 0x" + arrayToStr(matchFullDACArray, 10));
LogInfo::setRunStatusText("0xB380: 0x" + arrayToStr(matchContinousDACArray, 10));
LogInfo::setRunStatusText("0xB400: 0x" + arrayToStr(rowDelayArray, 10));
LogInfo::setRunStatusText("0xB480: 0x" + arrayToStr(head1RowDelayArray, 10));
LogInfo::setRunStatusText("0xB4C0: 0x" + arrayToStr(fullColRowDelayArray, 10));
LogInfo::setRunStatusText("0xA600: 0x" + arrayToStr(matchTotalTableDACArray[0], 10));
LogInfo::setRunStatusText("0xBC00: 0x" + arrayToStr(matchP3dotGapDACArray[6], 5));
LogInfo::setRunStatusText("0xBE00: 0x" + arrayToStr(matchGapDACArray[6], 5));
LogInfo::setRunStatusText("0xC000: 0x" + arrayToStr(sysPara->voltePara_No73.pixel_big_table[0], 8));
LogInfo::setRunStatusText("0xC100: 0x" + arrayToStr(adjDACParameter, 5));
}
// 齿轮泵设置
unsigned char dataofGearPump[2];
@@ -3270,6 +3293,7 @@ void DevOp::printCtrl2(int cmd){
unsigned int DevOp::readFpgaVersionNum(){
fpgaRd(0x00EC,&sysPara->status.FPGAChipType,1);
fpgaRd(0x00FE,(unsigned char *)&sysPara->status.fpgaVersionNum,2);
fpgaRd(READ_BUILD_DAT, (unsigned char *)&sysPara->status.build_dat.builTime, sizeof(sysPara->status.build_dat.builTime));
return 0;
}