2018-02-23 12:47 AM
Hi, when I selected using two isolated current sensor in st motor control workbench. The IAR couldn't compile the code and gave the error
May i know is there a solution to the problem? But using 3 shunt resistor current sampling does not have such problem.
2018-02-26 01:46 AM
It's a basic 'C' error - the type of the argument you've supplied does not match what the function requires.
So look at the function declaration, see what type it is expecting - and make sure you give it something of that type!
This is basic 'C' stuff - nothing specifically to do with ST.
2018-02-27 02:15 AM
It seems ST have not finished their work on the ICS_F30X_PWMnCurrFdbkClass.
Why release something half-done and then not clearly comment on this in User Manual UM1052/3 or in the code?
Could someone from ST please adress this. F30X is a popular platform for motor control so it should be high on the list of priorities to maintain code for this MCU!
Other people also have this issue:
https://community.st.com/0D50X00009XkgcTSAR
True as
Neil.Andrew
points out that this is a common C error, but that is not really the point here.Other classes for ICS current feedback uses a particular struct,ICS_DDParamsM1 initiated in SystemNDriveParams.h.
This struct has of the typeICS_DDParams_t. Thus, for the F4 ICS class the function signature looks is this:
CIF4XX_PWMC IF4XX_NewObject(pPWMnCurrFdbkParams_t pPWMnCurrFdbkParams,
pICS_DDParams_t pICS_DDParams);and yes, this should then compile and run on a F4 MCU.
For F30X however it seems that ST started development on it and have not finished. If we see the similar function signature for F30X:
CIF30X_PWMC IF3XX_NewObject(pPWMnCurrFdbkParams_t pPWMnCurrFdbkParams,
pICS_F30XParams_t pICS_DDParams
);Ok so there is a mismatch of types, leaving us with two options for a fix:
1.
Change the type for the the NewObject function
CIF30X_PWMC IF3XX_NewObject(pPWMnCurrFdbkParams_t pPWMnCurrFdbkParams,
pICS_DDParams_t
pICS_DDParams);
2.
There is a struct definition for
pICS_F30XParams_t inICS_F30X_PWMnCurrFdbkClass.h howver no such struct is being initiated in SystemNDriveParams.
I have looked at both solutions and are currently working on this. 1) fails because the init function of
ICS_F30X_PWMnCurrFdbkClass requires fields in the structs that are not inpICS_DDParams_t. 2) I have not looked into yet, but initiating a struct of the correct type should be possible.
Again, to me it seems like ST have started work porting ICS architecture to F30X, but left it unfinished like a complete mess. The UM1052 states that there is no support for ICS for F30X:
Yet still the class
ICS_F30X_PWMnCurrFdbkClass is a part of FOC SDK V4.3
and in MCTasks.c we find: