更新:热电偶类型扩充至8种,设置界面&主界面的相关内容修改同步
This commit is contained in:
parent
7d7f0777e4
commit
45d0edfb1f
|
@ -2,7 +2,7 @@
|
|||
* @Author: wujunchao wujunchao@wuxismart.com
|
||||
* @Date: 2024-12-27 11:51:06
|
||||
* @LastEditors: wujunchao wujunchao@wuxismart.com
|
||||
* @LastEditTime: 2025-03-14 10:33:11
|
||||
* @LastEditTime: 2025-03-19 11:29:20
|
||||
* @FilePath: \signal_generator\App\APP_WU\Inc\apps_gather.h
|
||||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||
*/
|
||||
|
@ -219,6 +219,9 @@ extern const lv_img_dsc_t * screen_main_ani_out_sign_imgs[3];
|
|||
|
||||
//选项卡 0 内部的第 12 个内容的游标位置
|
||||
#define CONTENT_0_12 35
|
||||
|
||||
//选项卡 0 内部的第 13 个内容的游标位置
|
||||
#define CONTENT_0_13 25
|
||||
//}
|
||||
|
||||
#define ITEMS_1 1
|
||||
|
@ -270,7 +273,12 @@ typedef enum
|
|||
TC_K, //热电偶K
|
||||
TC_S, //热电偶S
|
||||
TC_N, //热电偶N
|
||||
RTD_DC //热电阻摄氏度
|
||||
TC_B, //热电偶B
|
||||
TC_E, //热电偶E
|
||||
TC_J, //热电偶J
|
||||
TC_R, //热电偶R
|
||||
TC_T, //热电偶T
|
||||
RTD_DC //热电阻摄氏度
|
||||
}SIG_FUNCTIONS_TYPE;
|
||||
|
||||
typedef struct
|
||||
|
@ -372,10 +380,11 @@ typedef struct
|
|||
uint16_t content06; //电阻下限
|
||||
uint8_t content07; //频率上限
|
||||
uint8_t content08; //频率下限
|
||||
int16_t content09; //TC上限
|
||||
int16_t content010; //TC下限
|
||||
int16_t content09[8]; //TC上限, [0, 7]->[K, S, N, B, E, J, R, T]
|
||||
int16_t content010[8]; //TC下限
|
||||
int16_t content011; //RTD上限
|
||||
int16_t content012; //RTD下限
|
||||
SIG_FUNCTIONS_TYPE content013; //TC类型, [5, 12]->[K, S, N, B, E, J, R, T]
|
||||
|
||||
//ITEMS_1
|
||||
uint8_t light_flag; //照明状态标志,0熄灭,1开启
|
||||
|
@ -496,7 +505,11 @@ void contents_modify_item_1(uint8_t cursor, int8_t step);
|
|||
//设置界面刷新选项卡的内容,隐藏items_prv,显示items_now
|
||||
void contents_refresh(uint8_t items_prv, uint8_t items_now);
|
||||
|
||||
//数据转换,mux_signal.pv -> real_value
|
||||
float32 mux2real(float32 mux_pv);
|
||||
|
||||
//数据转换,real_value -> mux_signal.sv
|
||||
float32 real2mux(float32 real_value);
|
||||
|
||||
/**********test5**********/
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* @Author: wujunchao wujunchao@wuxismart.com
|
||||
* @Date: 2024-12-27 11:50:56
|
||||
* @LastEditors: wujunchao wujunchao@wuxismart.com
|
||||
* @LastEditTime: 2025-03-19 10:47:42
|
||||
* @LastEditTime: 2025-03-19 16:34:55
|
||||
* @FilePath: \signal_generator\App\APP_WU\Src\apps_gather.c
|
||||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||
*/
|
||||
|
@ -17,7 +17,7 @@ PHYSICAL_QUANTITY VOL[2]; //电压,VOL[0]-V, VOL[1]-mV
|
|||
PHYSICAL_QUANTITY CUR; //电流,mA
|
||||
PHYSICAL_QUANTITY RES; //电阻,Ω
|
||||
PHYSICAL_QUANTITY FRE; //频率,KHz
|
||||
PHYSICAL_QUANTITY TC[3]; //热电偶,TC[0]-K, TC[1]-S, TC[2]-N
|
||||
PHYSICAL_QUANTITY TC[8]; //热电偶,共8种
|
||||
PHYSICAL_QUANTITY RTD; //热电阻
|
||||
|
||||
//物理量内容初始化
|
||||
|
@ -32,14 +32,14 @@ void physical_quantity_init(void)
|
|||
|
||||
VOL[1].tag = SIG_VOLTAGE;
|
||||
VOL[1].typ = VOLTAGE_MV;
|
||||
VOL[1].low = -250;
|
||||
VOL[1].up = 250;
|
||||
VOL[1].low = -2500;
|
||||
VOL[1].up = 2500;
|
||||
VOL[1].pv = 0;
|
||||
|
||||
CUR.tag = SIG_CURRENT;
|
||||
CUR.typ = CURRENT_MA;
|
||||
CUR.low = 0;
|
||||
CUR.up = 24;
|
||||
CUR.up = 25;
|
||||
CUR.pv = 0;
|
||||
|
||||
RES.tag = SIG_RESISTANT;
|
||||
|
@ -54,28 +54,66 @@ void physical_quantity_init(void)
|
|||
FRE.up = 100;
|
||||
FRE.pv = 0;
|
||||
|
||||
//热电偶K
|
||||
TC[0].tag = SIG_TC;
|
||||
TC[0].typ = TC_K;
|
||||
TC[0].low = -250;
|
||||
TC[0].up = 1820;
|
||||
TC[0].low = -270;
|
||||
TC[0].up = 1370;
|
||||
TC[0].pv = 0;
|
||||
|
||||
//热电偶S
|
||||
TC[1].tag = SIG_TC;
|
||||
TC[1].typ = TC_S;
|
||||
TC[1].low = -250;
|
||||
TC[1].up = 1820;
|
||||
TC[1].low = -50;
|
||||
TC[1].up = 1768;
|
||||
TC[1].pv = 0;
|
||||
|
||||
//热电偶N
|
||||
TC[2].tag = SIG_TC;
|
||||
TC[2].typ = TC_N;
|
||||
TC[2].low = -250;
|
||||
TC[2].up = 1820;
|
||||
TC[2].low = -270;
|
||||
TC[2].up = 1300;
|
||||
TC[2].pv = 0;
|
||||
|
||||
//热电偶B
|
||||
TC[3].tag = SIG_TC;
|
||||
TC[3].typ = TC_B;
|
||||
TC[3].low = 0;
|
||||
TC[3].up = 1820;
|
||||
TC[3].pv = 0;
|
||||
|
||||
//热电偶E
|
||||
TC[4].tag = SIG_TC;
|
||||
TC[4].typ = TC_E;
|
||||
TC[4].low = -270;
|
||||
TC[4].up = 1000;
|
||||
TC[4].pv = 0;
|
||||
|
||||
//热电偶J
|
||||
TC[5].tag = SIG_TC;
|
||||
TC[5].typ = TC_J;
|
||||
TC[5].low = -210;
|
||||
TC[5].up = 1200;
|
||||
TC[5].pv = 0;
|
||||
|
||||
//热电偶R
|
||||
TC[6].tag = SIG_TC;
|
||||
TC[6].typ = TC_R;
|
||||
TC[6].low = -50;
|
||||
TC[6].up = 1768;
|
||||
TC[6].pv = 0;
|
||||
|
||||
//热电偶T
|
||||
TC[7].tag = SIG_TC;
|
||||
TC[7].typ = TC_T;
|
||||
TC[7].low = -270;
|
||||
TC[7].up = 400;
|
||||
TC[7].pv = 0;
|
||||
|
||||
RTD.tag = SIG_RTD;
|
||||
RTD.typ = RTD_DC;
|
||||
RTD.low = -200;
|
||||
RTD.up = 850;
|
||||
RTD.up = 660;
|
||||
RTD.pv = 0;
|
||||
}
|
||||
|
||||
|
@ -168,15 +206,30 @@ void menu_data_init(void)
|
|||
tabdata.content02[0] = VOL[0].low; //电压V下限
|
||||
tabdata.content02[1] = VOL[1].low; //电压mV下限
|
||||
tabdata.content03 = CUR.up; //电流上限
|
||||
tabdata.content04 = CUR.low; //电流下限
|
||||
tabdata.content04 = CUR.low; //电流下限
|
||||
tabdata.content05 = RES.up; //电阻上限
|
||||
tabdata.content06 = RES.low; //电阻下限
|
||||
tabdata.content07 = FRE.up; //频率上限
|
||||
tabdata.content08 = FRE.low; //频率下限
|
||||
tabdata.content09 = TC[0].up; //TC上限
|
||||
tabdata.content010 = TC[0].low; //TC下限
|
||||
tabdata.content09[0] = TC[0].up; //TCK上限
|
||||
tabdata.content010[0] = TC[0].low; //TCK下限
|
||||
tabdata.content09[1] = TC[1].up; //TCS上限
|
||||
tabdata.content010[1] = TC[1].low; //TCS下限
|
||||
tabdata.content09[2] = TC[2].up; //TCN上限
|
||||
tabdata.content010[2] = TC[2].low; //TCN下限
|
||||
tabdata.content09[3] = TC[3].up; //TCB上限
|
||||
tabdata.content010[3] = TC[3].low; //TCB下限
|
||||
tabdata.content09[4] = TC[4].up; //TCE上限
|
||||
tabdata.content010[4] = TC[4].low; //TCE下限
|
||||
tabdata.content09[5] = TC[5].up; //TCJ上限
|
||||
tabdata.content010[5] = TC[5].low; //TCJ下限
|
||||
tabdata.content09[6] = TC[6].up; //TCR上限
|
||||
tabdata.content010[6] = TC[6].low; //TCR下限
|
||||
tabdata.content09[7] = TC[7].up; //TCT上限
|
||||
tabdata.content010[7] = TC[7].low; //TCT下限
|
||||
tabdata.content011 = RTD.up; //RTD上限
|
||||
tabdata.content012 = RTD.low; //RTD下限
|
||||
tabdata.content013 = TC_K; //默认为K类型的热电偶
|
||||
//}
|
||||
|
||||
//ITEMS_1 选项卡1
|
||||
|
@ -591,7 +644,7 @@ void key_functions_main(void)
|
|||
case SIG_TC: //热电偶
|
||||
{
|
||||
cursor_temp = (uint8_t)m5data.output_mode_type;
|
||||
cursor_temp = (cursor_temp >= 7)?(5):(cursor_temp + 1);
|
||||
cursor_temp = (cursor_temp >= 12)?(5):(cursor_temp + 1);
|
||||
m5data.output_mode_type = (SIG_FUNCTIONS_TYPE)cursor_temp;
|
||||
|
||||
set_working_mode(m5data.output_mode, m5data.output_mode_type);
|
||||
|
@ -801,11 +854,6 @@ void scr_init_run(void)
|
|||
}
|
||||
}
|
||||
|
||||
// uint8_t eep_tx = 0x72;
|
||||
// uint8_t eep_rx = 0;
|
||||
// uint8_t eep_addr[3];
|
||||
// uint8_t eep_test_flag = 0;
|
||||
// uint8_t eep_status = 0;
|
||||
void scr_main_run(void)
|
||||
{
|
||||
//实时更新设定值
|
||||
|
@ -825,28 +873,6 @@ void scr_main_run(void)
|
|||
|
||||
//数值闪烁
|
||||
num_twinkle(); //1000ms
|
||||
|
||||
|
||||
// EEPROM_CS_L;
|
||||
// delay_cnt(10);
|
||||
// eeprom_spi_writebyte(READ_STATUS);
|
||||
// eep_status = eeprom_spi_readbyte();
|
||||
// delay_cnt(10);
|
||||
// EEPROM_CS_H;
|
||||
|
||||
// delay_cnt(100);
|
||||
|
||||
// if(eep_test_flag == 0)
|
||||
// {
|
||||
// eep_test_flag = 1;
|
||||
|
||||
// eep_addr[0] = 0x00;
|
||||
// eep_addr[1] = 0x00;
|
||||
// eep_addr[2] = 0x00;
|
||||
// eeprom_writedata(eep_addr, eep_tx);
|
||||
|
||||
// eep_rx = eeprom_readdata(eep_addr);
|
||||
// }
|
||||
}
|
||||
|
||||
void runtime_show(void)
|
||||
|
@ -1756,15 +1782,13 @@ void sig_channel_select(uint8_t io, SIG_FUNCTIONS_TYPE type)
|
|||
}
|
||||
|
||||
//更新设定值(根据ON\OFF状态)
|
||||
float32 sv_watch = 0;
|
||||
void sig_sv_update(void)
|
||||
{
|
||||
switch (m5data.io_on2off)
|
||||
{
|
||||
case IO_ON:
|
||||
{
|
||||
sv_watch = get_output_value();
|
||||
mux_signal.data_sv = get_output_value();
|
||||
mux_signal.data_sv = real2mux( get_output_value() );
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -1927,7 +1951,6 @@ void set_working_mode(SIG_FUNCTIONS mode, SIG_FUNCTIONS_TYPE type)
|
|||
//热电偶
|
||||
case SIG_TC:
|
||||
{
|
||||
//-250~1820℃
|
||||
lv_label_set_text(guider_ui.screen_main_label_Mode, "Tc");
|
||||
|
||||
switch (type)
|
||||
|
@ -1936,21 +1959,10 @@ void set_working_mode(SIG_FUNCTIONS mode, SIG_FUNCTIONS_TYPE type)
|
|||
{
|
||||
lv_label_set_text(guider_ui.screen_main_label_unit, "K ℃");
|
||||
|
||||
pltdata.yreal_pri_up = tabdata.content09;
|
||||
pltdata.yreal_scd_up = tabdata.content09;
|
||||
pltdata.yreal_pri_low = tabdata.content010;
|
||||
pltdata.yreal_scd_low = tabdata.content010;
|
||||
}
|
||||
break;
|
||||
|
||||
case TC_N:
|
||||
{
|
||||
lv_label_set_text(guider_ui.screen_main_label_unit, "N ℃");
|
||||
|
||||
pltdata.yreal_pri_up = tabdata.content09;
|
||||
pltdata.yreal_scd_up = tabdata.content09;
|
||||
pltdata.yreal_pri_low = tabdata.content010;
|
||||
pltdata.yreal_scd_low = tabdata.content010;
|
||||
pltdata.yreal_pri_up = tabdata.content09[0];
|
||||
pltdata.yreal_scd_up = tabdata.content09[0];
|
||||
pltdata.yreal_pri_low = tabdata.content010[0];
|
||||
pltdata.yreal_scd_low = tabdata.content010[0];
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -1958,10 +1970,76 @@ void set_working_mode(SIG_FUNCTIONS mode, SIG_FUNCTIONS_TYPE type)
|
|||
{
|
||||
lv_label_set_text(guider_ui.screen_main_label_unit, "S ℃");
|
||||
|
||||
pltdata.yreal_pri_up = tabdata.content09;
|
||||
pltdata.yreal_scd_up = tabdata.content09;
|
||||
pltdata.yreal_pri_low = tabdata.content010;
|
||||
pltdata.yreal_scd_low = tabdata.content010;
|
||||
pltdata.yreal_pri_up = tabdata.content09[1];
|
||||
pltdata.yreal_scd_up = tabdata.content09[1];
|
||||
pltdata.yreal_pri_low = tabdata.content010[1];
|
||||
pltdata.yreal_scd_low = tabdata.content010[1];
|
||||
}
|
||||
break;
|
||||
|
||||
case TC_N:
|
||||
{
|
||||
lv_label_set_text(guider_ui.screen_main_label_unit, "N ℃");
|
||||
|
||||
pltdata.yreal_pri_up = tabdata.content09[2];
|
||||
pltdata.yreal_scd_up = tabdata.content09[2];
|
||||
pltdata.yreal_pri_low = tabdata.content010[2];
|
||||
pltdata.yreal_scd_low = tabdata.content010[2];
|
||||
}
|
||||
break;
|
||||
|
||||
case TC_B:
|
||||
{
|
||||
lv_label_set_text(guider_ui.screen_main_label_unit, "B ℃");
|
||||
|
||||
pltdata.yreal_pri_up = tabdata.content09[3];
|
||||
pltdata.yreal_scd_up = tabdata.content09[3];
|
||||
pltdata.yreal_pri_low = tabdata.content010[3];
|
||||
pltdata.yreal_scd_low = tabdata.content010[3];
|
||||
}
|
||||
break;
|
||||
|
||||
case TC_E:
|
||||
{
|
||||
lv_label_set_text(guider_ui.screen_main_label_unit, "E ℃");
|
||||
|
||||
pltdata.yreal_pri_up = tabdata.content09[4];
|
||||
pltdata.yreal_scd_up = tabdata.content09[4];
|
||||
pltdata.yreal_pri_low = tabdata.content010[4];
|
||||
pltdata.yreal_scd_low = tabdata.content010[4];
|
||||
}
|
||||
break;
|
||||
|
||||
case TC_J:
|
||||
{
|
||||
lv_label_set_text(guider_ui.screen_main_label_unit, "J ℃");
|
||||
|
||||
pltdata.yreal_pri_up = tabdata.content09[5];
|
||||
pltdata.yreal_scd_up = tabdata.content09[5];
|
||||
pltdata.yreal_pri_low = tabdata.content010[5];
|
||||
pltdata.yreal_scd_low = tabdata.content010[5];
|
||||
}
|
||||
break;
|
||||
|
||||
case TC_R:
|
||||
{
|
||||
lv_label_set_text(guider_ui.screen_main_label_unit, "R ℃");
|
||||
|
||||
pltdata.yreal_pri_up = tabdata.content09[6];
|
||||
pltdata.yreal_scd_up = tabdata.content09[6];
|
||||
pltdata.yreal_pri_low = tabdata.content010[6];
|
||||
pltdata.yreal_scd_low = tabdata.content010[6];
|
||||
}
|
||||
break;
|
||||
|
||||
case TC_T:
|
||||
{
|
||||
lv_label_set_text(guider_ui.screen_main_label_unit, "T ℃");
|
||||
|
||||
pltdata.yreal_pri_up = tabdata.content09[7];
|
||||
pltdata.yreal_scd_up = tabdata.content09[7];
|
||||
pltdata.yreal_pri_low = tabdata.content010[7];
|
||||
pltdata.yreal_scd_low = tabdata.content010[7];
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -1974,7 +2052,6 @@ void set_working_mode(SIG_FUNCTIONS mode, SIG_FUNCTIONS_TYPE type)
|
|||
//热电阻
|
||||
case SIG_RTD:
|
||||
{
|
||||
//-200~850℃
|
||||
lv_label_set_text(guider_ui.screen_main_label_Mode, "RTD");
|
||||
|
||||
switch (type)
|
||||
|
@ -2019,7 +2096,7 @@ void input_value_show(void)
|
|||
input_500ms_flag = 0;
|
||||
|
||||
//获取输入值
|
||||
pltdata.yreal_scd_value = mux_signal.data_pv;
|
||||
pltdata.yreal_scd_value = mux2real(mux_signal.data_pv);
|
||||
|
||||
if( MY_ABS(pltdata.yreal_scd_value - pltdata.yreal_scd_value_prv) < (float32)0.01)
|
||||
{
|
||||
|
@ -2807,11 +2884,14 @@ void contents_modify_item_0(uint8_t cursor, int8_t step)
|
|||
|
||||
case CONTENT_0_9:
|
||||
{
|
||||
tabdata.content09 += step;
|
||||
uint8_t c09_temp = 0;
|
||||
c09_temp = (uint8_t)tabdata.content013;
|
||||
c09_temp -= 5; //[5, 12]->[0, 7]
|
||||
|
||||
if( tabdata.content09 > TC[0].up ) tabdata.content09 = TC[0].up;
|
||||
if( tabdata.content09 < TC[0].low ) tabdata.content09 = TC[0].low;
|
||||
if( tabdata.content09 < tabdata.content08 ) tabdata.content09 = tabdata.content08;
|
||||
tabdata.content09[c09_temp] += step;
|
||||
if( tabdata.content09[c09_temp] > TC[c09_temp].up ) tabdata.content09[c09_temp] = TC[c09_temp].up;
|
||||
if( tabdata.content09[c09_temp] < TC[c09_temp].low ) tabdata.content09[c09_temp] = TC[c09_temp].low;
|
||||
if( tabdata.content010[c09_temp] > tabdata.content09[c09_temp] ) tabdata.content09[c09_temp] = tabdata.content010[c09_temp];
|
||||
|
||||
//更新显示内容
|
||||
setting_update(ITEMS_0, CONTENT_0_9);
|
||||
|
@ -2820,11 +2900,13 @@ void contents_modify_item_0(uint8_t cursor, int8_t step)
|
|||
|
||||
case CONTENT_0_10:
|
||||
{
|
||||
tabdata.content010 += step;
|
||||
uint8_t c010_temp = 0;
|
||||
c010_temp = (uint8_t)tabdata.content013;
|
||||
c010_temp -= 5; //[5, 12]->[0, 7]
|
||||
|
||||
if( tabdata.content010 > TC[0].up ) tabdata.content010 = TC[0].up;
|
||||
if( tabdata.content010 < TC[0].low ) tabdata.content010 = TC[0].low;
|
||||
if( tabdata.content010 > tabdata.content07 ) tabdata.content010 = tabdata.content07;
|
||||
if( tabdata.content010[c010_temp] > TC[c010_temp].up ) tabdata.content010[c010_temp] = TC[c010_temp].up;
|
||||
if( tabdata.content010[c010_temp] < TC[c010_temp].low ) tabdata.content010[c010_temp] = TC[c010_temp].low;
|
||||
if( tabdata.content010[c010_temp] > tabdata.content09[c010_temp] ) tabdata.content010[c010_temp] = tabdata.content09[c010_temp];
|
||||
|
||||
//更新显示内容
|
||||
setting_update(ITEMS_0, CONTENT_0_10);
|
||||
|
@ -2856,6 +2938,21 @@ void contents_modify_item_0(uint8_t cursor, int8_t step)
|
|||
setting_update(ITEMS_0, CONTENT_0_12);
|
||||
}
|
||||
break;
|
||||
|
||||
case CONTENT_0_13:
|
||||
{
|
||||
uint8_t c13_temp = 0;
|
||||
c13_temp = (uint8_t)tabdata.content013;
|
||||
c13_temp =(c13_temp >= 12)?(5):(c13_temp + 1); //不使用step
|
||||
tabdata.content013 = (SIG_FUNCTIONS_TYPE)c13_temp;
|
||||
|
||||
//更新显示内容
|
||||
setting_update(ITEMS_0, CONTENT_0_13);
|
||||
//类型改变时,相关数值也要跟随
|
||||
setting_update(ITEMS_0, CONTENT_0_9);
|
||||
setting_update(ITEMS_0, CONTENT_0_10);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
|
@ -3004,14 +3101,22 @@ void setting_update(uint8_t ite, uint8_t con)
|
|||
|
||||
case CONTENT_0_9:
|
||||
{
|
||||
sprintf(str_temp,"%d",tabdata.content09);
|
||||
uint8_t c09_temp = 0;
|
||||
c09_temp = (uint8_t)tabdata.content013;
|
||||
c09_temp -= 5; //[5, 12]->[0, 7]
|
||||
|
||||
sprintf(str_temp,"%d",tabdata.content09[c09_temp]);
|
||||
lv_label_set_text(guider_ui.screen_setting_label_43, str_temp);
|
||||
}
|
||||
break;
|
||||
|
||||
case CONTENT_0_10:
|
||||
{
|
||||
sprintf(str_temp,"%d",tabdata.content010);
|
||||
uint8_t c10_temp = 0;
|
||||
c10_temp = (uint8_t)tabdata.content013;
|
||||
c10_temp -= 5; //[5, 12]->[0, 7]
|
||||
|
||||
sprintf(str_temp,"%d",tabdata.content010[c10_temp]);
|
||||
lv_label_set_text(guider_ui.screen_setting_label_45, str_temp);
|
||||
}
|
||||
break;
|
||||
|
@ -3029,6 +3134,65 @@ void setting_update(uint8_t ite, uint8_t con)
|
|||
lv_label_set_text(guider_ui.screen_setting_label_55, str_temp);
|
||||
}
|
||||
break;
|
||||
|
||||
case CONTENT_0_13:
|
||||
{
|
||||
switch (tabdata.content013)
|
||||
{
|
||||
case TC_K:
|
||||
{
|
||||
lv_label_set_text(guider_ui.screen_setting_label_41, "K ℃");
|
||||
}
|
||||
break;
|
||||
|
||||
case TC_S:
|
||||
{
|
||||
lv_label_set_text(guider_ui.screen_setting_label_41, "S ℃");
|
||||
}
|
||||
break;
|
||||
|
||||
case TC_N:
|
||||
{
|
||||
lv_label_set_text(guider_ui.screen_setting_label_41, "N ℃");
|
||||
}
|
||||
break;
|
||||
|
||||
case TC_B:
|
||||
{
|
||||
lv_label_set_text(guider_ui.screen_setting_label_41, "B ℃");
|
||||
}
|
||||
break;
|
||||
|
||||
case TC_E:
|
||||
{
|
||||
lv_label_set_text(guider_ui.screen_setting_label_41, "E ℃");
|
||||
}
|
||||
break;
|
||||
|
||||
case TC_J:
|
||||
{
|
||||
lv_label_set_text(guider_ui.screen_setting_label_41, "J ℃");
|
||||
}
|
||||
break;
|
||||
|
||||
case TC_R:
|
||||
{
|
||||
lv_label_set_text(guider_ui.screen_setting_label_41, "R ℃");
|
||||
}
|
||||
break;
|
||||
|
||||
case TC_T:
|
||||
{
|
||||
lv_label_set_text(guider_ui.screen_setting_label_41, "T ℃");
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
|
@ -3279,14 +3443,14 @@ void contents_refresh(uint8_t items_prv, uint8_t items_now)
|
|||
lv_label_set_text(guider_ui.screen_setting_label_42, "上限");
|
||||
|
||||
lv_obj_clear_flag(guider_ui.screen_setting_label_43, LV_OBJ_FLAG_HIDDEN);
|
||||
sprintf(str_temp,"%d",tabdata.content09);
|
||||
sprintf(str_temp,"%d",tabdata.content09[ (uint8_t)tabdata.content013 ]);
|
||||
lv_label_set_text(guider_ui.screen_setting_label_43, str_temp);
|
||||
|
||||
lv_obj_clear_flag(guider_ui.screen_setting_label_44, LV_OBJ_FLAG_HIDDEN);
|
||||
lv_label_set_text(guider_ui.screen_setting_label_44, "下限");
|
||||
|
||||
lv_obj_clear_flag(guider_ui.screen_setting_label_45, LV_OBJ_FLAG_HIDDEN);
|
||||
sprintf(str_temp,"%d",tabdata.content010);
|
||||
sprintf(str_temp,"%d",tabdata.content010[ (uint8_t)tabdata.content013 ]);
|
||||
lv_label_set_text(guider_ui.screen_setting_label_45, str_temp);
|
||||
|
||||
lv_obj_clear_flag(guider_ui.screen_setting_label_50, LV_OBJ_FLAG_HIDDEN);
|
||||
|
@ -3598,6 +3762,329 @@ void scr_main_recover(void)
|
|||
|
||||
}
|
||||
|
||||
//数据转换,mux_signal.pv -> real_value
|
||||
float32 mux2real(float32 mux_pv)
|
||||
{
|
||||
float32 result = 0;
|
||||
SIG_FUNCTIONS mode;
|
||||
SIG_FUNCTIONS_TYPE type;
|
||||
|
||||
switch (m5data.io_mode)
|
||||
{
|
||||
case IO_INPUT:
|
||||
{
|
||||
mode = m5data.input_mode;
|
||||
type = m5data.input_mode_type;
|
||||
}
|
||||
break;
|
||||
|
||||
case IO_OUTPUT:
|
||||
{
|
||||
mode = m5data.output_mode;
|
||||
type = m5data.output_mode_type;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
switch (mode)
|
||||
{
|
||||
//电压
|
||||
case SIG_VOLTAGE:
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
//[-2.5, 2.5V] -> [-2500mv, 2500mv]
|
||||
case VOLTAGE_MV:
|
||||
{
|
||||
result = mux_pv * 1000;
|
||||
}
|
||||
break;
|
||||
|
||||
//1:1
|
||||
case VOLTAGE_V:
|
||||
{
|
||||
result = mux_pv;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
//电流
|
||||
case SIG_CURRENT:
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
//1:1
|
||||
case CURRENT_MA:
|
||||
{
|
||||
result = mux_pv;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
//电阻
|
||||
case SIG_RESISTANT:
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case RESISTANT_OHM:
|
||||
{
|
||||
result = mux_pv;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
//频率
|
||||
case SIG_FREQUENCE:
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case FREQUENCE_KHZ:
|
||||
{
|
||||
//Hz -> KHz
|
||||
result = mux_pv / 1000;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
//热电偶
|
||||
case SIG_TC:
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case TC_K:
|
||||
{
|
||||
result = mux_pv;
|
||||
}
|
||||
break;
|
||||
|
||||
case TC_N:
|
||||
{
|
||||
result = mux_pv;
|
||||
}
|
||||
break;
|
||||
|
||||
case TC_S:
|
||||
{
|
||||
result = mux_pv;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
//热电阻
|
||||
case SIG_RTD:
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case RTD_DC:
|
||||
{
|
||||
result = mux_pv;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
//数据转换,real_value -> mux_signal.sv
|
||||
float32 real2mux(float32 real_value)
|
||||
{
|
||||
float32 result = 0;
|
||||
|
||||
SIG_FUNCTIONS mode;
|
||||
SIG_FUNCTIONS_TYPE type;
|
||||
|
||||
switch (m5data.io_mode)
|
||||
{
|
||||
case IO_INPUT:
|
||||
{
|
||||
mode = m5data.input_mode;
|
||||
type = m5data.input_mode_type;
|
||||
}
|
||||
break;
|
||||
|
||||
case IO_OUTPUT:
|
||||
{
|
||||
mode = m5data.output_mode;
|
||||
type = m5data.output_mode_type;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
switch (mode)
|
||||
{
|
||||
//电压
|
||||
case SIG_VOLTAGE:
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
//[-2500mV, 2500mV] -> [-2.5V, 2.5V]
|
||||
case VOLTAGE_MV:
|
||||
{
|
||||
result = real_value / (float32)1000;
|
||||
}
|
||||
break;
|
||||
|
||||
//1:1
|
||||
case VOLTAGE_V:
|
||||
{
|
||||
result = real_value;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
//电流
|
||||
case SIG_CURRENT:
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
//1:1
|
||||
case CURRENT_MA:
|
||||
{
|
||||
result = real_value;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
//电阻
|
||||
case SIG_RESISTANT:
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case RESISTANT_OHM:
|
||||
{
|
||||
result = real_value;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
//频率
|
||||
case SIG_FREQUENCE:
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case FREQUENCE_KHZ:
|
||||
{
|
||||
//KHz -> Hz
|
||||
result = real_value * 1000;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
//热电偶
|
||||
case SIG_TC:
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case TC_K:
|
||||
{
|
||||
result = real_value;
|
||||
}
|
||||
break;
|
||||
|
||||
case TC_N:
|
||||
{
|
||||
result = real_value;
|
||||
}
|
||||
break;
|
||||
|
||||
case TC_S:
|
||||
{
|
||||
result = real_value;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
//热电阻
|
||||
case SIG_RTD:
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case RTD_DC:
|
||||
{
|
||||
result = real_value;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void num_twinkle(void) //数值闪烁
|
||||
{
|
||||
if(m5data.twk_flag == 0)
|
||||
|
@ -3881,6 +4368,7 @@ void scr_setting_recover(void)
|
|||
setting_update(ITEMS_0, CONTENT_0_10);
|
||||
setting_update(ITEMS_0, CONTENT_0_11);
|
||||
setting_update(ITEMS_0, CONTENT_0_12);
|
||||
setting_update(ITEMS_0, CONTENT_0_13);
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -2,12 +2,31 @@
|
|||
* @Author: wujunchao wujunchao@wuxismart.com
|
||||
* @Date: 2025-03-17 14:38:34
|
||||
* @LastEditors: wujunchao wujunchao@wuxismart.com
|
||||
* @LastEditTime: 2025-03-19 10:44:31
|
||||
* @LastEditTime: 2025-03-19 11:08:41
|
||||
* @FilePath: \signal_generator\App\APP_WU\Src\eeprom_spi.c
|
||||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||
*/
|
||||
#include "eeprom_spi.h"
|
||||
|
||||
//使用方法:
|
||||
// uint8_t eep_tx = 0x72;
|
||||
// uint8_t eep_rx = 0;
|
||||
// uint8_t eep_addr[3];
|
||||
// uint8_t eep_test_flag = 0;
|
||||
// uint8_t eep_status = 0;
|
||||
|
||||
// if(eep_test_flag == 0)
|
||||
// {
|
||||
// eep_test_flag = 1;
|
||||
|
||||
// eep_addr[0] = 0x00;
|
||||
// eep_addr[1] = 0x00;
|
||||
// eep_addr[2] = 0x00;
|
||||
// eeprom_writedata(eep_addr, eep_tx);
|
||||
|
||||
// eep_rx = eeprom_readdata(eep_addr);
|
||||
// }
|
||||
// 结果:eep_rx = 0x72
|
||||
|
||||
void eeprom_spi_init(void)
|
||||
{
|
||||
|
@ -18,9 +37,6 @@ void eeprom_spi_init(void)
|
|||
|
||||
void eeprom_spi_writebyte(uint8_t wrt_data)
|
||||
{
|
||||
// EEPROM_CS_L;
|
||||
// wu_delay_us(100);
|
||||
|
||||
uint8_t i = 0;
|
||||
uint8_t temp = 0;
|
||||
for(i = 0; i < 8; i++)
|
||||
|
@ -48,15 +64,10 @@ void eeprom_spi_writebyte(uint8_t wrt_data)
|
|||
}
|
||||
|
||||
EEPROM_SCLK_L;
|
||||
|
||||
//EEPROM_CS_H;
|
||||
}
|
||||
|
||||
uint8_t eeprom_spi_readbyte(void)
|
||||
{
|
||||
// EEPROM_CS_L;
|
||||
// wu_delay_us(100);
|
||||
|
||||
uint8_t i = 0;
|
||||
uint8_t read_data = 0xFF;
|
||||
for(i = 0; i < 8; i++)
|
||||
|
@ -73,16 +84,11 @@ uint8_t eeprom_spi_readbyte(void)
|
|||
}
|
||||
EEPROM_SCLK_L;
|
||||
|
||||
// EEPROM_CS_H;
|
||||
|
||||
return read_data;
|
||||
}
|
||||
|
||||
uint8_t SPI_WriteReadByte(uint8_t data)
|
||||
{
|
||||
// EEPROM_CS_L;
|
||||
// delay_cnt(0xff);
|
||||
|
||||
uint16_t bit_ctr;
|
||||
for(bit_ctr=0;bit_ctr<8;bit_ctr++)
|
||||
{
|
||||
|
@ -106,8 +112,6 @@ uint8_t SPI_WriteReadByte(uint8_t data)
|
|||
wu_delay_us(5); // 空等待
|
||||
}
|
||||
|
||||
//EEPROM_CS_H;
|
||||
|
||||
return(data);
|
||||
}
|
||||
|
||||
|
|
|
@ -63,10 +63,10 @@ void dac8552_operation(float32 *data1, float32 *data2)
|
|||
if (data1 != NULL)
|
||||
{
|
||||
// 4~20mA输出
|
||||
if (*data1 > 20.0f)
|
||||
*data1 = 20.0f;
|
||||
else if (*data1 < 4.0f)
|
||||
*data1 = 4.0f;
|
||||
if (*data1 > 25.0f)
|
||||
*data1 = 25.0f;
|
||||
else if (*data1 < 0.0f)
|
||||
*data1 = 0.0f;
|
||||
temp = (*data1) * 100.0f;
|
||||
data = (uint16_t)(65535.0f * temp / 2500.0f);
|
||||
set_dac8552_channel_value(&dac8552, LD_CH_B, SEL_BUF_B, PD_NONE, data);
|
||||
|
|
|
@ -1,3 +1,11 @@
|
|||
/*
|
||||
* @Author: wujunchao wujunchao@wuxismart.com
|
||||
* @Date: 2024-12-24 08:18:26
|
||||
* @LastEditors: wujunchao wujunchao@wuxismart.com
|
||||
* @LastEditTime: 2025-03-19 13:07:31
|
||||
* @FilePath: \signal_generator\App\MUX_SIGNAL\mux_signal.c
|
||||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||
*/
|
||||
/*
|
||||
* @Author: DaMingSY zxm5337@163.com
|
||||
* @Date: 2024-09-02 15:58:58
|
||||
|
|
|
@ -1,3 +1,11 @@
|
|||
/*
|
||||
* @Author: wujunchao wujunchao@wuxismart.com
|
||||
* @Date: 2024-12-27 10:42:51
|
||||
* @LastEditors: wujunchao wujunchao@wuxismart.com
|
||||
* @LastEditTime: 2025-03-19 14:57:50
|
||||
* @FilePath: \signal_generator\Core\Inc\tim.h
|
||||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||
*/
|
||||
/* USER CODE BEGIN Header */
|
||||
/**
|
||||
******************************************************************************
|
||||
|
@ -32,14 +40,14 @@ extern "C" {
|
|||
#define freq_operation(FREQ, PULSE) \
|
||||
do \
|
||||
{ \
|
||||
if (FREQ <= 0 || FREQ >= 1000000 || PULSE <= 0 || PULSE >= 100) \
|
||||
if (FREQ <= 0 || FREQ >= 41472000 || PULSE <= 0 || PULSE >= 100) \
|
||||
{ \
|
||||
HAL_TIMEx_PWMN_Stop(&htim1, TIM_CHANNEL_2); \
|
||||
return; \
|
||||
} \
|
||||
uint16_t duty = 1000000 / FREQ - 1; \
|
||||
uint16_t duty = 41472000 / FREQ; \
|
||||
__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_2, duty *PULSE / 100 - 1); \
|
||||
__HAL_TIM_SET_AUTORELOAD(&htim1, duty); \
|
||||
__HAL_TIM_SET_AUTORELOAD(&htim1, duty -1); \
|
||||
HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_2); \
|
||||
} while (0)
|
||||
|
||||
|
|
|
@ -71,7 +71,7 @@ void MX_TIM1_Init(void)
|
|||
Error_Handler();
|
||||
}
|
||||
sConfigOC.OCMode = TIM_OCMODE_PWM1;
|
||||
sConfigOC.Pulse = 500;
|
||||
sConfigOC.Pulse = 20736-1;
|
||||
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
|
||||
sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
|
||||
sConfigOC.OCFastMode = TIM_OCFAST_ENABLE;
|
||||
|
|
|
@ -270,21 +270,6 @@
|
|||
<WinNumber>1</WinNumber>
|
||||
<ItemText>RTD,0x0A</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>23</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>sv_watch</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>24</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>eep_status</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>25</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>eep_rx</ItemText>
|
||||
</Ww>
|
||||
</WatchWindow1>
|
||||
<MemoryWindow1>
|
||||
<Mm>
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -574,7 +574,7 @@ TIM1.OC2Preload_PWM=ENABLE
|
|||
TIM1.OCFastMode_PWM-PWM\ Generation2\ CH2N=TIM_OCFAST_ENABLE
|
||||
TIM1.Period=41472-1
|
||||
TIM1.Prescaler=2-1
|
||||
TIM1.Pulse-PWM\ Generation2\ CH2N=500
|
||||
TIM1.Pulse-PWM\ Generation2\ CH2N=20736-1
|
||||
TIM3.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_ENABLE
|
||||
TIM3.Channel-Input_Capture4_from_TI4=TIM_CHANNEL_4
|
||||
TIM3.IPParameters=Channel-Input_Capture4_from_TI4,Prescaler,Period,AutoReloadPreload
|
||||
|
|
Loading…
Reference in New Issue