6321|7

2700

帖子

0

TA的资源

五彩晶圆(初级)

楼主
 

C2000-28335双电机驱动器 第3坑 [复制链接]

      今天得空翻一下濒临烂尾的电机板。
      先晒个图吧,治一治颈椎病。电机型号是D4215-650KV。

      这一次主要还是想确认硬件没问题。之前发现一个bug,drv8302的fault信号是oc输出,连接到28335引脚,但是其中一个电机的这组信号对5v接的上拉,有点坑啊。飞线太影响外观,所以接了个大电阻,虽然不合理,但是不会搞坏28335,毕竟内部有对3v3的钳位二极管。
      用28335的原因,一开始考虑的就是代码的借用,这次测试用的代码就是从逆变器修改过来的。首先采用查表法得到正弦参考相位,然后svpwm的方式发pwm,说白了就是一个开环的正弦逆变。毕竟我对于电机是个小白。一开始还掉坑里了,程序是3电平的pwm程序,一开始看不到正弦信号,实际是发到另外一路电机上去了,但是drv8302有pwm使能,很好的保护到了。
      上传个简单的视频:http://v.youku.com/v_show/id_XMjg2NjM0NjgzNg==.html?spm=a2h3j.8428770.3416059.1
      一开始发的是50Hz的工频交流信号,电机转速比较低,算下来就是50*60=300RPM,所以电流比较大,电机发热也严重。但是把频率调上去之后,情况有很大的改善。没有理论支撑的都是瞎折腾,在此求哪位大神伸伸大腿给抱一下。
      
      
      这次调试还好没遇到很大的麻烦,虽然是开环测试,但是基于之前已经把串口调试ok了,这次通过串口助手各种修改参数就可以,不用频繁的修改代码烧录程序,后面考虑专门给它配一个上位机就更方便了。
      再次说明,本人电机小白,还望各路大神不吝赐教,非喜勿喷。

      最后把28335epwm的配置分享一下:由于目前只调了其中一路电机,只配置了epwm1-3,实际两路要用epwm1-6共12个pwm,当然通过配置drv8302,也可以实现用3路pwm控制一个电机。
  1. // Initialize ePWM1/2/3/4/5/6
  2.         UNPROTECT_REGS();
  3.         SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;   // Enable TBCLK within the ePWM
  4.         PROTECT_REGS();



  5.         //-------------------------------------------------------------------------
  6.         // Epwm1
  7.         //-------------------------------------------------------------------------
  8.        
  9.         UNPROTECT_REGS();
  10.         EPwm1Regs.TZCTL.bit.TZA = TZ_NO_CHANGE;
  11.         EPwm1Regs.TZCTL.bit.TZB = TZ_NO_CHANGE;
  12.         PROTECT_REGS();
  13.        

  14.         //Time-Base Period Register (TBPRD) Field Descriptions
  15.         EPwm1Regs.TBPRD = KSwPrdCnst;
  16.         EPwm1Regs.CMPA.half.CMPA = (KSwPrdCnst >> 1);                     // set duty 50% initially

  17.         //These bits set time-base counter phase of the selected ePWM relative to the time-base that is
  18.         //supplying the synchronization input signal.
  19.         //        · If TBCTL[PHSEN] = 0, then the synchronization event is ignored and the time-base counter is
  20.         //                not loaded with the phase.
  21.         //        · If TBCTL[PHSEN] = 1, then the time-base counter (TBCTR) will be loaded with the phase
  22.         //                (TBPHS) when a synchronization event occurs. The synchronization event can be initiated by
  23.         //        the input synchronization signal (EPWMxSYNCI) or by a software forced synchronization.
  24.         EPwm1Regs.TBPHS.all = 0;       

  25.         //Time-Base Counter Register (TBCTR) Field Descriptions
  26.         EPwm1Regs.TBCTR = 0;


  27.        
  28.         //Counter Mode
  29.         //The time-base counter mode is normally configured once and not changed during normal operation.
  30.         //If you change the mode of the counter, the change will take effect at the next TBCLK edge and the
  31.         //current counter value shall increment or decrement from the value before the mode change.
  32.         //These bits set the time-base counter mode of operation as follows:
  33.         //        00 Up-count mode
  34.         //        01 Down-count mode
  35.         //        10 Up-down-count mode
  36.         //        11 Stop-freeze counter operation (default on reset)
  37.         EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;        //Symmetrical mode.

  38.         //Counter Register Load From Phase Register Enable
  39.         //        0 Do not load the time-base counter (TBCTR) from the time-base phase register (TBPHS)
  40.         //        1 Load the time-base counter with the phase register when an EPWMxSYNCI input signal occurs or
  41.         //        when a software synchronization is forced by the SWFSYNC bit
  42.         EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;                                //Mater module.

  43.         //Active Period Register Load From Shadow Register Select
  44.         //        0 The period register (TBPRD) is loaded from its shadow register when the time-base counter,
  45.         //                TBCTR, is equal to zero. A write or read to the TBPRD register accesses the shadow register.
  46.         //        1 Load the TBPRD register immediately without using a shadow register.
  47.         //                A write or read to the TBPRD register directly accesses the active register.
  48.         EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;                                // Load PRD at zero point.

  49.         //Synchronization Output Select. These bits select the source of the EPWMxSYNCO signal.
  50.         //        00 EPWMxSYNC:
  51.         //        01 CTR = zero: Time-base counter equal to zero (TBCTR = 0x0000)
  52.         //        10 CTR = CMPB : Time-base counter equal to counter-compare B (TBCTR = CMPB)
  53.         //        11 Disable EPWMxSYNCO signal
  54.         EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;                //Sync down-stream module.

  55.         //High Speed Time-base Clock Prescale Bits
  56.         //These bits determine part of the time-base clock prescale value.
  57.         //TBCLK = SYSCLKOUT / (HSPCLKDIV * CLKDIV)
  58.         //This divisor emulates the HSPCLK in the TMS320x281x system as used on the Event Manager (EV) peripheral.
  59.         //        000 /1
  60.         //        001 /2 (default on reset)
  61.         //        010 /4
  62.         //        011 /6
  63.         //        100 /8
  64.         //        101 /10
  65.         //        110 /12
  66.         //        111 /14
  67.         EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;        //TbClk = SysClk/2 = 150M /2 = 75M
  68.         EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV2;

  69.         //Emulation Mode Bits. These bits select the behavior of the ePWM time-base counter during
  70.         //emulation events:
  71.         //        00 Stop after the next time-base counter increment or decrement
  72.         //        01 Stop when counter completes a whole cycle:
  73.         //        · Up-count mode: stop when the time-base counter = period (TBCTR = TBPRD)
  74.         //        · Down-count mode: stop when the time-base counter = 0x0000 (TBCTR = 0x0000)
  75.         //        · Up-down-count mode: stop when the time-base counter = 0x0000 (TBCTR = 0x0000)
  76.         //        1X Free run
  77.         EPwm1Regs.TBCTL.bit.FREE_SOFT = 0x03;

  78.        

  79.         //Active Counter-Compare A (CMPA) Load From Shadow Select Mode.
  80.         //This bit has no effect in immediate mode (CMPCTL[SHDWAMODE] = 1).
  81.         //        00 Load on CTR = Zero: Time-base counter equal to zero (TBCTR = 0x0000)
  82.         //        01 Load on CTR = PRD: Time-base counter equal to period (TBCTR = TBPRD)
  83.         //        10 Load on either CTR = Zero or CTR = PRD
  84.         //        11 Freeze (no loads possible)
  85.         EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;               //To avoid asymmetrical current,just load at zero point.

  86.         //Active Counter-Compare B (CMPB) Load From Shadow Select Mode
  87.         //This bit has no effect in immediate mode (CMPCTL[SHDWBMODE] = 1).
  88.         //        00 Load on CTR = Zero: Time-base counter equal to zero (TBCTR = 0x0000)
  89.         //        01 Load on CTR = PRD: Time-base counter equal to period (TBCTR = TBPRD)
  90.         //        10 Load on either CTR = Zero or CTR = PRD
  91.         //        11 Freeze (no loads possible)
  92.         EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;

  93.         //Counter-compare A (CMPA) Register Operating Mode
  94.         //        0 Shadow mode. Operates as a double buffer. All writes via the CPU access the shadow register.
  95.         //        1 Immediate mode. Only the active compare register is used. All writes and reads directly
  96.         //        access the active register for immediate compare action       
  97.         EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;

  98.         //Counter-compare B (CMPB) Register Operating Mode
  99.         //        0 Shadow mode. Operates as a double buffer. All writes via the CPU access the shadow register.
  100.         //        1 Immediate mode. Only the active compare B register is used. All writes and reads directly
  101.         //        access the active register for immediate compare action.
  102.         EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
  103.                        



  104.         //Action when the counter equals the active CMPA register and the counter is incrementing.
  105.         //        00 Do nothing (action disabled)
  106.         //        01 Clear: force EPWMxA output low.
  107.         //        10 Set: force EPWMxA output high.
  108.         //        11 Toggle EPWMxA output: low output signal will be forced high, and a high signal will be forced low.
  109.         EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;

  110.         //Action when the counter equals the active CMPA register and the counter is decrementing.
  111.         //        00 Do nothing (action disabled)
  112.         //        01 Clear: force EPWMxA output low.
  113.         //        10 Set: force EPWMxA output high.
  114.         //        11 Toggle EPWMxA output: low output signal will be forced high, and a high signal will be forced low.
  115.         EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR;


  116.         //Action when the counter equals the active CMPA register and the counter is incrementing.
  117.         //00 Do nothing (action disabled)
  118.         //01 Clear: force EPWMxB output low.
  119.         //10 Set: force EPWMxB output high.
  120.         //11 Toggle EPWMxB output: low output signal will be forced high, and a high signal will be forced low.
  121.         EPwm1Regs.AQCTLB.bit.CAU = AQ_SET;

  122.         //Action when the counter equals the active CMPA register and the counter is decrementing.
  123.         //        00 Do nothing (action disabled)
  124.         //        01 Clear: force EPWMxB output low.
  125.         //        10 Set: force EPWMxB output high.
  126.         //        11 Toggle EPWMxA output: low output signal will be forced high, and a high signal will be forced low.
  127.         EPwm1Regs.AQCTLB.bit.CAD = AQ_CLEAR;


  128.         //Dead-band Output Mode Control
  129.         //        Bit 1 controls the S1 switch and bit 0 controls the S0 switch shown in Figure 2-28.
  130.         //                This allows you to selectively enable or bypass the dead-band generation for the falling-edge
  131.         //                and rising-edge delay.
  132.         //        00 Dead-band generation is bypassed for both output signals. In this mode, both the EPWMxA
  133.         //                and EPWMxB output signals from the action-qualifier are passed directly to the PWM-chopper
  134.         //                submodule.
  135.         //                In this mode, the POLSEL and IN_MODE bits have no effect.
  136.         //        01 Disable rising-edge delay. The EPWMxA signal from the action-qualifier is passed straight
  137.         //                through to the EPWMxA input of the PWM-chopper submodule.
  138.         //                The falling-edge delayed signal is seen on output EPWMxB. The input signal for the delay is
  139.         //                determined by DBCTL[IN_MODE].
  140.         //        10 The rising-edge delayed signal is seen on output EPWMxA. The input signal for the delay is
  141.         //                determined by DBCTL[IN_MODE].
  142.         //                Disable falling-edge delay. The EPWMxB signal from the action-qualifier is passed straight
  143.         //                through to the EPWMxB input of the PWM-chopper submodule.
  144.         //        11 Dead-band is fully enabled for both rising-edge delay on output EPWMxA and falling-edge
  145.         //                delay on output EPWMxB. The input signal for the delay is determined by DBCTL[IN_MODE].
  146.         EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;

  147.         //Polarity Select Control
  148.         //        Bit 3 controls the S3 switch and bit 2 controls the S2 switch shown in Figure 2-28.
  149.         //                This allows you to selectively invert one of the delayed signals before it is sent out of the
  150.         //                dead-band submodule.
  151.         //                The following descriptions correspond to classical upper/lower switch control as found in one
  152.         //                leg of a digital motor control inverter.
  153.         //                These assume that DBCTL[OUT_MODE] = 1,1 and DBCTL[IN_MODE] = 0,0. Other
  154.         //                enhanced modes are also possible, but not regarded as typical usage modes.
  155.         //        00 Active high (AH) mode. Neither EPWMxA nor EPWMxB is inverted (default).
  156.         //        01 Active low complementary (ALC) mode. EPWMxA is inverted.
  157.         //        10 Active high complementary (AHC). EPWMxB is inverted.
  158.         //        11 Active low (AL) mode. Both EPWMxA and EPWMxB are inverted.
  159.         EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;

  160.         //Dead Band Input Mode Control
  161.         //        Bit 5 controls the S5 switch and bit 4 controls the S4 switch shown in Figure 2-28.
  162.         //                This allows you to select the input source to the falling-edge and rising-edge delay.
  163.         //                To produce classical dead-band waveforms the default is EPWMxA In is the source for both
  164.         //                falling and rising-edge delays.
  165.         //        00 EPWMxA In (from the action-qualifier) is the source for both falling-edge and rising-edge delay.
  166.         //        01 EPWMxB In (from the action-qualifier) is the source for rising-edge delayed signal.
  167.         //                EPWMxA In (from the action-qualifier) is the source for falling-edge delayed signal.
  168.         //        10 EPWMxA In (from the action-qualifier) is the source for rising-edge delayed signal.
  169.         //                EPWMxB In (from the action-qualifier) is the source for falling-edge delayed signal.
  170.         //11 EPWMxB In (from the action-qualifier)
  171.         EPwm1Regs.DBCTL.bit.IN_MODE = DBA_RED_DBB_FED;
  172.        
  173.         //
  174.         EPwm1Regs.DBFED = TBCLK_MHZ * DBTIME_US;
  175.         EPwm1Regs.DBRED = TBCLK_MHZ * DBTIME_US;

  176.         // the active register load immediately
  177.         EPwm1Regs.AQSFRC.bit.RLDCSF = 3;                        
  178.        
  179.         //Continuous Software Force on Output A
  180.         //In immediate mode, a continuous force takes effect on the next TBCLK edge.
  181.         //In shadow mode, a continuous force takes effect on the next TBCLK edge after a shadow load into
  182.         //the active register.
  183.         //        00 Forcing disabled, i.e., has no effect
  184.         //        01 Forces a continuous low on output A
  185.         //        10 Forces a continuous high on output A
  186.         //        11 Software forcing is disabled and has no effect
  187.         EPwm1Regs.AQCSFRC.bit.CSFA = AQ_CLEAR;

  188.         //Continuous Software Force on Output B
  189.         //In immediate mode, a continuous force takes effect on the next TBCLK edge.
  190.         //In shadow mode, a continuous force takes effect on the next TBCLK edge after a shadow load into
  191.         //the active register. To configure shadow mode, use AQSFRC[RLDCSF].
  192.         //        00 Forcing disabled, i.e., has no effect
  193.         //        01 Forces a continuous low on output B
  194.         //        10 Forces a continuous high on output B
  195.         //        11 Software forcing is disabled and has no effect
  196.         EPwm1Regs.AQCSFRC.bit.CSFB = AQ_SET;
  197.        


  198.         //ePWM Interrupt (EPWMx_INT) Selection Options
  199.         //        000 Reserved
  200.         //        001 Enable event time-base counter equal to zero. (TBCTR = 0x0000)
  201.         //        010 Enable event time-base counter equal to period (TBCTR = TBPRD)
  202.         //        011 Reserved
  203.         //        100 Enable event time-base counter equal to CMPA when the timer is incrementing.
  204.         //        101 Enable event time-base counter equal to CMPA when the timer is decrementing.
  205.         //        110 Enable event: time-base counter equal to CMPB when the timer is incrementing.
  206.         //        111 Enable event: time-base counter equal to CMPB when the timer is decrementing.
  207.         EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_PRD;

  208.         //Enable ePWM Interrupt (EPWMx_INT) Generation
  209.         //        0 Disable EPWMx_INT generation
  210.         //        1 Enable EPWMx_INT generation
  211.         EPwm1Regs.ETSEL.bit.INTEN = 1;

  212.         //ePWM Interrupt (EPWMx_INT) Period Select
  213.         //        These bits determine how many selected ETSEL[INTSEL] events need to occur before an
  214.         //        interrupt is generated. To be generated, the interrupt must be enabled (ETSEL[INT] = 1). If
  215.         //        the interrupt status flag is set from a previous interrupt (ETFLG[INT] = 1) then no interrupt will
  216.         //        be generated until the flag is cleared via the ETCLR[INT] bit. This allows for one interrupt to
  217.         //        be pending while another is still being serviced. Once the interrupt is generated, the
  218.         //        ETPS[INTCNT] bits will automatically be cleared.
  219.         //        Writing a INTPRD value that is the same as the current counter value will trigger an interrupt
  220.         //if it is enabled and the status flag is clear.
  221.         //Writing a INTPRD value that is less than the current counter value will result in an undefined state.
  222.         //If a counter event occurs at the same instant as a new zero or non-zero INTPRD value is
  223.         //written, the counter is incremented.
  224.         //        00 Disable the interrupt event counter. No interrupt will be generated and ETFRC[INT] is ignored.
  225.         //        01 Generate an interrupt on the first event INTCNT = 01 (first event)
  226.         //        10 Generate interrupt on ETPS[INTCNT] = 1,0 (second event)
  227.         //        11 Generate interrupt on ETPS[INTCNT] = 1,1 (third event)
  228.         EPwm1Regs.ETPS.bit.INTPRD = ET_1ST;
  229.        




  230.         //-------------------------------------------------------------------------
  231.         // Epwm2
  232.         //-------------------------------------------------------------------------
  233.        
  234.         UNPROTECT_REGS();
  235.         EPwm2Regs.TZCTL.bit.TZA = TZ_NO_CHANGE;
  236.         EPwm2Regs.TZCTL.bit.TZB = TZ_NO_CHANGE;
  237.         PROTECT_REGS();


  238.         //Time-Base Period Register (TBPRD) Field Descriptions
  239.         EPwm2Regs.TBPRD = KSwPrdCnst;
  240.         EPwm2Regs.CMPA.half.CMPA = (KSwPrdCnst >> 1);                     // set duty 50% initially

  241.         //These bits set time-base counter phase of the selected ePWM relative to the time-base that is
  242.         //supplying the synchronization input signal.
  243.         //        · If TBCTL[PHSEN] = 0, then the synchronization event is ignored and the time-base counter is
  244.         //                not loaded with the phase.
  245.         //        · If TBCTL[PHSEN] = 1, then the time-base counter (TBCTR) will be loaded with the phase
  246.         //                (TBPHS) when a synchronization event occurs. The synchronization event can be initiated by
  247.         //        the input synchronization signal (EPWMxSYNCI) or by a software forced synchronization.
  248.         EPwm2Regs.TBPHS.all = 0;       

  249.         //Time-Base Counter Register (TBCTR) Field Descriptions
  250.         EPwm2Regs.TBCTR = 0;
  251.        
  252.        

  253.         //Counter Mode
  254.         //The time-base counter mode is normally configured once and not changed during normal operation.
  255.         //If you change the mode of the counter, the change will take effect at the next TBCLK edge and the
  256.         //current counter value shall increment or decrement from the value before the mode change.
  257.         //These bits set the time-base counter mode of operation as follows:
  258.         //        00 Up-count mode
  259.         //        01 Down-count mode
  260.         //        10 Up-down-count mode
  261.         //        11 Stop-freeze counter operation (default on reset)
  262.         EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;        //Symmetrical mode.

  263.         //Counter Register Load From Phase Register Enable
  264.         //        0 Do not load the time-base counter (TBCTR) from the time-base phase register (TBPHS)
  265.         //        1 Load the time-base counter with the phase register when an EPWMxSYNCI input signal occurs or
  266.         //        when a software synchronization is forced by the SWFSYNC bit
  267.         EPwm2Regs.TBCTL.bit.PHSEN = TB_DISABLE;//TB_ENABLE;                                //Slave module..

  268.         //Active Period Register Load From Shadow Register Select
  269.         //        0 The period register (TBPRD) is loaded from its shadow register when the time-base counter,
  270.         //                TBCTR, is equal to zero. A write or read to the TBPRD register accesses the shadow register.
  271.         //        1 Load the TBPRD register immediately without using a shadow register.
  272.         //                A write or read to the TBPRD register directly accesses the active register.
  273.         EPwm2Regs.TBCTL.bit.PRDLD = TB_SHADOW;                                // Load PRD at zero point.

  274.         //Synchronization Output Select. These bits select the source of the EPWMxSYNCO signal.
  275.         //        00 EPWMxSYNC:
  276.         //        01 CTR = zero: Time-base counter equal to zero (TBCTR = 0x0000)
  277.         //        10 CTR = CMPB : Time-base counter equal to counter-compare B (TBCTR = CMPB)
  278.         //        11 Disable EPWMxSYNCO signal
  279.         EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;                //Sync down-stream module.

  280.         //High Speed Time-base Clock Prescale Bits
  281.         //These bits determine part of the time-base clock prescale value.
  282.         //TBCLK = SYSCLKOUT / (HSPCLKDIV * CLKDIV)
  283.         //This divisor emulates the HSPCLK in the TMS320x281x system as used on the Event Manager (EV) peripheral.
  284.         //        000 /1
  285.         //        001 /2 (default on reset)
  286.         //        010 /4
  287.         //        011 /6
  288.         //        100 /8
  289.         //        101 /10
  290.         //        110 /12
  291.         //        111 /14
  292.         EPwm2Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;        //TbClk = SysClk/2 = 150M /2 = 75M
  293.         EPwm2Regs.TBCTL.bit.CLKDIV = TB_DIV2;

  294.         //Emulation Mode Bits. These bits select the behavior of the ePWM time-base counter during
  295.         //emulation events:
  296.         //        00 Stop after the next time-base counter increment or decrement
  297.         //        01 Stop when counter completes a whole cycle:
  298.         //        · Up-count mode: stop when the time-base counter = period (TBCTR = TBPRD)
  299.         //        · Down-count mode: stop when the time-base counter = 0x0000 (TBCTR = 0x0000)
  300.         //        · Up-down-count mode: stop when the time-base counter = 0x0000 (TBCTR = 0x0000)
  301.         //        1X Free run
  302.         EPwm2Regs.TBCTL.bit.FREE_SOFT = 0x03;


  303.         //Active Counter-Compare A (CMPA) Load From Shadow Select Mode.
  304.         //This bit has no effect in immediate mode (CMPCTL[SHDWAMODE] = 1).
  305.         //        00 Load on CTR = Zero: Time-base counter equal to zero (TBCTR = 0x0000)
  306.         //        01 Load on CTR = PRD: Time-base counter equal to period (TBCTR = TBPRD)
  307.         //        10 Load on either CTR = Zero or CTR = PRD
  308.         //        11 Freeze (no loads possible)
  309.         EPwm2Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;               //To avoid asymmetrical current,just load at zero point.

  310.         //Active Counter-Compare B (CMPB) Load From Shadow Select Mode
  311.         //This bit has no effect in immediate mode (CMPCTL[SHDWBMODE] = 1).
  312.         //        00 Load on CTR = Zero: Time-base counter equal to zero (TBCTR = 0x0000)
  313.         //        01 Load on CTR = PRD: Time-base counter equal to period (TBCTR = TBPRD)
  314.         //        10 Load on either CTR = Zero or CTR = PRD
  315.         //        11 Freeze (no loads possible)
  316.         EPwm2Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;

  317.         //Counter-compare A (CMPA) Register Operating Mode
  318.         //        0 Shadow mode. Operates as a double buffer. All writes via the CPU access the shadow register.
  319.         //        1 Immediate mode. Only the active compare register is used. All writes and reads directly
  320.         //        access the active register for immediate compare action       
  321.         EPwm2Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;

  322.         //Counter-compare B (CMPB) Register Operating Mode
  323.         //        0 Shadow mode. Operates as a double buffer. All writes via the CPU access the shadow register.
  324.         //        1 Immediate mode. Only the active compare B register is used. All writes and reads directly
  325.         //        access the active register for immediate compare action.
  326.         EPwm2Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
  327.                                                

  328.         //Action when the counter equals the active CMPA register and the counter is incrementing.
  329.         //        00 Do nothing (action disabled)
  330.         //        01 Clear: force EPWMxA output low.
  331.         //        10 Set: force EPWMxA output high.
  332.         //        11 Toggle EPWMxA output: low output signal will be forced high, and a high signal will be forced low.
  333.         EPwm2Regs.AQCTLA.bit.CAU = AQ_SET;

  334.         //Action when the counter equals the active CMPA register and the counter is decrementing.
  335.         //        00 Do nothing (action disabled)
  336.         //        01 Clear: force EPWMxA output low.
  337.         //        10 Set: force EPWMxA output high.
  338.         //        11 Toggle EPWMxA output: low output signal will be forced high, and a high signal will be forced low.
  339.         EPwm2Regs.AQCTLA.bit.CAD = AQ_CLEAR;

  340.         //Action when the counter equals the active CMPA register and the counter is incrementing.
  341.         //00 Do nothing (action disabled)
  342.         //01 Clear: force EPWMxB output low.
  343.         //10 Set: force EPWMxB output high.
  344.         //11 Toggle EPWMxB output: low output signal will be forced high, and a high signal will be forced low.
  345.         EPwm2Regs.AQCTLB.bit.CAU = AQ_SET;

  346.         //Action when the counter equals the active CMPA register and the counter is decrementing.
  347.         //        00 Do nothing (action disabled)
  348.         //        01 Clear: force EPWMxB output low.
  349.         //        10 Set: force EPWMxB output high.
  350.         //        11 Toggle EPWMxA output: low output signal will be forced high, and a high signal will be forced low.
  351.         EPwm2Regs.AQCTLB.bit.CAD = AQ_CLEAR;

  352.        
  353.         //Dead-band Output Mode Control
  354.         //        Bit 1 controls the S1 switch and bit 0 controls the S0 switch shown in Figure 2-28.
  355.         //                This allows you to selectively enable or bypass the dead-band generation for the falling-edge
  356.         //                and rising-edge delay.
  357.         //        00 Dead-band generation is bypassed for both output signals. In this mode, both the EPWMxA
  358.         //                and EPWMxB output signals from the action-qualifier are passed directly to the PWM-chopper
  359.         //                submodule.
  360.         //                In this mode, the POLSEL and IN_MODE bits have no effect.
  361.         //        01 Disable rising-edge delay. The EPWMxA signal from the action-qualifier is passed straight
  362.         //                through to the EPWMxA input of the PWM-chopper submodule.
  363.         //                The falling-edge delayed signal is seen on output EPWMxB. The input signal for the delay is
  364.         //                determined by DBCTL[IN_MODE].
  365.         //        10 The rising-edge delayed signal is seen on output EPWMxA. The input signal for the delay is
  366.         //                determined by DBCTL[IN_MODE].
  367.         //                Disable falling-edge delay. The EPWMxB signal from the action-qualifier is passed straight
  368.         //                through to the EPWMxB input of the PWM-chopper submodule.
  369.         //        11 Dead-band is fully enabled for both rising-edge delay on output EPWMxA and falling-edge
  370.         //                delay on output EPWMxB. The input signal for the delay is determined by DBCTL[IN_MODE].
  371.         EPwm2Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;

  372.         //Polarity Select Control
  373.         //        Bit 3 controls the S3 switch and bit 2 controls the S2 switch shown in Figure 2-28.
  374.         //                This allows you to selectively invert one of the delayed signals before it is sent out of the
  375.         //                dead-band submodule.
  376.         //                The following descriptions correspond to classical upper/lower switch control as found in one
  377.         //                leg of a digital motor control inverter.
  378.         //                These assume that DBCTL[OUT_MODE] = 1,1 and DBCTL[IN_MODE] = 0,0. Other
  379.         //                enhanced modes are also possible, but not regarded as typical usage modes.
  380.         //        00 Active high (AH) mode. Neither EPWMxA nor EPWMxB is inverted (default).
  381.         //        01 Active low complementary (ALC) mode. EPWMxA is inverted.
  382.         //        10 Active high complementary (AHC). EPWMxB is inverted.
  383.         //        11 Active low (AL) mode. Both EPWMxA and EPWMxB are inverted.
  384.         EPwm2Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;

  385.         //Dead Band Input Mode Control
  386.         //        Bit 5 controls the S5 switch and bit 4 controls the S4 switch shown in Figure 2-28.
  387.         //                This allows you to select the input source to the falling-edge and rising-edge delay.
  388.         //                To produce classical dead-band waveforms the default is EPWMxA In is the source for both
  389.         //                falling and rising-edge delays.
  390.         //        00 EPWMxA In (from the action-qualifier) is the source for both falling-edge and rising-edge delay.
  391.         //        01 EPWMxB In (from the action-qualifier) is the source for rising-edge delayed signal.
  392.         //                EPWMxA In (from the action-qualifier) is the source for falling-edge delayed signal.
  393.         //        10 EPWMxA In (from the action-qualifier) is the source for rising-edge delayed signal.
  394.         //                EPWMxB In (from the action-qualifier) is the source for falling-edge delayed signal.
  395.         //11 EPWMxB In (from the action-qualifier)
  396.         EPwm2Regs.DBCTL.bit.IN_MODE = DBA_RED_DBB_FED;
  397.        
  398.         //
  399.         EPwm2Regs.DBFED = TBCLK_MHZ * DBTIME_US;
  400.         EPwm2Regs.DBRED = TBCLK_MHZ * DBTIME_US;


  401.         // the active register load immediately
  402.         EPwm2Regs.AQSFRC.bit.RLDCSF = 3;
  403.        
  404.         //Continuous Software Force on Output A
  405.         //In immediate mode, a continuous force takes effect on the next TBCLK edge.
  406.         //In shadow mode, a continuous force takes effect on the next TBCLK edge after a shadow load into
  407.         //the active register.
  408.         //        00 Forcing disabled, i.e., has no effect
  409.         //        01 Forces a continuous low on output A
  410.         //        10 Forces a continuous high on output A
  411.         //        11 Software forcing is disabled and has no effect
  412.         EPwm2Regs.AQCSFRC.bit.CSFA = AQ_CLEAR;

  413.         //Continuous Software Force on Output B
  414.         //In immediate mode, a continuous force takes effect on the next TBCLK edge.
  415.         //In shadow mode, a continuous force takes effect on the next TBCLK edge after a shadow load into
  416.         //the active register. To configure shadow mode, use AQSFRC[RLDCSF].
  417.         //        00 Forcing disabled, i.e., has no effect
  418.         //        01 Forces a continuous low on output B
  419.         //        10 Forces a continuous high on output B
  420.         //        11 Software forcing is disabled and has no effect
  421.         EPwm2Regs.AQCSFRC.bit.CSFB = AQ_SET;





  422.         //-------------------------------------------------------------------------
  423.         // Epwm3
  424.         //-------------------------------------------------------------------------
  425.        
  426.         UNPROTECT_REGS();
  427.         EPwm3Regs.TZCTL.bit.TZA = TZ_NO_CHANGE;
  428.         EPwm3Regs.TZCTL.bit.TZB = TZ_NO_CHANGE;
  429.         PROTECT_REGS();


  430.         //Time-Base Period Register (TBPRD) Field Descriptions
  431.         EPwm3Regs.TBPRD = KSwPrdCnst;
  432.         EPwm3Regs.CMPA.half.CMPA = (KSwPrdCnst >> 1);                     // set duty 50% initially

  433.         //These bits set time-base counter phase of the selected ePWM relative to the time-base that is
  434.         //supplying the synchronization input signal.
  435.         //        · If TBCTL[PHSEN] = 0, then the synchronization event is ignored and the time-base counter is
  436.         //                not loaded with the phase.
  437.         //        · If TBCTL[PHSEN] = 1, then the time-base counter (TBCTR) will be loaded with the phase
  438.         //                (TBPHS) when a synchronization event occurs. The synchronization event can be initiated by
  439.         //        the input synchronization signal (EPWMxSYNCI) or by a software forced synchronization.
  440.         EPwm3Regs.TBPHS.all = 0;       

  441.         //Time-Base Counter Register (TBCTR) Field Descriptions
  442.         EPwm3Regs.TBCTR = 0;
  443.        

  444.         //Counter Mode
  445.         //The time-base counter mode is normally configured once and not changed during normal operation.
  446.         //If you change the mode of the counter, the change will take effect at the next TBCLK edge and the
  447.         //current counter value shall increment or decrement from the value before the mode change.
  448.         //These bits set the time-base counter mode of operation as follows:
  449.         //        00 Up-count mode
  450.         //        01 Down-count mode
  451.         //        10 Up-down-count mode
  452.         //        11 Stop-freeze counter operation (default on reset)
  453.         EPwm3Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;        //Symmetrical mode.

  454.         //Counter Register Load From Phase Register Enable
  455.         //        0 Do not load the time-base counter (TBCTR) from the time-base phase register (TBPHS)
  456.         //        1 Load the time-base counter with the phase register when an EPWMxSYNCI input signal occurs or
  457.         //        when a software synchronization is forced by the SWFSYNC bit
  458.         EPwm3Regs.TBCTL.bit.PHSEN = TB_DISABLE;//TB_ENABLE;;                                //Slave module.

  459.         //Active Period Register Load From Shadow Register Select
  460.         //        0 The period register (TBPRD) is loaded from its shadow register when the time-base counter,
  461.         //                TBCTR, is equal to zero. A write or read to the TBPRD register accesses the shadow register.
  462.         //        1 Load the TBPRD register immediately without using a shadow register.
  463.         //                A write or read to the TBPRD register directly accesses the active register.
  464.         EPwm3Regs.TBCTL.bit.PRDLD = TB_SHADOW;                                // Load PRD at zero point.

  465.         //Synchronization Output Select. These bits select the source of the EPWMxSYNCO signal.
  466.         //        00 EPWMxSYNC:
  467.         //        01 CTR = zero: Time-base counter equal to zero (TBCTR = 0x0000)
  468.         //        10 CTR = CMPB : Time-base counter equal to counter-compare B (TBCTR = CMPB)
  469.         //        11 Disable EPWMxSYNCO signal
  470.         EPwm3Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;                //Sync down-stream module.

  471.         //High Speed Time-base Clock Prescale Bits
  472.         //These bits determine part of the time-base clock prescale value.
  473.         //TBCLK = SYSCLKOUT / (HSPCLKDIV * CLKDIV)
  474.         //This divisor emulates the HSPCLK in the TMS320x281x system as used on the Event Manager (EV) peripheral.
  475.         //        000 /1
  476.         //        001 /2 (default on reset)
  477.         //        010 /4
  478.         //        011 /6
  479.         //        100 /8
  480.         //        101 /10
  481.         //        110 /12
  482.         //        111 /14
  483.         EPwm3Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;        //TbClk = SysClk/2 = 150M /2 = 75M
  484.         EPwm3Regs.TBCTL.bit.CLKDIV = TB_DIV2;

  485.         //Emulation Mode Bits. These bits select the behavior of the ePWM time-base counter during
  486.         //emulation events:
  487.         //        00 Stop after the next time-base counter increment or decrement
  488.         //        01 Stop when counter completes a whole cycle:
  489.         //        · Up-count mode: stop when the time-base counter = period (TBCTR = TBPRD)
  490.         //        · Down-count mode: stop when the time-base counter = 0x0000 (TBCTR = 0x0000)
  491.         //        · Up-down-count mode: stop when the time-base counter = 0x0000 (TBCTR = 0x0000)
  492.         //        1X Free run
  493.         EPwm3Regs.TBCTL.bit.FREE_SOFT = 0x03;
  494.        

  495.         //Active Counter-Compare A (CMPA) Load From Shadow Select Mode.
  496.         //This bit has no effect in immediate mode (CMPCTL[SHDWAMODE] = 1).
  497.         //        00 Load on CTR = Zero: Time-base counter equal to zero (TBCTR = 0x0000)
  498.         //        01 Load on CTR = PRD: Time-base counter equal to period (TBCTR = TBPRD)
  499.         //        10 Load on either CTR = Zero or CTR = PRD
  500.         //        11 Freeze (no loads possible)
  501.         EPwm3Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;               //To avoid asymmetrical current,just load at zero point.

  502.         //Active Counter-Compare B (CMPB) Load From Shadow Select Mode
  503.         //This bit has no effect in immediate mode (CMPCTL[SHDWBMODE] = 1).
  504.         //        00 Load on CTR = Zero: Time-base counter equal to zero (TBCTR = 0x0000)
  505.         //        01 Load on CTR = PRD: Time-base counter equal to period (TBCTR = TBPRD)
  506.         //        10 Load on either CTR = Zero or CTR = PRD
  507.         //        11 Freeze (no loads possible)
  508.         EPwm3Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;

  509.         //Counter-compare A (CMPA) Register Operating Mode
  510.         //        0 Shadow mode. Operates as a double buffer. All writes via the CPU access the shadow register.
  511.         //        1 Immediate mode. Only the active compare register is used. All writes and reads directly
  512.         //        access the active register for immediate compare action       
  513.         EPwm3Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;

  514.         //Counter-compare B (CMPB) Register Operating Mode
  515.         //        0 Shadow mode. Operates as a double buffer. All writes via the CPU access the shadow register.
  516.         //        1 Immediate mode. Only the active compare B register is used. All writes and reads directly
  517.         //        access the active register for immediate compare action.
  518.         EPwm3Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
  519.                                        

  520.         //Action when the counter equals the active CMPA register and the counter is incrementing.
  521.         //        00 Do nothing (action disabled)
  522.         //        01 Clear: force EPWMxA output low.
  523.         //        10 Set: force EPWMxA output high.
  524.         //        11 Toggle EPWMxA output: low output signal will be forced high, and a high signal will be forced low.
  525.         EPwm3Regs.AQCTLA.bit.CAU = AQ_SET;

  526.         //Action when the counter equals the active CMPA register and the counter is decrementing.
  527.         //        00 Do nothing (action disabled)
  528.         //        01 Clear: force EPWMxA output low.
  529.         //        10 Set: force EPWMxA output high.
  530.         //        11 Toggle EPWMxA output: low output signal will be forced high, and a high signal will be forced low.
  531.         EPwm3Regs.AQCTLA.bit.CAD = AQ_CLEAR;

  532.         //Action when the counter equals the active CMPA register and the counter is incrementing.
  533.         //00 Do nothing (action disabled)
  534.         //01 Clear: force EPWMxB output low.
  535.         //10 Set: force EPWMxB output high.
  536.         //11 Toggle EPWMxB output: low output signal will be forced high, and a high signal will be forced low.
  537.         EPwm3Regs.AQCTLB.bit.CAU = AQ_SET;

  538.         //Action when the counter equals the active CMPA register and the counter is decrementing.
  539.         //        00 Do nothing (action disabled)
  540.         //        01 Clear: force EPWMxB output low.
  541.         //        10 Set: force EPWMxB output high.
  542.         //        11 Toggle EPWMxA output: low output signal will be forced high, and a high signal will be forced low.
  543.         EPwm3Regs.AQCTLB.bit.CAD = AQ_CLEAR;
  544.        
  545.        
  546.         //Dead-band Output Mode Control
  547.         //        Bit 1 controls the S1 switch and bit 0 controls the S0 switch shown in Figure 2-28.
  548.         //                This allows you to selectively enable or bypass the dead-band generation for the falling-edge
  549.         //                and rising-edge delay.
  550.         //        00 Dead-band generation is bypassed for both output signals. In this mode, both the EPWMxA
  551.         //                and EPWMxB output signals from the action-qualifier are passed directly to the PWM-chopper
  552.         //                submodule.
  553.         //                In this mode, the POLSEL and IN_MODE bits have no effect.
  554.         //        01 Disable rising-edge delay. The EPWMxA signal from the action-qualifier is passed straight
  555.         //                through to the EPWMxA input of the PWM-chopper submodule.
  556.         //                The falling-edge delayed signal is seen on output EPWMxB. The input signal for the delay is
  557.         //                determined by DBCTL[IN_MODE].
  558.         //        10 The rising-edge delayed signal is seen on output EPWMxA. The input signal for the delay is
  559.         //                determined by DBCTL[IN_MODE].
  560.         //                Disable falling-edge delay. The EPWMxB signal from the action-qualifier is passed straight
  561.         //                through to the EPWMxB input of the PWM-chopper submodule.
  562.         //        11 Dead-band is fully enabled for both rising-edge delay on output EPWMxA and falling-edge
  563.         //                delay on output EPWMxB. The input signal for the delay is determined by DBCTL[IN_MODE].
  564.         EPwm3Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;

  565.         //Polarity Select Control
  566.         //        Bit 3 controls the S3 switch and bit 2 controls the S2 switch shown in Figure 2-28.
  567.         //                This allows you to selectively invert one of the delayed signals before it is sent out of the
  568.         //                dead-band submodule.
  569.         //                The following descriptions correspond to classical upper/lower switch control as found in one
  570.         //                leg of a digital motor control inverter.
  571.         //                These assume that DBCTL[OUT_MODE] = 1,1 and DBCTL[IN_MODE] = 0,0. Other
  572.         //                enhanced modes are also possible, but not regarded as typical usage modes.
  573.         //        00 Active high (AH) mode. Neither EPWMxA nor EPWMxB is inverted (default).
  574.         //        01 Active low complementary (ALC) mode. EPWMxA is inverted.
  575.         //        10 Active high complementary (AHC). EPWMxB is inverted.
  576.         //        11 Active low (AL) mode. Both EPWMxA and EPWMxB are inverted.
  577.         EPwm3Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;

  578.         //Dead Band Input Mode Control
  579.         //        Bit 5 controls the S5 switch and bit 4 controls the S4 switch shown in Figure 2-28.
  580.         //                This allows you to select the input source to the falling-edge and rising-edge delay.
  581.         //                To produce classical dead-band waveforms the default is EPWMxA In is the source for both
  582.         //                falling and rising-edge delays.
  583.         //        00 EPWMxA In (from the action-qualifier) is the source for both falling-edge and rising-edge delay.
  584.         //        01 EPWMxB In (from the action-qualifier) is the source for rising-edge delayed signal.
  585.         //                EPWMxA In (from the action-qualifier) is the source for falling-edge delayed signal.
  586.         //        10 EPWMxA In (from the action-qualifier) is the source for rising-edge delayed signal.
  587.         //                EPWMxB In (from the action-qualifier) is the source for falling-edge delayed signal.
  588.         //11 EPWMxB In (from the action-qualifier)
  589.         EPwm3Regs.DBCTL.bit.IN_MODE = DBA_RED_DBB_FED;
  590.        
  591.         //
  592.         EPwm3Regs.DBFED = TBCLK_MHZ * DBTIME_US;
  593.         EPwm3Regs.DBRED = TBCLK_MHZ * DBTIME_US;


  594.         // the active register load immediately
  595.         EPwm3Regs.AQSFRC.bit.RLDCSF = 3;
  596.        
  597.         //Continuous Software Force on Output A
  598.         //In immediate mode, a continuous force takes effect on the next TBCLK edge.
  599.         //In shadow mode, a continuous force takes effect on the next TBCLK edge after a shadow load into
  600.         //the active register.
  601.         //        00 Forcing disabled, i.e., has no effect
  602.         //        01 Forces a continuous low on output A
  603.         //        10 Forces a continuous high on output A
  604.         //        11 Software forcing is disabled and has no effect
  605.         EPwm3Regs.AQCSFRC.bit.CSFA = AQ_CLEAR;

  606.         //Continuous Software Force on Output B
  607.         //In immediate mode, a continuous force takes effect on the next TBCLK edge.
  608.         //In shadow mode, a continuous force takes effect on the next TBCLK edge after a shadow load into
  609.         //the active register. To configure shadow mode, use AQSFRC[RLDCSF].
  610.         //        00 Forcing disabled, i.e., has no effect
  611.         //        01 Forces a continuous low on output B
  612.         //        10 Forces a continuous high on output B
  613.         //        11 Software forcing is disabled and has no effect
  614.         EPwm3Regs.AQCSFRC.bit.CSFB = AQ_SET;
