From 76258c03d0c21342a9c20b485356736670c3ae86 Mon Sep 17 00:00:00 2001 From: seklyuts Date: Wed, 4 Sep 2024 09:17:21 +0300 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D0=B3=D0=BE=D1=82=D0=BE=D0=B2?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=B4=D0=BB=D1=8F=20=D0=B7=D0=B0=D1=89=D0=B8?= =?UTF-8?q?=D1=82=D1=8B=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20=D0=BA=D0=BE?= =?UTF-8?q?=D0=BC=D0=BF=D0=B0=D1=80=D0=B0=D1=82=D0=BE=D1=80=20SDFM-=D0=BC?= =?UTF-8?q?=D0=BE=D0=B4=D1=83=D0=BB=D1=8F.=20=D0=92=20CPU1=20=D0=B4=D0=BE?= =?UTF-8?q?=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=20=D0=BA=D1=80=D0=BE=D1=81?= =?UTF-8?q?=D1=81=D0=B1=D0=B0=D1=80=20=D0=B4=D0=BB=D1=8F=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=B2=D0=B5=D0=B4=D0=B5=D0=BD=D0=B8=D1=8F=20=D1=81=D0=B8=D0=B3?= =?UTF-8?q?=D0=BD=D0=B0=D0=BB=D0=BE=D0=B2=20=D1=81=20SDFM-=D0=BA=D0=BE?= =?UTF-8?q?=D0=BC=D0=BF=D0=B0=D1=80=D0=B0=D1=82=D0=BE=D1=80=D0=B0=20=D0=BD?= =?UTF-8?q?=D0=B0=20Digital=20Compare=20Submodule=20=D0=BC=D0=BE=D0=B4?= =?UTF-8?q?=D1=83=D0=B4=D1=8F=20PWM=20=D0=92=20=D0=B4=D0=B0=D0=BD=D0=BD?= =?UTF-8?q?=D0=BE=D0=B9=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D0=B8=20=D0=B2?= =?UTF-8?q?=D1=8B=D1=85=D0=B4=D1=8B=20sdfm-=D0=BC=D0=BE=D0=B4=D1=83=D0=BB?= =?UTF-8?q?=D0=B5=D0=B9=20=D1=82=D0=BE=D0=BA=D0=BE=D0=B2=20=D0=B8=20=D0=BD?= =?UTF-8?q?=D0=B0=D0=BF=D1=80=D1=8F=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BC?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D0=B0=20=D0=B2=D1=8B=D0=B2=D0=B5=D0=B4=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B=20=D0=BD=D0=B0=20=D0=BE=D0=B4=D0=B8=D0=BD=20=D1=81?= =?UTF-8?q?=D0=B8=D0=B3=D0=BD=D0=B0=D0=BB=20trip4,=20=D0=B0=20rrip4=20?= =?UTF-8?q?=D0=B2=D1=8B=D0=B2=D0=B5=D0=B4=D0=B5=D0=BD=20=D1=81=D1=80=D0=B0?= =?UTF-8?q?=D0=B7=D1=83=20=D0=BD=D0=B0=20=D0=B2=D1=81=D0=B5=204=20=D0=B2?= =?UTF-8?q?=D1=85=D0=BE=D0=B4=D0=BD=D1=8B=D1=85=20=D1=81=D0=B8=D0=B3=D0=BD?= =?UTF-8?q?=D0=B0=D0=BB=D0=B0=20DCS,=20=D1=87=D1=82=D0=BE=20=D0=B8=D0=B7?= =?UTF-8?q?=D0=B1=D1=8B=D1=82=D0=BE=D1=87=D0=BD=D0=BE=20=D0=B8=20=D0=B1?= =?UTF-8?q?=D1=83=D0=B4=D0=B5=D1=82=20=D0=B2=D1=8B=D0=B2=D0=B5=D0=B4=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE=20=D0=BD=D0=B0=20=D0=BE=D0=B4=D0=B8=D0=BD.=20?= =?UTF-8?q?=D0=A2=D0=B0=D0=BA=D0=B6=D0=B5=20=D1=81=D0=B5=D0=B9=D1=87=D0=B0?= =?UTF-8?q?=D1=81=20=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D1=83=D1=8E?= =?UTF-8?q?=D1=82=D1=81=D1=8F=20=D0=B2=D1=81=D0=B5=204=20=D1=81=D0=B8?= =?UTF-8?q?=D0=B3=D0=BD=D0=B0=D0=BB=D0=B0=20=D0=B2=D1=8B=D1=85=D0=BE=D0=B4?= =?UTF-8?q?=D0=BE=D0=B2=20DCS,=20=D1=87=D1=82=D0=BE=20=D1=82=D0=BE=D0=B6?= =?UTF-8?q?=D0=B5=20=D0=B8=D0=B7=D0=B1=D1=8B=D1=82=D0=BE=D1=87=D0=BD=D0=BE?= =?UTF-8?q?.=20=D0=A2=D0=B0=D0=BA=D0=B6=D0=B5=20=D0=BD=D0=B0=D0=B4=D0=BE?= =?UTF-8?q?=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D1=82=D1=8C=20=D0=B2=20?= =?UTF-8?q?=D1=81=D0=B4=D1=84=D0=BC=20=D0=BE=D0=B1=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D1=83=20=D0=BF=D1=80=D0=B5=D1=80=D1=8B=D0=B2=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=BF=D0=BE=20=D0=BA=D0=BE=D0=BC=D0=BF?= =?UTF-8?q?=D0=B0=D1=80=D0=B0=D1=82=D0=BE=D1=80=D1=83,=20=D1=87=D1=82?= =?UTF-8?q?=D0=BE=D0=B1=D1=8B=20=D0=B2=D1=8B=D1=81=D1=82=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D1=8F=D1=82=D1=8C=20=D1=81=D0=BE=D0=BE=D1=82=D0=B2=D0=B5=D1=82?= =?UTF-8?q?=D1=81=D1=82=D0=B2=D1=83=D1=8E=D1=89=D1=83=D1=8E=20=D0=BE=D1=88?= =?UTF-8?q?=D0=B8=D0=B1=D0=BA=D1=83=20=D0=B2=20=D0=9F=D0=9E=20=D1=81=20?= =?UTF-8?q?=D0=B2=D0=BE=D0=B7=D0=BC=D0=BE=D0=B6=D0=BD=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D1=8C=D1=8E=20=D0=B5=D1=91=20=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4?= =?UTF-8?q?=D0=B0=20(=D0=BD=D0=B0=20=D1=8D=D0=BA=D1=80=D0=B0=D0=BD=20?= =?UTF-8?q?=D0=B8=20=D0=B2=20=D0=BF=D1=80=D0=BE=D1=82=D0=BE=D0=BA=D0=BE?= =?UTF-8?q?=D0=BB=D1=8B=20=D0=BE=D0=B1=D0=BC=D0=B5=D0=BD=D0=B0).=20=D0=A2?= =?UTF-8?q?=D0=B0=D0=BA=D0=B6=D0=B5=20=D0=BD=D0=B0=D0=B4=D0=BE=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B5=D1=81=D1=82=D0=B8=20=D1=80=D0=B5=D1=84?= =?UTF-8?q?=D0=B0=D0=BA=D1=82=D0=BE=D1=80=D0=B8=D0=BD=D0=B3=20=D0=B2=D1=81?= =?UTF-8?q?=D0=B5=D0=B3=D0=BE=20=D0=BD=D0=B0=D0=BF=D0=B8=D1=81=D0=B0=D0=BD?= =?UTF-8?q?=D0=BD=D0=BE=D0=B3=D0=BE,=20=D0=BD=D0=B0=D0=B7=D0=B2=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D1=84-=D1=86=D0=B8=D0=B9=20=D0=B8=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D0=BD=D1=8B=D1=85=20=D1=81?= =?UTF-8?q?=D0=B4=D0=B5=D0=BB=D0=B0=D1=82=D1=8C=20=D0=BE=D0=B4=D0=BD=D0=BE?= =?UTF-8?q?=D0=BE=D0=B1=D1=80=D0=B0=D0=B7=D0=BD=D1=8B=D0=BC=D0=B8,=20?= =?UTF-8?q?=D0=B0=20=D1=82=D0=B0=D0=BA=D0=B6=D0=B5=20=D0=B8=D0=BD=D0=B8?= =?UTF-8?q?=D1=86=D0=B8=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D1=8E=20?= =?UTF-8?q?=D1=83=D0=B4=D0=BE=D0=B1=D0=BD=D0=BE=D0=B9,=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=BD=D1=8F=D1=82=D0=BD=D0=BE=D0=B9,=20=D0=BB=D0=B5=D0=B3?= =?UTF-8?q?=D0=BA=D0=BE=20=D0=BC=D0=BE=D0=B4=D0=B8=D1=84=D0=B8=D1=86=D0=B8?= =?UTF-8?q?=D1=80=D1=83=D0=B5=D0=BC=D0=BE=D0=B9.=20=D0=A2=D0=B0=D0=BA?= =?UTF-8?q?=D0=B6=D0=B5=20=D0=BF=D0=BB=D0=B0=D0=BD=D0=B8=D1=80=D1=83=D0=B5?= =?UTF-8?q?=D1=82=D1=81=D1=8F=20=D0=B2=D0=BD=D0=B5=D0=B4=D1=80=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=BE=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=BA?= =?UTF-8?q?=D0=B8=20=D1=82=D0=B5=D0=BD=D0=B7=D0=BE=D0=B4=D0=B0=D1=82=D1=87?= =?UTF-8?q?=D0=B8=D0=BA=D0=BE=D0=B2=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20485?= =?UTF-8?q?=20(=D0=B2=D0=BC=D0=B5=D1=81=D1=82=D0=BE=20=D0=BE=D1=82=D0=BB?= =?UTF-8?q?=D0=B0=D0=B4=D0=BA=D0=B8),=20=D0=B4=D0=BB=D1=8F=20=D1=87=D0=B5?= =?UTF-8?q?=D0=B3=D0=BE=20=D0=B2=D0=B2=D0=B5=D1=81=D1=82=D0=B8=20=D0=B4?= =?UTF-8?q?=D0=B5=D1=84=D0=B0=D0=B9=D0=BD,=20=D0=BE=D0=BF=D1=80=D0=B5?= =?UTF-8?q?=D0=B4=D0=B5=D0=BB=D1=8F=D1=8E=D1=89=D0=B8=D0=B9=20=D1=87=D1=82?= =?UTF-8?q?=D0=BE=20=D1=81=D0=B5=D0=B9=D1=87=D0=B0=D1=81=20=D0=B0=D0=BA?= =?UTF-8?q?=D1=82=D0=B8=D0=B2=D0=BD=D0=BE=20--=20=D0=BE=D1=82=D0=BB=D0=B0?= =?UTF-8?q?=D0=B4=D0=BA=D0=B0=20=D0=B8=D0=BB=D0=B8=20=D1=82=D0=B5=D0=BD?= =?UTF-8?q?=D0=B7=D0=BE=D0=B4=D0=B0=D1=82=D1=87=D0=B8=D0=BA=D0=B8.=20?= =?UTF-8?q?=D0=A2=D0=B0=D0=BA=D0=B6=D0=B5=20=D0=BD=D0=B0=D0=B4=D0=BE=20?= =?UTF-8?q?=D0=B2=D1=8B=D0=BF=D0=B8=D0=BB=D0=B8=D1=82=D1=8C=20(=D0=B8?= =?UTF-8?q?=D0=BB=D0=B8=20=D0=B2=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D0=BD=D0=BE?= =?UTF-8?q?=20=D0=B7=D0=B0=D0=BA=D0=BE=D0=BC=D0=BC=D0=B5=D0=BD=D1=82=D0=B8?= =?UTF-8?q?=D1=82=D1=8C)=20=D0=B2=20CPU1=20=D1=82=D0=BE=D1=82=20=D0=BA?= =?UTF-8?q?=D0=BE=D0=B4=20=D1=87=D1=82=D0=BE=20=D0=BF=D0=B5=D1=80=D0=B5?= =?UTF-8?q?=D1=88=D1=91=D0=BB=20=D0=B2=20CPU2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/Peripherals/sdfm_pwm_xbar.c | 33 ++++++ .../src/Peripherals/sdfm_pwm_xbar.h | 13 +++ .../epwm_test_biss_c_cpu1/src/init_perif.c | 1 + Projects/epwm_test_biss_c_cpu2/Start_rfm.pmp | Bin 59925 -> 61234 bytes .../src/Peripherals/pwm_init.c | 98 +++++++++++++++--- .../src/Peripherals/pwm_init.h | 2 +- .../src/Peripherals/sdfm.c | 39 ++++++- Projects/epwm_test_biss_c_cpu2/src/frm_uart.c | 3 +- Projects/epwm_test_biss_c_cpu2/src/vector.c | 4 +- 9 files changed, 169 insertions(+), 24 deletions(-) create mode 100644 Projects/epwm_test_biss_c_cpu1/src/Peripherals/sdfm_pwm_xbar.c create mode 100644 Projects/epwm_test_biss_c_cpu1/src/Peripherals/sdfm_pwm_xbar.h diff --git a/Projects/epwm_test_biss_c_cpu1/src/Peripherals/sdfm_pwm_xbar.c b/Projects/epwm_test_biss_c_cpu1/src/Peripherals/sdfm_pwm_xbar.c new file mode 100644 index 0000000..2993861 --- /dev/null +++ b/Projects/epwm_test_biss_c_cpu1/src/Peripherals/sdfm_pwm_xbar.c @@ -0,0 +1,33 @@ +/* + * sdfm_pwm_xbar.c + * + * Created on: 29 авг. 2024 г. + * Author: seklyuts + */ +#include "f28x_project.h" +#include "pwm_init.h" + + +void sdfm_pwm_xbarInit(void) +{ + EALLOW; +// EPwmXbarRegs.TRIPLOCK = 0x5A5A0000; +// EPwmXbarRegs.TRIP4MUX0TO15CFG.bit. = ; //str 2145 + EPwmXbarRegs.TRIP4MUX16TO31CFG.bit.MUX16 = 1;//SD1FLT1.CEVT1_OR_CEVT2 + EPwmXbarRegs.TRIP4MUX16TO31CFG.bit.MUX18 = 1;//SD1FLT2.CEVT1_OR_CEVT2 + EPwmXbarRegs.TRIP4MUX16TO31CFG.bit.MUX20 = 1;//SD1FLT3.CEVT1_OR_CEVT2 + EPwmXbarRegs.TRIP4MUX16TO31CFG.bit.MUX22 = 1;//SD1FLT4.CEVT1_OR_CEVT2 + EPwmXbarRegs.TRIP4MUX16TO31CFG.bit.MUX24 = 1;//SD2FLT1.CEVT1_OR_CEVT2 + EPwmXbarRegs.TRIP4MUX16TO31CFG.bit.MUX26 = 1;//SD2FLT2.CEVT1_OR_CEVT2 + EPwmXbarRegs.TRIP4MUX16TO31CFG.bit.MUX28 = 1;//SD2FLT3.CEVT1_OR_CEVT2 + EPwmXbarRegs.TRIP4MUX16TO31CFG.bit.MUX30 = 1;//SD2FLT4.CEVT1_OR_CEVT2 + EPwmXbarRegs.TRIP4MUXENABLE.bit.MUX16 = 1; + EPwmXbarRegs.TRIP4MUXENABLE.bit.MUX18 = 1; + EPwmXbarRegs.TRIP4MUXENABLE.bit.MUX20 = 1; + EPwmXbarRegs.TRIP4MUXENABLE.bit.MUX22 = 1; + EPwmXbarRegs.TRIP4MUXENABLE.bit.MUX24 = 1; + EPwmXbarRegs.TRIP4MUXENABLE.bit.MUX26 = 1; + EPwmXbarRegs.TRIP4MUXENABLE.bit.MUX28 = 1; + EPwmXbarRegs.TRIP4MUXENABLE.bit.MUX30 = 1; + EDIS; +} diff --git a/Projects/epwm_test_biss_c_cpu1/src/Peripherals/sdfm_pwm_xbar.h b/Projects/epwm_test_biss_c_cpu1/src/Peripherals/sdfm_pwm_xbar.h new file mode 100644 index 0000000..9b88f46 --- /dev/null +++ b/Projects/epwm_test_biss_c_cpu1/src/Peripherals/sdfm_pwm_xbar.h @@ -0,0 +1,13 @@ +/* + * sdfm_pwm_xbar.h + * + * Created on: 29 авг. 2024 г. + * Author: seklyuts + */ + +#ifndef SRC_PERIPHERALS_SDFM_PWM_XBAR_H_ +#define SRC_PERIPHERALS_SDFM_PWM_XBAR_H_ + +void sdfm_pwm_xbarInit(void); + +#endif /* SRC_PERIPHERALS_SDFM_PWM_XBAR_H_ */ diff --git a/Projects/epwm_test_biss_c_cpu1/src/init_perif.c b/Projects/epwm_test_biss_c_cpu1/src/init_perif.c index 4baf734..639dcbc 100644 --- a/Projects/epwm_test_biss_c_cpu1/src/init_perif.c +++ b/Projects/epwm_test_biss_c_cpu1/src/init_perif.c @@ -117,6 +117,7 @@ void InitPerif(void) SpiCGpioInit(); BissGpioInit(); BissInit(); + sdfm_pwm_xbarInit(); diff --git a/Projects/epwm_test_biss_c_cpu2/Start_rfm.pmp b/Projects/epwm_test_biss_c_cpu2/Start_rfm.pmp index 060700f4c9950623913e526f5ab43a1f9007e407..40cd7b8a537bfcea3ff59daa31f90577d299be4c 100644 GIT binary patch delta 5028 zcmbuC4OrFH9mmhP7kRq~T;=knyr=S_auL*01Q`J<_V~)$5RnuyS&D^dWaZ`VX-%8x z@Ruf}8H$)X8~V>)G$IzRjm&gl%zP|cgNaj@)z(~PJO6X}f6w)K=vlV^^V~n5^F8N( ze&^-)`<=s)TtEk7cnFkwnTA;^n&XbKI zZL<2(V$UerpB_)YzGpZESZgT5D~bP=oYVJ`)jO8^Qr7%TTIrq6FKR8`6FKh|Rn4@) zcMSKSnBr!dX9?kNOD)vz3_l_1si9%~9Z3cLVf>_|pa2{164XQ|15!<-ul^SS8Kf|Z>=wSDd(5n8bnDmZTxdF%!jDPo=o?S@}ph1h46p6 zDRKN?ZY4jOG&+QT;jU~R6T<)PE>NdXuHU3Q6(7R?bCa?lA%uS^lqL#KjN&$I(S^iO zVx_a@x6_40Kk7;f<6bBo9UI2I^^&$_Tvq@;BR+4TunZf2Ptu2idL-@1wDCVnx_`Qj zpA~eRzc0&QWZC#RNv%JyQOt}VQp>aw?cwb0oKKQ=dU8hc$$~c1EUO2dx-*qpbA$Np z(kkU`^yGbXXk0#ha(|KbhZzr>O%pstRSNY*2h#Gnp=7s~(3f)(bUCItSvZ-eRy4O} zi0r(RnhR~R^G^JMfCU~pQ^3CqXGRu{&@MbcFB{H#O3-dSPYx!bQuA`h& z5(A7_xp>L)-122rm1yS!=_|1~d9tO5mD_`Ledg-2%IsB@m1PxG*(+96RF$dkzNP+e zVtP%KyX~+DzU$j^#5=S8KJngLf46vlT7Q>#r#Gzk{H(?_CqI?48X~E`;Smwov&A~C zeWsP)p!Ds9k=)4{W7XoP|5YWEEK$+9MDsT_H|WClDPvWos2gayUni9GZU#Qg-H{R! z$}CRC0)!Y03Sky<^vB6gU)(W~2Wp4jsx{HhqoWWtPN+`ZK#!MC~Au~z zCFhY0?dg^u$vPT$AYV(-a$ODA92xk+|CN_b1Cu4!TyJ5rX=0-c_fyl3f_4(5wm~h* zZAPtwMH|Q(K^s6ZAmxOop}hl&16>7O2Au_M1Qkkh=;5P$*$>rEg2sXd^Yjs@eFUVu z|0mGWKu>^bn8o3AMeth?*MZ&zDX)DF+DD)W(2periYe`arlL;y+V4@D84HXDm4Hrw zia~HxBaCIT@ot?x#LTSDYP!~urR{7jHt}lh>$W#czCziyX zw;pJ5ECZwYIj9tr2f70^9rUb04mR09_IJ=iP&#NaC>gW_Gy#+YQckl7S~w^`lJvdt z5Ql;KLCR~ULc0XY1eJmA1!aS>KvO`EGfU8b@7W zY_+^)=plH5>!J*{2f97A$aiy1-fP@cZU5;<^({T2C3L@Pnyn5veKS=_SaB=4?j5>j z+zWK0#tBdjTJ7dSg*|b?OpoU1dC72?TMu>%yNJ%!X>bZ!1L$p#%AB2s7R$C9$W&I_ z0qq&LaewuG>Y%qVeei>=3a)YM&Q*W!+e0inhQS;JHG*CNX`ua}qXs!xlY#6os15Wo z=r^Etkh;OW4s8$UCD03?eV}GZGBAD%@c`%us1+v_SKPN!&Taf(D!+fIS=papb1mpSkjl*}BM*{> z7qD)8(gPYSt2$7t^6MFBYT7DoiX^Bnw3zq}=2hzYS58j+QZFXnsjs3XzD1chvp0NFv!6+8p!-W;h>$M0MIbd2v8y@2{Z}hI)L<3#|N54(kNZ@ Ohv)^ef`-fW+xlPPi4m#* delta 4884 zcmbuB3sjX=7RS%|F2d#g(92Wanmj}xqt>JYGKNLELX>PA6jOmBvuTjQnz6XdYBkk} ziaRY71QPH;8v2c876KO2z?h}y_|=b zP1+jhMaAyXbUY=2wk?}X{(*MN^hoCKQT4oi6ljg(-%wh7BBdq=(+2BY{-NGs&EULW zbhpuFuNm5xhiPa|B@NlrsL(r@_sEV=pNssIq-TA@_#2W6{KEK~lBW3Ec%PsaI^#cE z8#+wqZfcW`=mD`Vj(Np*c6l3(B7{_Si&8+%J%>A5y>@px)n(5+Kg_|46o|a1YPWPb~riJj& zU6gqKSC^I#-F!m`|C_6_eMSiX!d0Mtq5OS}@@zr~zcxlGN(|xu5K0S$Cq;8l?A1`x zbpEB&$xi;2lUnG+%rO47Y-Q!t={r--`_nJH_mO{QG(Rn->7b7?ZTxLXtywmHM$)=@ zHhxx6FCUQY>)AGbPEzMjZ2Y{SHvQ50^_)jh_KF_5lrxn_3))VL1Knugw%OFVUB*nj|36uYvGx_;_O$t!F;PFVbi$Lp~xYuxzz!b`{Q z3_RsV%h$y6Zm9&6-J&P1t>ZjZu3d*1R8|ttXJI9?%B=dF(ufc~6$AeDSS*h)2k5GRQ{uH)|A10^}Hrst8&cUXiO{~Wof** z4edtpv51c+dlOU70Nn*D0{sd!4BBgwAL}!bU2%BmD_)zqFDqGF@$+()PF;J~dNAhA zzO_eEYD;E`!^LLdg7JKRhbOU3u=F^n3bYXP7*;BhzG=yEE|IZQ#`FCxdazu~c_*kA zM4+vpGSI^&(Q|!~7QgC9eXw<><|%;lT=q{+0iVpFZB6d_>-!ftWVeEn4HcB$k*Vjl zFVc*^Q2w!n`tYFzvZ2rH*y@0jN4Gg3|5&Z&Wz0Bf>BA)@#qz&N#}_%ZHRY?o-4M@#VnK*%HVxVq&|9Dc&{Lq5pg7P?AQ2W-&Wt_{QAIIg#U-1XFfJ0L zqJ1W`GoU|%&Vv2`ihTk24CpfGZ6wVo)pq4i(wJX$IpsBFQ*L{bzNCA$=26bwHWZhx zHzJBoo^aO(PE~3Yb^eAQoM7?nN3ee{C=FBs@(2AGRBTce`^-cZ1ey!F3d#bl2Hgny z9CSNq4rnbX9CWKB8ChztXQ6vOC>68@lnvSgQrmh9v>ecHK=VLPFzXa&WR*h9blJ>T z`U)%+)eXj0>UsT}jKa|%j*c45Q1zm-BW7jTHQ~w-ct#;M%ThxQOi<-SVzrRZG&S}aNK-vba;CaYpzfZjroN?MhmzeTUgtR>LY5%nN6 zaVFF5zOYE+(6nUVHeVdh6|7R;D=Z=fd$}RXBA#(!k!G!MRo;4cljdWL@epH*%Sub- zxSGr5TE05vj9pbNVa}!HxT_eNc`dLA%jVsq5>(+5PnCo5B7_F?`oWjY$eH-j>dopg zc?0NApaIZskgC)DrWVI`naECqJ_U(7sP0Tdv&X%Nedi6Xb?A{FT;bx_aX7OdbQ07I zdI{7GI$%;2d(}kN26_#&57Y^I9dsCU6r_&2E@&;Fmq9N|k{Qwp@dT&`bPRM5q>iu- zXh%T52epHA&?_KuZh1K?+##3!?Eg62-LKkL;{`J66Ndk3-wB}J!w!ZA4`>1&^OJDd2Zf_IMv_Ph+uqv~vXkLID zsw}EfdEV?TVvbsAT%s0}QKi1Cc!e@A7)l1I6DI+MP&mjFTZCTL.bit.TZA = 2; - EPwmRegs[PWM_A]->TZCTL.bit.TZB = 2; - EPwmRegs[PWM_B]->TZCTL.bit.TZA = 2; - EPwmRegs[PWM_B]->TZCTL.bit.TZB = 2; - EPwmRegs[PWM_C]->TZCTL.bit.TZA = 2; - EPwmRegs[PWM_C]->TZCTL.bit.TZB = 2; + EPwmRegs[PWM_A]->TZFRC.all = 4; + EPwmRegs[PWM_B]->TZFRC.all = 4; + EPwmRegs[PWM_C]->TZFRC.all = 4; +// EPwmRegs[PWM_A]->TZCTL.bit.TZA = 2; +// EPwmRegs[PWM_A]->TZCTL.bit.TZB = 2; +// EPwmRegs[PWM_B]->TZCTL.bit.TZA = 2; +// EPwmRegs[PWM_B]->TZCTL.bit.TZB = 2; +// EPwmRegs[PWM_C]->TZCTL.bit.TZA = 2; +// EPwmRegs[PWM_C]->TZCTL.bit.TZB = 2; EDIS; } void PWM_ABC_StartOut(void) { EALLOW; - EPwmRegs[PWM_A]->TZCTL.bit.TZA = 3; - EPwmRegs[PWM_A]->TZCTL.bit.TZB = 3; - EPwmRegs[PWM_B]->TZCTL.bit.TZA = 3; - EPwmRegs[PWM_B]->TZCTL.bit.TZB = 3; - EPwmRegs[PWM_C]->TZCTL.bit.TZA = 3; - EPwmRegs[PWM_C]->TZCTL.bit.TZB = 3; + EPwmRegs[PWM_A]->TZCLR.all = 0x4;// + EPwmRegs[PWM_B]->TZCLR.all = 0x4;// + EPwmRegs[PWM_C]->TZCLR.all = 0x4;// EDIS; } @@ -81,13 +81,79 @@ void PWM_ABC_Start(uint16_t Num) EDIS; } - +/* + * Нужно сформировать с соответствующих каналов SDFM (трёх каналов, на которых происходит измерение токов) + * модулей сигналы CEVT1 и/или CEVT2, выбрав значения CEVT1SEL и CEVT2SEL и настроив границы + * SDFLTxCMPH1.bit.HLT и SDFLTxCMPL1.bit.LLT (или SDFLTxCMPH2.bit.HLT и SDFLTxCMPL2.bit.LLT). + * + * На CPU1 при помощи EPwmXbarRegs (см. стр. 2145 TRM) подключить эти выходы на входы + * TRIPn (можно черех MUX завести сразу несколько сигналов SDxFLTy.CEVT1_OR_CEVT2 на один TRIPn, + * где n = 4..12, x = 1..2, y = 1..4) + * + * На блоке PWM подключить TRIPn к блоку "Digital Compare Signals" (стр 2917 TRM) + * через регистры DCTRIPSEL соответствующих PWM-модулей (трёх модулей, отвечающих за формирование + * напряжения мотора). Если настроено верно, то изменения сигналов можно видеть в DCACTL и/или DCBCTL + * в битах EVT1LAT и/или EVT2LAT. + */ void PWMTripInit(void) { EALLOW; - EPwmRegs[PWM_A]->DCTRIPSEL.all = 0x3333; - EPwmRegs[PWM_B]->DCTRIPSEL.all = 0x3333; - EPwmRegs[PWM_C]->DCTRIPSEL.all = 0x3333; + EPwmRegs[PWM_A]->DCTRIPSEL.all = 0x3333;//3 - TRIPIN4 + EPwmRegs[PWM_B]->DCTRIPSEL.all = 0x3333;//3 - TRIPIN4 + EPwmRegs[PWM_C]->DCTRIPSEL.all = 0x3333;//3 - TRIPIN4 + EPwmRegs[PWM_A]->TZDCSEL.all = 0b010010010010; + EPwmRegs[PWM_B]->TZDCSEL.all = 0b010010010010; + EPwmRegs[PWM_C]->TZDCSEL.all = 0b010010010010; + EPwmRegs[PWM_A]->TZSEL.bit.DCAEVT1 = 1; + EPwmRegs[PWM_B]->TZSEL.bit.DCAEVT1 = 1; + EPwmRegs[PWM_C]->TZSEL.bit.DCAEVT1 = 1; + EPwmRegs[PWM_A]->TZSEL.bit.DCBEVT1 = 1; + EPwmRegs[PWM_B]->TZSEL.bit.DCBEVT1 = 1; + EPwmRegs[PWM_C]->TZSEL.bit.DCBEVT1 = 1; + EPwmRegs[PWM_A]->TZSEL.bit.DCAEVT2 = 0; + EPwmRegs[PWM_B]->TZSEL.bit.DCAEVT2 = 0; + EPwmRegs[PWM_C]->TZSEL.bit.DCAEVT2 = 0; + EPwmRegs[PWM_A]->TZSEL.bit.DCBEVT2 = 0; + EPwmRegs[PWM_B]->TZSEL.bit.DCBEVT2 = 0; + EPwmRegs[PWM_C]->TZSEL.bit.DCBEVT2 = 0; + EPwmRegs[PWM_A]->TZCTL.bit.DCAEVT1 = 2; //Force EPWMxA to a low state. + EPwmRegs[PWM_B]->TZCTL.bit.DCAEVT1 = 2; //Force EPWMxA to a low state. + EPwmRegs[PWM_C]->TZCTL.bit.DCAEVT1 = 2; //Force EPWMxA to a low state. + EPwmRegs[PWM_A]->TZCTL.bit.DCBEVT1 = 2; //Force EPWMxB to a low state. + EPwmRegs[PWM_B]->TZCTL.bit.DCBEVT1 = 2; //Force EPWMxB to a low state. + EPwmRegs[PWM_C]->TZCTL.bit.DCBEVT1 = 2; //Force EPWMxB to a low state. + EPwmRegs[PWM_A]->TZCTL.bit.DCAEVT2 = 2; //Force EPWMxA to a low state. + EPwmRegs[PWM_B]->TZCTL.bit.DCAEVT2 = 2; //Force EPWMxA to a low state. + EPwmRegs[PWM_C]->TZCTL.bit.DCAEVT2 = 2; //Force EPWMxA to a low state. + EPwmRegs[PWM_A]->TZCTL.bit.DCBEVT2 = 2; //Force EPWMxB to a low state. + EPwmRegs[PWM_B]->TZCTL.bit.DCBEVT2 = 2; //Force EPWMxB to a low state. + EPwmRegs[PWM_C]->TZCTL.bit.DCBEVT2 = 2; //Force EPWMxB to a low state. + EPwmRegs[PWM_A]->TZOSTCLR.all = 0xFFFF;// + EPwmRegs[PWM_B]->TZOSTCLR.all = 0xFFFF;// + EPwmRegs[PWM_C]->TZOSTCLR.all = 0xFFFF;// + EPwmRegs[PWM_A]->DCACTL.bit.EVT2LATSEL = 1; + EPwmRegs[PWM_B]->DCACTL.bit.EVT2LATSEL = 1; + EPwmRegs[PWM_C]->DCACTL.bit.EVT2LATSEL = 1; + EPwmRegs[PWM_A]->DCACTL.bit.EVT1LATSEL = 1; + EPwmRegs[PWM_B]->DCACTL.bit.EVT1LATSEL = 1; + EPwmRegs[PWM_C]->DCACTL.bit.EVT1LATSEL = 1; + +// EPwmRegs[PWM_A]->TZFRC.bit.DCAEVT1 = 1; +// EPwmRegs[PWM_B]->TZFRC.bit.DCAEVT1 = 1; +// EPwmRegs[PWM_C]->TZFRC.bit.DCAEVT1 = 1; + EDIS; +} + + +void PWM_clrTripEvnt(void) +{ + EALLOW; + EPwmRegs[PWM_A]->TZCLR.all = 0xFFFF;// + EPwmRegs[PWM_B]->TZCLR.all = 0xFFFF;// + EPwmRegs[PWM_C]->TZCLR.all = 0xFFFF;// + EPwmRegs[PWM_A]->TZOSTCLR.all = 0xFFFF;// + EPwmRegs[PWM_B]->TZOSTCLR.all = 0xFFFF;// + EPwmRegs[PWM_C]->TZOSTCLR.all = 0xFFFF;// EDIS; } diff --git a/Projects/epwm_test_biss_c_cpu2/src/Peripherals/pwm_init.h b/Projects/epwm_test_biss_c_cpu2/src/Peripherals/pwm_init.h index 4b290ce..f711f9b 100644 --- a/Projects/epwm_test_biss_c_cpu2/src/Peripherals/pwm_init.h +++ b/Projects/epwm_test_biss_c_cpu2/src/Peripherals/pwm_init.h @@ -29,7 +29,7 @@ #define SDFM_DELAY (SDFM_DELAY_mkS*SYS_PWM_FREQUENCY/1000000) #define PERIOD_DIV2 (PERIOD_MOTOR/2.0) -#define PERIOD_MAX (PERIOD_MOTOR*1.25) +#define PERIOD_MAX (PERIOD_MOTOR*1.25) //#define PWM_MAX (PERIOD_MOTOR - EPWM_DB) //#define PWM_MIN EPWM_DB*2 #define INDEPENDED 1 diff --git a/Projects/epwm_test_biss_c_cpu2/src/Peripherals/sdfm.c b/Projects/epwm_test_biss_c_cpu2/src/Peripherals/sdfm.c index 99ea526..fbefc13 100644 --- a/Projects/epwm_test_biss_c_cpu2/src/Peripherals/sdfm.c +++ b/Projects/epwm_test_biss_c_cpu2/src/Peripherals/sdfm.c @@ -88,11 +88,23 @@ volatile int16 * SdfmReadData[8] = { (volatile int16 *)((Uint16)0x5EC7), }; +volatile int16 * SdfmReadFiltr[8] = { + (volatile int16 *)((Uint16)0x5E1A), + (volatile int16 *)((Uint16)0x5E2A), + (volatile int16 *)((Uint16)0x5E3A), + (volatile int16 *)((Uint16)0x5E4A), + (volatile int16 *)((Uint16)0x5E9A), + (volatile int16 *)((Uint16)0x5EAA), + (volatile int16 *)((Uint16)0x5EBA), + (volatile int16 *)((Uint16)0x5ECA), +}; + #define WAIT_STABILITY_SDFM 6 int16_t sdfmAdc[8] = {0,0,0,0,0,0,0,0}; +int16_t sdfmFiltr[8]= {0,0,0,0,0,0,0,0}; int16_t sdfmAdcErr[8] = {0,0,0,0,0,0,0,0}; -int16_t sdfmOffset[8] = {0,0,0,0,0,-10,0,0}; +int16_t sdfmOffset[8] = {0,0,-50,0,0,0,0,0}; uint16_t startInitCurrent = 0; uint16_t initDone[8] = {WAIT_STABILITY_SDFM,WAIT_STABILITY_SDFM,WAIT_STABILITY_SDFM,WAIT_STABILITY_SDFM,WAIT_STABILITY_SDFM,WAIT_STABILITY_SDFM,WAIT_STABILITY_SDFM,WAIT_STABILITY_SDFM}; uint16_t AllInitDone =0; @@ -312,9 +324,16 @@ void SdfmInit(void) Sdfm2Regs.SDDFPARM4.bit.FEN = 1; EDIS; - sdfmInitPwmFlt(SDFM_IA, Max, Min); - sdfmInitPwmFlt(SDFM_IB, Max, Min); - sdfmInitPwmFlt(SDFM_IC, Max, Min); + Max = (BIT_MAX>>1)+IMAX_A_KZ*DIV_FACTOR_CURRENT_MOTOR/2/20; + Min = (BIT_MAX>>1)-IMAX_A_KZ*DIV_FACTOR_CURRENT_MOTOR/2/20; + + + + sdfmInitPwmFlt(SDFM_IA, Min, Max); + sdfmInitPwmFlt(SDFM_IB, Min, Max); + sdfmInitPwmFlt(SDFM_IC, Min, Max); + + sdfmInitPwmFlt(SDFM_U_DC, 0, 0x4200); } #define CEVT_interrupt_enable 0; @@ -335,6 +354,7 @@ void sdfmInitPwmFlt(uint16_t N, uint16_t LowFLT, uint16_t HightFlt) Sdfm1Regs.SDCPARM1.bit.EN_CEVT2 = CEVT_interrupt_enable; Sdfm1Regs.SDFLT1CMPH1.bit.HLT = HightFlt; Sdfm1Regs.SDFLT1CMPL1.bit.LLT = LowFLT; + //Sdfm1Regs.SDIFLG.bit.FLT1_FLG_CEVT1;-flag break; case 1: Sdfm1Regs.SDCPARM2.bit.CEVT1SEL = 1; @@ -432,6 +452,7 @@ void sdfmGetResult(uint16_t N) FilterResult[N][loopCounter[N]] = *SdfmReadData[N]; sdfmAdc[N] = FilterResult[N][loopCounter[N]] - sdfmOffset[N]; + sdfmFiltr[N] = *SdfmReadFiltr[N]; if((N != SDFM_U_DC)&(N != SDFM_BRAKE)) { if(loopCounter[N] < MAX_SAMPLES) loopCounter[N]++; else @@ -492,6 +513,15 @@ void sdfm_check_brake_measurements_was_done(void) } } +uint16_t sdfmOverCurrentCounter = 0; + +void sdfmOverCurrent(void) +{ +// PWM_ABC_StopAllClose(); +// vectorFault(); + sdfmOverCurrentCounter++; +} + __interrupt void Sdfm1_ISR(void) { @@ -503,6 +533,7 @@ uint32_t IntFlags; for(i = 0; i < 4; i++) if((uint16_t)IntFlags & (0x1000 << i)) sdfmGetResult(i); for(i = 0; i < 4; i++) if((uint16_t)IntFlags & (0x100 << i)) sdfmErr(i); + if( (((uint16_t)IntFlags)&0xFF) != 0 ) sdfmOverCurrent(); Sdfm_clearFlagRegister(SDFM1,IntFlags); sdfm_check_all_current_measurements_was_done(); diff --git a/Projects/epwm_test_biss_c_cpu2/src/frm_uart.c b/Projects/epwm_test_biss_c_cpu2/src/frm_uart.c index 7d0c701..2a62a71 100644 --- a/Projects/epwm_test_biss_c_cpu2/src/frm_uart.c +++ b/Projects/epwm_test_biss_c_cpu2/src/frm_uart.c @@ -9,7 +9,8 @@ #include "frm_uart.h" #define LSPCLK_HZ 50000000.0 -#define BAUD 57600.0 +//#define BAUD 57600.0 +#define BAUD 4000000.0 #define BRR LSPCLK_HZ/(BAUD*8) + 1 uint16_t frmEn = 0; diff --git a/Projects/epwm_test_biss_c_cpu2/src/vector.c b/Projects/epwm_test_biss_c_cpu2/src/vector.c index 09404c0..b94a367 100644 --- a/Projects/epwm_test_biss_c_cpu2/src/vector.c +++ b/Projects/epwm_test_biss_c_cpu2/src/vector.c @@ -393,10 +393,10 @@ void vector_klark_park(uint16_t SectorOn, int16_t CurrentA, int16_t CurrentB, in ( CurrLoop.piIq.Ref = -CurrLoop.CurrentLimit); } - CurrLoop.piIq.Fbk = vectorIdq.q; + CurrLoop.piIq.Fbk = vectorIdq.q;// действующий ток // CurrLoop.piId.Ref = 0; - CurrLoop.piId.Fbk = vectorIdq.d; + CurrLoop.piId.Fbk = vectorIdq.d;// // CurrLoop.piId.Umax = CurrLoop.piIq.Umax = Inputs->Udc; // CurrLoop.piId.Umin = CurrLoop.piIq.Umin = -CurrLoop.piIq.Umax;