This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F280041C: pin assignment

Part Number: TMS320F280041C
Other Parts Discussed in Thread: SYSCONFIG

Team, 

My customer is working on motor control design using F280041C, and he has questions:

I downloaded and Installed TI System Configuration Tool that let me configure the micro’s pins. I attached the file. There are couple things I would like Piccolo and Motor Control teams to give me OK for.

  1. I was reading Reference Manual for the microcontroller. I am not familiar how EPWM modules are utilized by motor control software but I assume three of them have to be synchronized. The information on pages 1825 and 1892 tells me that if I use EPWM modules 1, 2, and 3 I’ll be OK. The problem I have with that is PCB layout (one last pin is on the other corner). Can I utilize EPWM modules 1, 2, and 4?
  2. Please check analog signals assignment. I assigned three motor phase current to channel 1 on three ADCs respectively. I assigned three BEMF signals to channel 2 on three ADCs respectively. Is this OK for motor operation? Are there any restrictions where Battery Voltage and Temperature signal can be? I will not use PGAs. I will use only ADCs since a gate driver chip will amplify phase current signals.
  3. Please check if I did anything wrong for motor control operation. 

Note e2e will not allow me to attach the syscfg file, please let me know whom I can email it to?

Thanks

Viktorija

  • You can use EPWM1, and 4. You may have to sync EPWM4SYNCIN with EPWM1SYNCOUT. Pls review the EPWM block diagram for details.

    ADC assignment -

    If you are using only two currents and two voltages, then I would suggest to sample the currents first followed by voltage. Since you have 3 Vs and Is, and we have two adcs, there is no perfect arrangement. It is not possible to sample all three currents together first, so I would consider an arrangement that helps to sample two currents first followed by the remaining current and one voltage, and then remaining voltages. It is not ideal but this is the best we can do.

  • F280041C micro has 3 ADCs. Rightnow I am working on schematic, pin/channel assignment. Software will be later. This website does not allow me to attach F280004xPinConfig.syscfg file so I past it below. Can you open it with TI System Configuration Tool and see if everything is OK?

    // These arguments were used when this file was generated. They will be automatically applied on subsequent loads
    // via the GUI or CLI invocations. Run CLI with '--help' for additional information on how to override these arguments.
    // @cliArgs --device "F28004x" --package "F28004x_64PM" --part "F28004x_64PM"
    // @versions {"data":"2019103101","timestamp":"2019103101","tool":"1.3.1030","templates":"2019103101"}

    var iAIO1 = scripting.addPeripheral("AIO");
    // Name
    iAIO1.$name = "ISENA";
    // Use Peripheral
    iAIO1.$assign = "AIO232";
    // Assign pin
    iAIO1["AIO#"].$assign = "A1/DACB_OUT"; // pin number - 14
    var iAIO2 = scripting.addPeripheral("AIO");
    // Name
    iAIO2.$name = "ISENB";
    // Use Peripheral
    iAIO2.$assign = "AIO230";
    // Assign pin
    iAIO2["AIO#"].$assign = "A10/B1/C10/PGA7_OF"; // pin number - 25
    var iAIO3 = scripting.addPeripheral("AIO");
    // Name
    iAIO3.$name = "ISNEC";
    // Use Peripheral
    iAIO3.$assign = "AIO238";
    // Assign pin
    iAIO3["AIO#"].$assign = "C1, PGA2_IN"; // pin number - 18
    var iAIO4 = scripting.addPeripheral("AIO");
    // Name
    iAIO4.$name = "VSENA";
    // Use Peripheral
    iAIO4.$assign = "AIO224";
    // Assign pin
    iAIO4["AIO#"].$assign = "A2/B6/PGA1_OF"; // pin number - 9
    var iAIO5 = scripting.addPeripheral("AIO");
    // Name
    iAIO5.$name = "VSENB";
    // Use Peripheral
    iAIO5.$assign = "AIO226";
    // Assign pin
    iAIO5["AIO#"].$assign = "B2/C6/PGA3_OF"; // pin number - 7
    var iAIO6 = scripting.addPeripheral("AIO");
    // Name
    iAIO6.$name = "VSENC";
    // Use Peripheral
    iAIO6.$assign = "AIO244";
    // Assign pin
    iAIO6["AIO#"].$assign = "C2, PGA3_IN"; // pin number - 13
    var iAIO7 = scripting.addPeripheral("AIO");
    // Name
    iAIO7.$name = "VSENVM";
    // Use Peripheral
    iAIO7.$assign = "AIO237";
    // Assign pin
    iAIO7["AIO#"].$assign = "C0, PGA1_IN"; // pin number - 12
    var iAIO8 = scripting.addPeripheral("AIO");
    // Name
    iAIO8.$name = "TEMPSENSE_F";
    // Use Peripheral
    iAIO8.$assign = "AIO227";
    // Assign pin
    iAIO8["AIO#"].$assign = "B4/C8/PGA4_OF"; // pin number - 24
    var iCAN1 = scripting.addPeripheral("CAN");
    // Name
    iCAN1.$name = "MyCAN1";
    // Use Peripheral
    iCAN1.$assign = "CANA";
    // Assign pin
    iCAN1["CAN@_RX"].$assign = "GPIO35/TDI"; // pin number - 39
    // Assign pin
    iCAN1["CAN@_TX"].$assign = "GPIO37/TDO"; // pin number - 37
    var iEPWM1 = scripting.addPeripheral("EPWM");
    // Name
    iEPWM1.$name = "MyEPWM1";
    // Use Peripheral
    iEPWM1.$assign = "EPWM1";
    // Assign pin
    iEPWM1["EPWM#_A"].$assign = "GPIO0"; // pin number - 52
    // Assign pin
    iEPWM1["EPWM#_B"].$assign = "GPIO1"; // pin number - 51
    var iEPWM2 = scripting.addPeripheral("EPWM");
    // Name
    iEPWM2.$name = "MyEPWM2";
    // Use Peripheral
    iEPWM2.$assign = "EPWM2";
    // Assign pin
    iEPWM2["EPWM#_A"].$assign = "GPIO2"; // pin number - 50
    // Assign pin
    iEPWM2["EPWM#_B"].$assign = "GPIO3"; // pin number - 49
    var iEPWM3 = scripting.addPeripheral("EPWM");
    // Name
    iEPWM3.$name = "MyEPWM3";
    // Use Peripheral
    iEPWM3.$assign = "EPWM4";
    // Assign pin
    iEPWM3["EPWM#_A"].$assign = "GPIO6"; // pin number - 64
    // Assign pin
    iEPWM3["EPWM#_B"].$assign = "GPIO7"; // pin number - 57
    var iGPIO1 = scripting.addPeripheral("GPIO");
    // Assign pin
    iGPIO1["0"].$assign = "GPIO4"; // pin number - 48
    // Name
    iGPIO1.$name = "PWM_ENABLE";
    var iGPIO2 = scripting.addPeripheral("GPIO");
    // Assign pin
    iGPIO2["0"].$assign = "GPIO12"; // pin number - 30
    // Name
    iGPIO2.$name = "HI_LOW_SPD_SW_IN";
    var iGPIO3 = scripting.addPeripheral("GPIO");
    // Assign pin
    iGPIO3["0"].$assign = "GPIO13"; // pin number - 29
    // Name
    iGPIO3.$name = "PTO_SW_IN";
    var iGPIO4 = scripting.addPeripheral("GPIO");
    // Assign pin
    iGPIO4["0"].$assign = "GPIO16"; // pin number - 33
    // Name
    iGPIO4.$name = "nFAULT_LATCH";
    var iGPIO5 = scripting.addPeripheral("GPIO");
    // Assign pin
    iGPIO5["0"].$assign = "GPIO17"; // pin number - 34
    // Name
    iGPIO5.$name = "nTRIPRESET";
    var iGPIO6 = scripting.addPeripheral("GPIO");
    // Assign pin
    iGPIO6["0"].$assign = "GPIO22_VFBSW"; // pin number - 56
    // Name
    iGPIO6.$name = "SEAT_SW_IN";
    var iGPIO7 = scripting.addPeripheral("GPIO");
    // Assign pin
    iGPIO7["0"].$assign = "GPIO23_VSW"; // pin number - 54
    // Name
    iGPIO7.$name = "SPARE_SW_IN";
    var iI2C1 = scripting.addPeripheral("I2C");
    // Name
    iI2C1.$name = "MyI2C1";
    // Use Peripheral
    iI2C1.$assign = "I2CA";
    // Assign pin
    iI2C1["I2C@_SDA"].$assign = "GPIO32"; // pin number - 40
    // Assign pin
    iI2C1["I2C@_SCL"].$assign = "GPIO33"; // pin number - 32
    var iOTHER1 = scripting.addPeripheral("OTHER");
    // Name
    iOTHER1.$name = "MyOTHER1";
    // Used
    iOTHER1.ADCSOCAO.$used = false;
    // Used
    iOTHER1.ADCSOCBO.$used = false;
    // Used
    iOTHER1.SYNCOUT.$used = false;
    // Used
    iOTHER1.TDI.$used = false;
    // Used
    iOTHER1.TDO.$used = false;
    // Assign pin
    iOTHER1.X2.$assign = "GPIO18_X2"; // pin number - 41
    // Used
    iOTHER1.XCLKOUT.$used = false;
    var iSCI1 = scripting.addPeripheral("SCI");
    // Name
    iSCI1.$name = "MySCI1";
    // Use Peripheral
    iSCI1.$assign = "SCIA";
    // Assign pin
    iSCI1["SCI@_RX"].$assign = "GPIO28"; // pin number - 2
    // Assign pin
    iSCI1["SCI@_TX"].$assign = "GPIO29"; // pin number - 1
    var iSPI1 = scripting.addPeripheral("SPI");
    // Name
    iSPI1.$name = "MySPI1";
    // Use Peripheral
    iSPI1.$assign = "SPIA";
    // Assign pin
    iSPI1["SPI@_SIMO"].$assign = "GPIO8"; // pin number - 47
    // Assign pin
    iSPI1["SPI@_CLK"].$assign = "GPIO9"; // pin number - 62
    // Assign pin
    iSPI1["SPI@_STE"].$assign = "GPIO5"; // pin number - 61
    // Assign pin
    iSPI1["SPI@_SOMI"].$assign = "GPIO10"; // pin number - 63
    // Used
    iSPI1["SPI@_SOMI"].$used = true;
    // Suggest solution
    iOTHER1.$suggestSolution = "OTHER";

    Alex

  • Alex,

    The E2E server should accept a .ZIP file as an attachment, would it be possible for you to ZIP the sysconfig file and try to attach that to your post?  I'm going to look into what files are/are not allowed to be posted, but I know from previous posts that a ZIP should upload.

    Best,

    Matthew

  • There is no Attach File button. "Paper Clip" button does not attach a file. Anyway, *.syscfg is a text file. Just copy it from my previous post to Notepad and save it with syscfg extension.

    Alex