复制代码




此内容由EEWORLD论坛网友elvike原创,如需转载或用于商业用途需征得作者同意并注明出处

此帖出自电机控制论坛

最新回复

可以分享一下3电平的pwm程序吗?  详情 回复 发表于 2018-4-6 22:18
点赞 关注(2)
个人签名作为一个水军,就是尽量的多回帖,因为懂的技术少,所以回帖水分大,见谅!
EEWORLD开发板置换群:309018200,——电工们免费装β的天堂,商家勿入!加群暗号:喵
 
 

回复
举报

7608

帖子

2

TA的资源

五彩晶圆(高级)

沙发
 
飞线影响外观这话我就不爱听了。差评。
此帖出自电机控制论坛

点评

no,no,no,我的飞线影响外观,福瑞叔叔的飞线画龙点睛  详情 回复 发表于 2017-7-4 09:46
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 
 

回复

2700

帖子

0

TA的资源

五彩晶圆(初级)

板凳
 
freebsder 发表于 2017-7-4 09:07
飞线影响外观这话我就不爱听了。差评。

no,no,no,我的飞线影响外观,福瑞叔叔的飞线画龙点睛
此帖出自电机控制论坛
个人签名作为一个水军,就是尽量的多回帖,因为懂的技术少,所以回帖水分大,见谅!
EEWORLD开发板置换群:309018200,——电工们免费装β的天堂,商家勿入!加群暗号:喵
 
 
 

