4 Replies Latest reply on Nov 19, 2018 12:36 AM by AxLi_1746341

    Difference in Library Drivers

    BaT_3785171

      I am working on  43xxx_Wi-Fi project  (WICED studio 6.1 installed in my PC)
      I have a small doubt.
      STM32F4xx Standard Peripherals Library Drivers  in 43xxx_Wi-Fi project is of version V1.7.0 / 22-April-2016
      I generated new sample project in IAR embedded workspace using stm32cube for STM32F412RGYx controller.
      I was expecting library drivers should be same but pratically this is not the case.
      I compared stm32f412rx.h from IAR project with stm32f4xx.h from WICED project.
      Let me tell one example.
      In WICED project one of the structures declaration  is as follows.
      typedef struct
      {
        __IO uint32_t MODER;    /*!< GPIO port mode register,               Address offset: 0x00      */
        __IO uint32_t OTYPER;   /*!< GPIO port output type register,        Address offset: 0x04      */
        __IO uint32_t OSPEEDR;  /*!< GPIO port output speed register,       Address offset: 0x08      */
        __IO uint32_t PUPDR;    /*!< GPIO port pull-up/pull-down register,  Address offset: 0x0C      */
        __IO uint32_t IDR;      /*!< GPIO port input data register,         Address offset: 0x10      */
        __IO uint32_t ODR;      /*!< GPIO port output data register,        Address offset: 0x14      */
        __IO uint16_t BSRRL;    /*!< GPIO port bit set/reset low register,  Address offset: 0x18      */
        __IO uint16_t BSRRH;    /*!< GPIO port bit set/reset high register, Address offset: 0x1A      */
        __IO uint32_t LCKR;     /*!< GPIO port configuration lock register, Address offset: 0x1C      */
        __IO uint32_t AFR[2];   /*!< GPIO alternate function registers,     Address offset: 0x20-0x24 */
      } GPIO_TypeDef;

      In IAR project the same structure declartaion is as follows.
      typedef struct
      {
        __IO uint32_t MODER;    /*!< GPIO port mode register,               Address offset: 0x00      */
        __IO uint32_t OTYPER;   /*!< GPIO port output type register,        Address offset: 0x04      */
        __IO uint32_t OSPEEDR;  /*!< GPIO port output speed register,       Address offset: 0x08      */
        __IO uint32_t PUPDR;    /*!< GPIO port pull-up/pull-down register,  Address offset: 0x0C      */
        __IO uint32_t IDR;      /*!< GPIO port input data register,         Address offset: 0x10      */
        __IO uint32_t ODR;      /*!< GPIO port output data register,        Address offset: 0x14      */
        __IO uint32_t BSRR;     /*!< GPIO port bit set/reset register,      Address offset: 0x18      */
        __IO uint32_t LCKR;     /*!< GPIO port configuration lock register, Address offset: 0x1C      */
        __IO uint32_t AFR[2];   /*!< GPIO alternate function registers,     Address offset: 0x20-0x24 */
      } GPIO_TypeDef;

      You can observe the change clearly.
      And many more variables datatypes are not matching.

      Which one i have to prefer (WICED drivers or IAR drivers)i would like to know?

        • 1. Re: Difference in Library Drivers
          RaktimR_11

          You have to refer to the WICED drivers which is originally sourced in 2016 as you have correctly pointed out. If you try to change to the driver generated from Cube, compilation won't pass since WICED SDK uses those src files in the top level APIs.

          1 of 1 people found this helpful
          • 2. Re: Difference in Library Drivers
            BaT_3785171

            Thanks for your reply.

            I understand that WICED drivers to be used as is with no modification.

            But i am facing some problem while porting source code written in IAR embedded workbench to WICED studio.

            Let me elaborate my question by taking an example.

            In IAR code member variable BSRR of structure GPIO_TypeDef is used. (something like this pio_ctrl->reg_ctrl->BSRR = static_cast<uint32_t>(1<< pio_ctrl->pio_num))

            In WICED studio project member variable BSRR is not present in structure GPIO_TypeDef.

            This causes compilation errors.

            What is the best way to handle this problem as WICED drivers are not recommended to change?

            • 3. Re: Difference in Library Drivers
              RaktimR_11

              Currently in WICED Studio, there is no straightforward way to do this, We are working on this feature addition internally which will be made available through our next generation Modus Toolbox IDE

              1 of 2 people found this helpful
              • 4. Re: Difference in Library Drivers
                AxLi_1746341

                Raktim Roy wrote:

                 

                We are working on this feature addition internally which will be made available through our next generation Modus Toolbox IDE

                When will the "next generation Modus Toolbox IDE" be available?