主题中讨论的其他器件:BOOSTXL-C2KLED、 TMS320F28027、 TIDA-00282、 controlSUITE
工具/软件:Code Composer Studio
大家好、我尝试将 BOOSTXL-C2KLED 的其中一个升压转换器的反馈从恒定电流更改为输出分压器。
增压器1-2 (GRN 和 Blu)仍在 A2和 A1使用旧反馈。 当升压器3 (红色)时、我计划使用 B4处的分压器。
我已按如下方式更改连接:
长 IrefNetBus3=0; //用作 Iref3 long VrefNetBus3=0的地址; //用作 Vref3 (新) long UoutNetBus3=0的地址; //用作 Uout3 #pragma DATA_SECTION (CNTL_2P2Z_CoefStruct3、"CNTL_2P2Z_Coef")的地址; struct CNTL_2P2Z_CoefStruct3; //转换控制 long Iset1=0; //控制循环1目标 long Iset2=0; //控制循环2目标 long Iset3=0; //控制循环3目标 long Vset3=0; //控制循环3目标(新) 长整型 Itarget1=0; //针对压摆率 long Itarget2=0调整的控制环路1目标; //针对压摆率 long Itarget3=0调整的控制环路2目标; //针对压摆率 long Vtarget3=0调整了控制环路3目标; //针对压摆率调整的控制环路3目标(新) //为方便"人"使用 int16 Gui_Vin=0的变量; //Q09 Int16 Gui_Vout1=0;//Q08 Int16 Gui_Vout2=0;//Q08 Int16 Gui_Vout3=0;//Q08 Int16 Gui_Vout8=0;//Q08 Int16 Gui_Iset1=0; //Q15 Int16 Gui_Iset2=0;//Q15 Int16 Gui_Iset3=0;//Q15 Int16 Gui_Vset3=0;//Q08 (新) Int16 Gui_Iout1=0;//Q15 Int16 Gui_Iout2=0;//Q15 Int16 Gui_Iout3=0; //升压连接/ Q15 ADCDRV_1ch_Rlt11 =&AdcNetBus[11]; //(之前在下面、刚刚移到这里) CNTL_2P2Z_REF3 =&VrefNetBus3; //指向 Vref3 (编辑) CNTL_2P2Z_Fdbk3 =&AdcNetBus[11]; //指向 Vout3 (编辑) CNTL_2P2Z_Coef3 =&CNTL_2P2Z_CoefStruct3.B2;//指向第一个循环的第一个系数 CNTL_2P2Z_Out3 =&UoutNetBus3; //指向2P2Z Uout3 PWMDRV_1ch_UpDwnCnt_Duty2 =&UoutNetBus3; //电压连接 ADCDRV_1ch_Rlt3 =&AdcNetBus[3]; //(已在上面,只是移动到这里) ADCDRV_1ch_Rlt9 =&AdcNetBus[9]; ADCDRV_1ch_Rlt10 =&AdcNetBus[10]; ADCDRV_1ch_Rlt12 =&AdcNetBus[12]; //所有通道关断控制(无定序) if (StopAll = 1) { IrefNetBus1 = 0; IrefNetBus2 = 0; IrefNetBus3 = 0; VrefNetBus3 = 0; ChannelEnable1 = 0; ChannelEnable2=0; ChannelEnable3 = 0; Gui_Iset1 = 0; Gui_Iset2 = 0; Gui_Iset3 = 0; Gui_Vset3 = 0;//(新) MergeLEDs = 0; AutoColor = 0; SetColor1 = 0; SetColor2=0; StopAll = 0; } //通道3开/关控制 if (ChannelEnable3 = 1) //Idtarget3 = Iset3;//(以前) Vtarget3 = Vset3;//(IS) 其他 //IdTarget3 = 0;//(以前) Vtarget3 = 0;//(is) /*(以前) SlewError =(IrefNetBus3 - Itarget3); IF (SlewError > SlewStep3) IrefNetBus3 = IrefNetBus3 - SlewStep3; 否则(SlewError <(-SlewStep3)) IrefNetBus3 = IrefNetBus3 + SlewStep3; 其他 IrefNetBus3 = Itarget3;* //(IS) SlewError =(VrefNetBus3 - Vtarget3); IF (SlewError > SlewStep3) VrefNetBus3 = VrefNetBus3 - SlewStep3; 否则(SlewError <(-SlewStep3)) VrefNetBus3 = VrefNetBus3 + SlewStep3; 其他 VrefNetBus3 = Vtarget3; //与 longs 相乘以获得正确的结果,然后移动14以将其转换回 Int16 Iset1 =((long) Gui_Iset1*(long) Ik_ISET)>> 5; Iset2 =((long) Gui_Iset2*(long) Ik_ISET)>> 5; Iset3 =((long) Gui_Iset3*(long) Ik_Iset)>> 5; Vset3 =((long) Gui_Vset3*(long) K_Vout)>> 16;//(新的、可能错误、但对于实验、可以在调试中看到原始数据) /*(以前) if ((Gui_Iset3 = 0)&&(AdcNetBus[3]= 0)&&(UoutNetBus3 >=_iQ24 (0.001))){ AdcNetBus[3]= 40960; } * //(IS) if ((Gui_Vset3 = 0)&&(AdcNetBus[11]= 0)&&(UoutNetBus3 >=_iQ24 (0.001))){ AdcNetBus[11]= 40960; }
在调试时、结果如下:
Duty2. | 长 | 0.0 (Q 值(24)) | 0x00008850@数据 |
Gui_Iout2 | 内部 | 0.00494385 (Q 值(15)) | 0x0000881E@数据 |
Gui_Vout2 | 内部 | 23.8633 (Q 值(8)) | 0x00008822@数据 |
Gui_Iset2 | 内部 | 0.00497437 (Q 值(15)) | 0x00008816@数据 |
IrefNetBus2 | 长 | 126447 | 0x00008864@数据 |
UoutNetBus2 | 长 | 0.2317534685 (Q-Value (24)) | 0x00008860@数据 |
Hist_Vout2 | 长[8] | [1223、1219、1224、1222、1220...] | 0x00008950@数据 |
荷兰3. | 长 | 0.0 (Q 值(24)) | 0x0000884C@数据 |
Gui_Iout3 | 内部 | 0.0 (Q 值(15)) | 0x00008821@数据 |
Gui_Vout3 | 内部 | 11.3047 (Q 值(8)) | 0x00008823@数据 |
Gui_Iset3 | 内部 | 0.0 (Q 值(15)) | 0x00008819@数据 |
Hist_Vout3 | 长[8] | [572,588,579,582,588.58...] | 0x000088E0@数据 |
目标3. | 长 | 1198 | 0x00008828@数据 |
Vset3 | 长 | 1198 | 0x00008836@数据 |
Gui_Vset3 | 内部 | 15.0 (Q 值(8)) | 0x00008818@数据 |
VrefNetBus3 | 长 | 1198 | 0x00008852@数据 |
UoutNetBus3 | 长 | 0.0 (Q 值(24)) | 0x00008854@数据 |
AdcNetBus | 长[16] | [0、0、135168、0、0...] | 0x00008980@数据 |
CNTL_2P2Z_CoefStruct3.B2 | 长 | 327680 | 0x00008A4E@数据 |
AdcNetBus[11]>12. | 长 | 571 | |
AdcNetBus[10]>12. | 长 | 1224. |
是否可以更改反馈引脚或我的代码中缺少的内容?