motor board library
Dependencies: ST_INTERFACES X_NUCLEO_COMMON
Fork of X_NUCLEO_IHM02A1 by
Revision 9:d70452d7a1e1, committed 2015-12-11
- Comitter:
- Davidroid
- Date:
- Fri Dec 11 17:23:31 2015 +0000
- Parent:
- 8:a9513361a2ec
- Child:
- 10:aa68441705b2
- Commit message:
- + Initialization structure moved from the BSP to the main application.
Changed in this revision
--- a/BSP/x_nucleo_ihm02a1_class.cpp Thu Dec 10 15:42:20 2015 +0000
+++ b/BSP/x_nucleo_ihm02a1_class.cpp Fri Dec 11 17:23:31 2015 +0000
@@ -57,74 +57,20 @@
/* Number of instantiated expansion boards. */
uint8_t X_NUCLEO_IHM02A1::number_of_boards = 0;
-/**
- * @brief This array contains the initial parameters for the motors that are
- * linked with each L6470 mounted on each stacked X-NUCLEO-IHM02A1.
- */
-const MICROSTEPPING_MOTOR_InitTypeDef X_NUCLEO_IHM02A1::MotorParameterInitData[EXPBRD_MOUNTED_NR_MAX][L6470DAISYCHAINSIZE] =
-{
- {
- {
- 9.0, 400, 1.7, 3.06, 300.0, 500.0, 500.0, 992.0, 0.0, 602.7, 3.06, 3.06,\
- 3.06, 3.06, 61.52, 392.1569e-6, 643.1372e-6, 643.1372e-6, 0,\
- 3.06*1000*1.10, 3.06*1000*1.00, MICROSTEP_1_128, 0xFF, 0x2E88
- },
- {
- 9.0, 400, 1.7, 3.06, 300.0, 500.0, 500.0, 992.0, 0.0, 602.7, 3.06, 3.06,\
- 3.06, 3.06, 61.52, 392.1569e-6, 643.1372e-6, 643.1372e-6, 0,\
- 3.06*1000*1.10, 3.06*1000*1.00, MICROSTEP_1_128, 0xFF, 0x2E88
- },
- },
- {
- {
- 9.0, 400, 1.7, 3.06, 300.0, 500.0, 500.0, 992.0, 0.0, 602.7, 3.06, 3.06,\
- 3.06, 3.06, 61.52, 392.1569e-6, 643.1372e-6, 643.1372e-6, 0,\
- 3.06*1000*1.10, 3.06*1000*1.00, MICROSTEP_1_128, 0xFF, 0x2E88
- },
- {
- 9.0, 400, 1.7, 3.06, 300.0, 500.0, 500.0, 992.0, 0.0, 602.7, 3.06, 3.06,\
- 3.06, 3.06, 61.52, 392.1569e-6, 643.1372e-6, 643.1372e-6, 0,\
- 3.06*1000*1.10, 3.06*1000*1.00, MICROSTEP_1_128, 0xFF, 0x2E88
- },
- },
- {
- {
- 9.0, 400, 1.7, 3.06, 300.0, 500.0, 500.0, 992.0, 0.0, 602.7, 3.06, 3.06,\
- 3.06, 3.06, 61.52, 392.1569e-6, 643.1372e-6, 643.1372e-6, 0,\
- 3.06*1000*1.10, 3.06*1000*1.00, MICROSTEP_1_128, 0xFF, 0x2E88
- },
- {
- 9.0, 400, 1.7, 3.06, 300.0, 500.0, 500.0, 992.0, 0.0, 602.7, 3.06, 3.06,\
- 3.06, 3.06, 61.52, 392.1569e-6, 643.1372e-6, 643.1372e-6, 0,\
- 3.06*1000*1.10, 3.06*1000*1.00, MICROSTEP_1_128, 0xFF, 0x2E88
- },
- },
- {
- {
- 9.0, 400, 1.7, 3.06, 300.0, 500.0, 500.0, 992.0, 0.0, 602.7, 3.06, 3.06,\
- 3.06, 3.06, 61.52, 392.1569e-6, 643.1372e-6, 643.1372e-6, 0,\
- 3.06*1000*1.10, 3.06*1000*1.00, MICROSTEP_1_128, 0xFF, 0x2E88
- },
- {
- 9.0, 400, 1.7, 3.06, 300.0, 500.0, 500.0, 992.0, 0.0, 602.7, 3.06, 3.06,\
- 3.06, 3.06, 61.52, 392.1569e-6, 643.1372e-6, 643.1372e-6, 0,\
- 3.06*1000*1.10, 3.06*1000*1.00, MICROSTEP_1_128, 0xFF, 0x2E88
- },
- },
-};
-
/* Methods -------------------------------------------------------------------*/
/**
* @brief Constructor.
+ * @param init_0 pointer to the initialization structure of the first motor.
+ * @param init_1 pointer to the initialization structure of the second motor.
* @param flag_irq pin name of the FLAG pin of the component.
* @param busy_irq pin name of the BUSY pin of the component.
* @param standby_reset pin name of the STBY\RST pin of the component.
* @param ssel pin name of the SSEL pin of the SPI device to be used for communication.
* @param spi SPI device to be used for communication.
*/
-X_NUCLEO_IHM02A1::X_NUCLEO_IHM02A1(PinName flag_irq, PinName busy_irq, PinName standby_reset, PinName ssel, DevSPI *spi) : dev_spi(spi)
+X_NUCLEO_IHM02A1::X_NUCLEO_IHM02A1(MICROSTEPPING_MOTOR_InitTypeDef *init_0, MICROSTEPPING_MOTOR_InitTypeDef *init_1, PinName flag_irq, PinName busy_irq, PinName standby_reset, PinName ssel, DevSPI *spi) : dev_spi(spi)
{
/* SPI communication. */
if (dev_spi == NULL)
@@ -143,12 +89,16 @@
components[1] = l6470_1 = new L6470(flag_irq, busy_irq, standby_reset, ssel, *dev_spi);
/* Initializing the components. */
+ init_components[0] = init_0;
+ init_components[1] = init_1;
if (!Init())
error("Initialization of the X_NUCLEO_IHM02A1 expansion board failed.\n");
}
/**
* @brief Constructor.
+ * @param init_0 pointer to the initialization structure of the first motor.
+ * @param init_1 pointer to the initialization structure of the second motor.
* @param flag_irq pin name of the FLAG pin of the component.
* @param busy_irq pin name of the BUSY pin of the component.
* @param standby_reset pin name of the STBY\RST pin of the component.
@@ -157,7 +107,7 @@
* @param miso pin name of the MISO pin of the SPI device to be used for communication.
* @param sclk pin name of the SCLK pin of the SPI device to be used for communication.
*/
-X_NUCLEO_IHM02A1::X_NUCLEO_IHM02A1(PinName flag_irq, PinName busy_irq, PinName standby_reset, PinName ssel, PinName mosi, PinName miso, PinName sclk)
+X_NUCLEO_IHM02A1::X_NUCLEO_IHM02A1(MICROSTEPPING_MOTOR_InitTypeDef *init_0, MICROSTEPPING_MOTOR_InitTypeDef *init_1, PinName flag_irq, PinName busy_irq, PinName standby_reset, PinName ssel, PinName mosi, PinName miso, PinName sclk)
{
/* SPI communication. */
dev_spi = new DevSPI(mosi, miso, sclk);
@@ -175,6 +125,8 @@
components[1] = l6470_1 = new L6470(flag_irq, busy_irq, standby_reset, ssel, *dev_spi);
/* Initializing the components. */
+ init_components[0] = init_0;
+ init_components[1] = init_1;
if (!Init())
error("Initialization of the X_NUCLEO_IHM02A1 expansion board failed.\n");
}
@@ -231,7 +183,7 @@
bool X_NUCLEO_IHM02A1::Init_L6470_0(void)
{
/* Initialization. */
- if (l6470_0->Init((void *) &MotorParameterInitData[X_NUCLEO_IHM02A1_Id][0]) != COMPONENT_OK)
+ if (l6470_0->Init((void *) init_components[0]) != COMPONENT_OK)
return false;
return true;
@@ -244,7 +196,7 @@
bool X_NUCLEO_IHM02A1::Init_L6470_1(void)
{
/* Initialization. */
- if (l6470_1->Init((void *) &MotorParameterInitData[X_NUCLEO_IHM02A1_Id][1]) != COMPONENT_OK)
+ if (l6470_1->Init((void *) init_components[0]) != COMPONENT_OK)
return false;
return true;
--- a/BSP/x_nucleo_ihm02a1_class.h Thu Dec 10 15:42:20 2015 +0000
+++ b/BSP/x_nucleo_ihm02a1_class.h Fri Dec 11 17:23:31 2015 +0000
@@ -78,16 +78,20 @@
/**
* @brief Constructor.
+ * @param init_0 pointer to the initialization structure of the first motor.
+ * @param init_1 pointer to the initialization structure of the second motor.
* @param flag_irq pin name of the FLAG pin of the component.
* @param busy_irq pin name of the BUSY pin of the component.
* @param standby_reset pin name of the STBY\RST pin of the component.
* @param ssel pin name of the SSEL pin of the SPI device to be used for communication.
* @param spi SPI device to be used for communication.
*/
- X_NUCLEO_IHM02A1(PinName flag_irq, PinName busy_irq, PinName standby_reset, PinName ssel, DevSPI *spi);
+ X_NUCLEO_IHM02A1(MICROSTEPPING_MOTOR_InitTypeDef *init_0, MICROSTEPPING_MOTOR_InitTypeDef *init_1, PinName flag_irq, PinName busy_irq, PinName standby_reset, PinName ssel, DevSPI *spi);
/**
* @brief Constructor.
+ * @param init_0 pointer to the initialization structure of the first motor.
+ * @param init_1 pointer to the initialization structure of the second motor.
* @param flag_irq pin name of the FLAG pin of the component.
* @param busy_irq pin name of the BUSY pin of the component.
* @param standby_reset pin name of the STBY\RST pin of the component.
@@ -96,7 +100,7 @@
* @param miso pin name of the MISO pin of the SPI device to be used for communication.
* @param sclk pin name of the SCLK pin of the SPI device to be used for communication.
*/
- X_NUCLEO_IHM02A1(PinName flag_irq, PinName busy_irq, PinName standby_reset, PinName ssel, PinName mosi, PinName miso, PinName sclk);
+ X_NUCLEO_IHM02A1(MICROSTEPPING_MOTOR_InitTypeDef *init_0, MICROSTEPPING_MOTOR_InitTypeDef *init_1, PinName flag_irq, PinName busy_irq, PinName standby_reset, PinName ssel, PinName mosi, PinName miso, PinName sclk);
/**
* @brief Destructor.
@@ -168,9 +172,6 @@
L6470 *l6470_0;
L6470 *l6470_1;
- /* Static data. */
- static const MICROSTEPPING_MOTOR_InitTypeDef MotorParameterInitData[EXPBRD_MOUNTED_NR_MAX][L6470DAISYCHAINSIZE];
-
protected:
@@ -196,6 +197,9 @@
/* Components. */
L6470 *components[L6470DAISYCHAINSIZE];
+ /* Components' initialization. */
+ MICROSTEPPING_MOTOR_InitTypeDef *init_components[L6470DAISYCHAINSIZE];
+
/* Results of prepared actions. */
uint32_t results[L6470DAISYCHAINSIZE];