回复

39

帖子

0

TA的资源

一粒金砂(中级)

4
 
萝卜青菜,各有所爱
此帖出自电机控制论坛
 
 
 

回复

368

帖子

0

TA的资源

一粒金砂(中级)

5
 
玉老带我呀,我的板子在吃灰,电机转不起来,用渣渣ST都没有转起来。
此帖出自电机控制论坛

点评

一阵乱怼。我现在虽然转起来了,但是是不合BLDC的理论的,就是瞎转  详情 回复 发表于 2017-7-4 14:42
 
 
 

回复

2700

帖子

0

TA的资源

五彩晶圆(初级)

6
 
1399866558 发表于 2017-7-4 14:18
玉老带我呀,我的板子在吃灰,电机转不起来,用渣渣ST都没有转起来。

一阵乱怼。我现在虽然转起来了,但是是不合BLDC的理论的,就是瞎转
此帖出自电机控制论坛
个人签名作为一个水军,就是尽量的多回帖,因为懂的技术少,所以回帖水分大,见谅!
EEWORLD开发板置换群:309018200,——电工们免费装β的天堂,商家勿入!加群暗号:喵
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

7
 
此帖出自电机控制论坛
 
 
 

回复

1

帖子

1

TA的资源

一粒金砂(初级)

8
 
可以分享一下3电平的pwm程序吗?
此帖出自电机控制论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表