From 6cc8af24b9d6d4aa616f88b3e1e5060ad2f8d4a9 Mon Sep 17 00:00:00 2001 From: Felipe Neves <ryukokki.felipe@gmail.com> Date: Sun, 7 Jul 2024 13:06:13 -0300 Subject: [PATCH] arch: refactor espFoC to be a motor control solution instead of a library Signed-off-by: Felipe Neves <ryukokki.felipe@gmail.com> --- CMakeLists.txt | 0 README.md | 14 +- app/CMakeLists.txt | 41 +++ app/boards/esp32s3_devkitm.conf | 1 + app/boards/esp32s3_devkitm.overlay | 19 ++ app/espfoc_app_core/esp_foc_app_shell.c | 60 ++++ app/espfoc_app_core/esp_foc_main.c | 54 ++++ app/espfoc_app_core/esp_foc_user.c | 32 +++ app/espfoc_motor_core/CMakeLists.txt | 19 ++ .../boards/esp32s3_devkitm_appcpu.overlay | 172 +++++++++++ app/espfoc_motor_core/esp_foc_hardware_if.c | 268 ++++++++++++++++++ .../espfoc_motor_core/esp_foc_hardware_if.h | 13 +- app/espfoc_motor_core/esp_foc_motor.c | 160 +++++++++++ app/espfoc_motor_core/prj.conf | 13 + app/prj.conf | 6 + common/include/espFoC/ipc/esp_foc_ipc.h | 86 ++++++ .../include/espFoC/motor_control}/esp_foc.h | 16 +- .../motor_control}/esp_foc_motor_interface.h | 38 ++- .../espFoC/motor_control}/esp_foc_pid.h | 0 .../espFoC/motor_control}/esp_foc_svm.h | 0 common/ipc/esp_foc_ipc.c | 167 +++++++++++ {src => common/motor_control}/esp_foc.c | 51 +++- .../motor_control}/esp_foc_consts.c | 0 .../motor_control}/esp_foc_our_sin_cos.c | 0 {src => common/motor_control}/esp_foc_pid.c | 2 +- {src => common/motor_control}/esp_foc_svm.c | 2 +- doc/images/arch.png | Bin 0 -> 117374 bytes examples/stubs/main.cpp | 35 --- examples/stubs/motor_hardware_stub.c | 133 --------- 29 files changed, 1202 insertions(+), 200 deletions(-) delete mode 100644 CMakeLists.txt create mode 100644 app/CMakeLists.txt create mode 100644 app/boards/esp32s3_devkitm.conf create mode 100644 app/boards/esp32s3_devkitm.overlay create mode 100644 app/espfoc_app_core/esp_foc_app_shell.c create mode 100644 app/espfoc_app_core/esp_foc_main.c create mode 100644 app/espfoc_app_core/esp_foc_user.c create mode 100644 app/espfoc_motor_core/CMakeLists.txt create mode 100644 app/espfoc_motor_core/boards/esp32s3_devkitm_appcpu.overlay create mode 100644 app/espfoc_motor_core/esp_foc_hardware_if.c rename examples/stubs/motor_hardware_stub.h => app/espfoc_motor_core/esp_foc_hardware_if.h (82%) create mode 100644 app/espfoc_motor_core/esp_foc_motor.c create mode 100644 app/espfoc_motor_core/prj.conf create mode 100644 app/prj.conf create mode 100644 common/include/espFoC/ipc/esp_foc_ipc.h rename {include/espFoC => common/include/espFoC/motor_control}/esp_foc.h (86%) rename {include/espFoC => common/include/espFoC/motor_control}/esp_foc_motor_interface.h (72%) rename {include/espFoC => common/include/espFoC/motor_control}/esp_foc_pid.h (100%) rename {include/espFoC => common/include/espFoC/motor_control}/esp_foc_svm.h (100%) create mode 100644 common/ipc/esp_foc_ipc.c rename {src => common/motor_control}/esp_foc.c (85%) rename {src => common/motor_control}/esp_foc_consts.c (100%) rename {src => common/motor_control}/esp_foc_our_sin_cos.c (100%) rename {src => common/motor_control}/esp_foc_pid.c (98%) rename {src => common/motor_control}/esp_foc_svm.c (98%) create mode 100644 doc/images/arch.png delete mode 100644 examples/stubs/main.cpp delete mode 100644 examples/stubs/motor_hardware_stub.c diff --git a/CMakeLists.txt b/CMakeLists.txt deleted file mode 100644 index e69de29..0000000 diff --git a/README.md b/README.md index 268e95c..ae90190 100644 --- a/README.md +++ b/README.md @@ -3,22 +3,26 @@  [](https://opensource.org/licenses/MIT) -espFoC is a simple implementation of voltage mode, vector controller intended to be used with permanent-magnet synchronous motors (PMSM), and general brushless motors. This component was developed to be used with Zephyr RTOS for example and is aimed to transform -your esp32 chip into a dual axis PMSM motor controller chip +espFoC is a simple implementation of voltage mode, vector controller intended to be used with permanent-magnet synchronous motors (PMSM), and general brushless motors for ESP32S3 Espressif SoC, other SoC from espressif might be supported but the primary requirement is to be a dual +core variant. espFoC started as a library for motor control, but it suffered a goal change, and now it is intended to create a programmable +BLDC (FoC based) motor control-IC, the dual core capabillity splits the controller into application side and motor control core side +the former is intended for user to write it own application or exchange packets with external controller via CAN-Bus, the later is +100% focused on perform motor control algorithm achieving better control bandwidth. Up two axis are supported in this new variant, refer the +simplified architecture below: + ## Features: * Voltage mode control, control a PMSM like a DC motor!; * Position and Speed closed-loop control; * Single-precision Floating point implementation; -* Sample inverter driver based on esp32 LEDC PWM (easy to wire!); -* Sample rotor position driver based on as5600 encoder (very popular!); +* Easy to wire motor using common drivers and I2C encoders out there! * Uses openAMP to offload motor control tasks to one of the core, and leave the other for communication; * support UART and CAN communication; ## Limitations: -* Support for esp32 and esp32s3 only; +* Support for esp32 and esp32s3(primary) only; * Requires and rotor position sensor, for example, incremental encoder. ## Getting started: diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt new file mode 100644 index 0000000..a1cef5e --- /dev/null +++ b/app/CMakeLists.txt @@ -0,0 +1,41 @@ +# SPDX-License-Identifier: Apache-2.0 + +cmake_minimum_required(VERSION 3.20.0) + +set(REMOTE_ZEPHYR_DIR ${CMAKE_CURRENT_BINARY_DIR}/ipm_esp32_appcpu-prefix/src/ipm_esp32_appcpu-build/zephyr) + +if("${BOARD}" STREQUAL "esp32s3_devkitm/esp32s3/procpu") +set(BOARD_REMOTE "esp32s3_devkitm/esp32s3/appcpu") +else() + message(FATAL_ERROR "${BOARD} was not supported for this project yet!") +endif() + +find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) +project(espfoc) + +set(MOTOR_CONTROL_SRC ${APPLICATION_SOURCE_DIR}/../common) +set(MOTOR_CONTROL_INC ${APPLICATION_SOURCE_DIR}/../common/include/espFoC) + +FILE(GLOB ipc ${MOTOR_CONTROL_SRC}/ipc/*.c) + +set_source_files_properties(${REMOTE_ZEPHYR_DIR}/esp32_appcpu_firmware.c PROPERTIES GENERATED TRUE) +target_sources(app PRIVATE esp_foc_app_core/esp_foc_app.c + esp_foc_app_core/esp_foc_app_main.c + esp_foc_app_core/esp_foc_app_user.c + ${ipc} + ${REMOTE_ZEPHYR_DIR}/esp32_appcpu_firmware.c) + +target_include_directories(app PRIVATE ${MOTOR_CONTROL_INC}) + +include(ExternalProject) + +ExternalProject_Add( + espfoc_remote + SOURCE_DIR ${APPLICATION_SOURCE_DIR}/espfoc_motor_core + INSTALL_COMMAND "" + CMAKE_CACHE_ARGS -DBOARD:STRING=${BOARD_REMOTE} + BUILD_BYPRODUCTS "${REMOTE_ZEPHYR_DIR}/${KERNEL_BIN_NAME}" + BUILD_ALWAYS True +) + +add_dependencies(app espfoc_remote) diff --git a/app/boards/esp32s3_devkitm.conf b/app/boards/esp32s3_devkitm.conf new file mode 100644 index 0000000..a8ee714 --- /dev/null +++ b/app/boards/esp32s3_devkitm.conf @@ -0,0 +1 @@ +CONFIG_SOC_ESP32S3_PROCPU=y diff --git a/app/boards/esp32s3_devkitm.overlay b/app/boards/esp32s3_devkitm.overlay new file mode 100644 index 0000000..ad437c1 --- /dev/null +++ b/app/boards/esp32s3_devkitm.overlay @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2023 Felipe Neves <ryukokki.felipe@gmail.com> + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/ { + chosen { + /* + * shared memory reserved for the inter-processor communication + */ + zephyr,ipc_shm = &shm0; + zephyr,ipc = &ipm0; + }; +}; + +&ipm0 { + status = "okay"; +}; diff --git a/app/espfoc_app_core/esp_foc_app_shell.c b/app/espfoc_app_core/esp_foc_app_shell.c new file mode 100644 index 0000000..e0e3d10 --- /dev/null +++ b/app/espfoc_app_core/esp_foc_app_shell.c @@ -0,0 +1,60 @@ +/* + * MIT License + * + * Copyright (c) 2021 Felipe Neves + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#include <stdlib.h> +#include <zephyr/kernel.h> +#include <zephyr/device.h> +#include <zephyr/shell/shell.h> +#include <espFoC/ipc/esp_foc_ipc.h> + +static int set_pid_gains_vel(const struct shell *shell, size_t argc, char **argv) +{ + struct motor_command command; + + if (argc != 5) { + return -EINVAL; + } + + // pid_control_law_tune(&motor_pid_1, + // (strtof(argv[1], NULL)), + // (strtof(argv[2], NULL)), + // (strtof(argv[3], NULL)), + // (strtof(argv[4], NULL))); + + return 0; + +} + +SHELL_STATIC_SUBCMD_SET_CREATE( + esp_foc, + SHELL_CMD(set_position, NULL, "sets position in degrees", motor_gen_ramp), + SHELL_CMD(set_speed, NULL, "sets speed in degrees per second", motor_set_ref), + SHELL_CMD(enable, NULL, "enable motor driver", motor_change_control), + SHELL_CMD(disable, NULL, "disable motor driver", motor_set_power), + SHELL_CMD(set_gains_pid_vel, NULL, "set pids velocity", motor_set_gains_pid), + SHELL_CMD(set_gains_pid_pos, NULL, "set pids speed", motor_set_gains_adrc), + + SHELL_SUBCMD_SET_END + ); + +SHELL_CMD_REGISTER(esp_foc, &esp_foc, "espFoC Basic shell commands", NULL); diff --git a/app/espfoc_app_core/esp_foc_main.c b/app/espfoc_app_core/esp_foc_main.c new file mode 100644 index 0000000..11d353f --- /dev/null +++ b/app/espfoc_app_core/esp_foc_main.c @@ -0,0 +1,54 @@ +/* + * MIT License + * + * Copyright (c) 2021 Felipe Neves + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include <stdio.h> +#include <zephyr/kernel.h> +#include <espFoC/ipc/esp_foc_ipc.h> + +static void esp_foc_motor_on_state (const struct motor_state *cmd); +ESP_FOC_DEFINE_IPC_CALLBACK(state_callback, NULL, esp_foc_motor_on_state); + +static void esp_foc_motor_on_state (const struct motor_state *cmd) +{ + printk("espFoC Motor core sent state \n"); +} + +int esp_foc_early_init(void) +{ + esp_foc_ipc_init(); + esp_foc_ipc_register_callback(&state_callback); + return 0; +} +SYS_INIT(esp_foc_early_init, POST_KERNEL, CONFIG_APPLICATION_INIT_PRIORITY); + +int main (void) +{ + printk("espFoC is running in the %s\n", CONFIG_BOARD); +} + +__weak void esp_foc_user_entry(void) +{ + printk("Weak user entry of the espFoC \n"); +} +K_THREAD_DEFINE(foc_tid, 4096, esp_foc_user_entry, NULL, NULL, NULL, 1, 0, 0); \ No newline at end of file diff --git a/app/espfoc_app_core/esp_foc_user.c b/app/espfoc_app_core/esp_foc_user.c new file mode 100644 index 0000000..5547526 --- /dev/null +++ b/app/espfoc_app_core/esp_foc_user.c @@ -0,0 +1,32 @@ +/* + * MIT License + * + * Copyright (c) 2021 Felipe Neves + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include <stdio.h> +#include <zephyr/kernel.h> +#include <espFoC/ipc/esp_foc_ipc.h> + +void esp_foc_user_entry(void) +{ + +} diff --git a/app/espfoc_motor_core/CMakeLists.txt b/app/espfoc_motor_core/CMakeLists.txt new file mode 100644 index 0000000..dceaa4b --- /dev/null +++ b/app/espfoc_motor_core/CMakeLists.txt @@ -0,0 +1,19 @@ +# SPDX-License-Identifier: Apache-2.0 + +cmake_minimum_required(VERSION 3.20.0) + +find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) +project(espfoc_remote) + +set(MOTOR_CONTROL_SRC ${APPLICATION_SOURCE_DIR}/../../common) +set(MOTOR_CONTROL_INC ${APPLICATION_SOURCE_DIR}/../../common/include/espFoC) + +FILE(GLOB ipc ${MOTOR_CONTROL_SRC}/ipc/*.c) +FILE(GLOB motor_control ${MOTOR_CONTROL_SRC}/motor_control/*.c) + +target_sources(app PRIVATE esp_foc_motor.c + esp_foc_hardware_if.c + ${ipc} + ${motor_control}) + +target_include_directories(app PRIVATE ${MOTOR_CONTROL_INC}) diff --git a/app/espfoc_motor_core/boards/esp32s3_devkitm_appcpu.overlay b/app/espfoc_motor_core/boards/esp32s3_devkitm_appcpu.overlay new file mode 100644 index 0000000..e82605e --- /dev/null +++ b/app/espfoc_motor_core/boards/esp32s3_devkitm_appcpu.overlay @@ -0,0 +1,172 @@ +/* + * Copyright (c) 2023 Felipe Neves <ryukokki.felipe@gmail.com> + * + * SPDX-License-Identifier: Apache-2.0 + */ + #include <zephyr/dt-bindings/i2c/i2c.h> + #include <zephyr/dt-bindings/pwm/pwm.h> + #include <dt-bindings/pinctrl/esp32s3-pinctrl.h> + +/ { + chosen { + /* + * shared memory reserved for the inter-processor communication + */ + zephyr,ipc_shm = &shm0; + zephyr,ipc = &ipm0; + }; + + aliases { + motor-pwm-0 = &ledc0; + motor-pwm-1 = &ledc1; + angle-0 = &i2c0; + angle-0 = &i2c1; + }; + + gpio_enable { + compatible = "gpio-keys"; + inverter_enable_0: button { + label = "inverter_enable"; + gpios = <&gpio0 9 GPIO_ACTIVE_HIGH>; + }; + + inverter_enable_1: button { + label = "inverter_enable"; + gpios = <&gpio0 10 GPIO_ACTIVE_HIGH>; + }; + + }; +}; + +&pinctrl { + ledc0_default: ledc0_default { + group1 { + pinmux = <LEDC_CH0_GPIO2>; + output-enable; + }; + group2 { + pinmux = <LEDC_CH1_GPIO3>; + output-enable; + }; + group3 { + pinmux = <LEDC_CH2_GPIO4>; + output-enable; + }; + + }; + + i2c0_default: i2c0_default { + group1 { + pinmux = <I2C0_SDA_GPIO17>, + <I2C0_SCL_GPIO18>; + bias-pull-up; + drive-open-drain; + output-high; + }; + }; + + ledc1_default: ledc1_default { + group1 { + pinmux = <LEDC_CH0_GPIO5>; + output-enable; + }; + group2 { + pinmux = <LEDC_CH1_GPIO6>; + output-enable; + }; + group3 { + pinmux = <LEDC_CH2_GPIO7>; + output-enable; + }; + + }; + + i2c1_default: i2c1_default { + group1 { + pinmux = <I2C1_SDA_GPIO19>, + <I2C1_SCL_GPIO20>; + bias-pull-up; + drive-open-drain; + output-high; + }; + }; + +}; + +&ipm0 { + status = "okay"; +}; + +&ledc0 { + pinctrl-0 = <&ledc0_default>; + pinctrl-names = "default"; + status = "okay"; + #address-cells = <1>; + #size-cells = <0>; + channel0@0 { + reg = <0x0>; + timer = <0>; + }; + + channel1@0 { + reg = <0x0>; + timer = <0>; + }; + + channel2@0 { + reg = <0x0>; + timer = <0>; + }; +}; + +&i2c0 { + pinctrl-0 = <&i2c0_default>; + pinctrl-names = "default"; + status = "okay"; + clock-frequency = <I2C_BITRATE_FAST>; + + angle_sensor_0: as5600@36 { + compatible = "ams,as5600"; + status = "okay"; + reg = <0x36> + }; +}; + +&ledc1 { + pinctrl-0 = <&ledc1_default>; + pinctrl-names = "default"; + status = "okay"; + #address-cells = <1>; + #size-cells = <0>; + channel0@0 { + reg = <0x0>; + timer = <0>; + }; + + channel1@0 { + reg = <0x0>; + timer = <0>; + }; + + channel2@0 { + reg = <0x0>; + timer = <0>; + }; +}; + +&i2c1 { + pinctrl-0 = <&i2c1_default>; + pinctrl-names = "default"; + status = "okay"; + clock-frequency = <I2C_BITRATE_FAST>; + + angle_sensor_0: as5600@36 { + compatible = "ams,as5600"; + status = "okay"; + reg = <0x36> + }; +}; + +&timer3 { + status = "okay"; +}; \ No newline at end of file diff --git a/app/espfoc_motor_core/esp_foc_hardware_if.c b/app/espfoc_motor_core/esp_foc_hardware_if.c new file mode 100644 index 0000000..ad476ff --- /dev/null +++ b/app/espfoc_motor_core/esp_foc_hardware_if.c @@ -0,0 +1,268 @@ +/* + * MIT License + * + * Copyright (c) 2021 Felipe Neves + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include <stdbool.h> +#include <zephyr/kernel.h> +#include <zephyr/device.h> +#include <zephyr/drivers/gpio.h> +#include <zephyr/drivers/i2c.h> +#include <zephyr/drivers/pwm.h> +#include <zephyr/sys/util.h> +#include <espFoC/motor_control/esp_foc.h> +#include "esp_foc_hardware_if.h" + +#define PWM_PERIOD_NSEC 31250 +#define DC_BUS_VOLTAGE 24.0f + +struct z_esp_foc_motor_if { + struct device *pwm_device; + struct device *angle_sensor; + struct gpio_dt_spec enable_pins; + float accumulated_angle_deg; + float current_rotor_deg; + float prev_rotor_deg; + float current_rotor_speed_dps; + struct esp_foc_motor_interface interface; +}; + +static int reset(struct esp_foc_motor_interface *self) +{ + int ret; + + ret = esp_foc_motor_enable(self); + if (ret < 0) { + return ret; + } + + return esp_foc_motor_align_rotor(self); +} + +static int enable(struct esp_foc_motor_interface *self) +{ + struct z_esp_foc_motor_if *if = CONTAINER_OF(self, struct z_esp_foc_motor_if, interface); + + ret = esp_foc_motor_set_duty_cycles(self, 0.0f, 0.0f, 0.0f); + if (ret < 0) { + return ret; + } + + k_msleep(100); + + gpio_pin_configure_dt(&enable_pins, GPIO_OUTPUT); + gpio_pin_set_dt(&enable_pins, 1); + + k_msleep(100); + + return 0; +} + +static int disable(struct esp_foc_motor_interface *self) +{ + struct z_esp_foc_motor_if *if = CONTAINER_OF(self, struct z_esp_foc_motor_if, interface); + + gpio_pin_configure_dt(&enable_pins, GPIO_OUTPUT); + gpio_pin_set_dt(&enable_pins, 1); + esp_foc_motor_set_duty_cycles(self, 0.0f, 0.0f, 0.0f); + k_msleep(100); + + return 0; +} + +static int align_rotor(struct esp_foc_motor_interface *self) +{ + int ret; + + ret = esp_foc_motor_set_duty_cycles(self, 0.0f, 0.0f, 0.0f); + if (ret < 0) { + return ret; + } + + k_msleep(500); + + ret = esp_foc_motor_set_duty_cycles(self, 0.2f, 0.0f, 0.0f); + if (ret < 0) { + return ret; + } + + k_msleep(500); + + return esp_foc_motor_fetch_sensors(self); +} + +static int set_duty_cycles(struct esp_foc_motor_interface *self, float dc_a, float dc_b, float dc_c) +{ + struct z_esp_foc_motor_if *if = CONTAINER_OF(self, struct z_esp_foc_motor_if, interface); + + if(dc_a > 1.0f) { + dc_a = 1.0f; + } else if (dc_a < 0.0f) { + dc_a = 0.0f; + } + + if(dc_b > 1.0f) { + dc_b = 1.0f; + } else if (dc_b < 0.0f) { + dc_b = 0.0f; + } + + if(dc_c > 1.0f) { + dc_c = 1.0f; + } else if (dc_c < 0.0f) { + dc_c = 0.0f; + } + + dc_a *= PWM_PERIOD_NSEC - 1; + dc_b *= PWM_PERIOD_NSEC - 1; + dc_c *= PWM_PERIOD_NSEC - 1; + + pwm_set(pwm_device, 1 , PWM_PERIOD_NSEC, dc_a, 0); + pwm_set(pwm_device, 2 , PWM_PERIOD_NSEC, dc_b, 0); + pwm_set(pwm_device, 3 , PWM_PERIOD_NSEC, dc_c, 0); + + return 0; +} + +static int get_rotor_angle(struct esp_foc_motor_interface *self, float *angle) +{ + struct z_esp_foc_motor_if *if = CONTAINER_OF(self, struct z_esp_foc_motor_if, interface); + + if(!angle) + return -EINVAL; + + *angle = if->current_rotor_deg; + + return 0; +} + +static int get_rotor_speed_dps(struct esp_foc_motor_interface *self, float *speed_dps) +{ + struct z_esp_foc_motor_if *if = CONTAINER_OF(self, struct z_esp_foc_motor_if, interface); + + if(!speed_dps) + return -EINVAL; + + *speed_dps = if->current_rotor_speed_dps; + + return 0; +} + +static int get_acumulated_angle(struct esp_foc_motor_interface *self, float *angle) +{ + struct z_esp_foc_motor_if *if = CONTAINER_OF(self, struct z_esp_foc_motor_if, interface); + + if(!angle) + return -EINVAL; + + *angle = if->accumulated_angle_deg; + + return 0; +} + +static int get_dc_bus_voltage(struct esp_foc_motor_interface *self, float *vdc) +{ + if(!vdc) + return -EINVAL; + + *vdc = DC_BUS_VOLTAGE; + + return 0; +} + +static int fetch_sensors(struct esp_foc_motor_interface *self) +{ + struct z_esp_foc_motor_if *if = CONTAINER_OF(self, struct z_esp_foc_motor_if, interface); + struct sensor_value raw; + int ret; + + if->prev_rotor_deg = if->current_rotor_deg; + + ret = sensor_sample_fetch(if->angle_sensor); + if(ret) { + return ret; + } + + ret = sensor_channel_get(if->angle_sensor, SENSOR_CHAN_ROTATION, &raw); + if(ret) { + return ret; + } + + if->current_rotor_deg = sensor_value_to_float(&raw); + if->current_rotor_speed_dps = (if->current_rotor_deg - if->prev_rotor_deg); + if->accumulated_angle_deg += if->current_rotor_speed_dps; + + return ret; +} + +static struct z_esp_foc_motor_if z_esp_hw_if[Z_ESP_FOC_MAX] = { + { + .pwm_device = DEVICE_DT_GET(DT_NODELABEL(ledc0)), + .angle_sensor = DEVICE_DT_GET(DT_NODELABEL(angle_sensor_0)), + .enable_pins = GPIO_DT_SPEC_GET_BY_IDX(DT_NODELABEL(inverter_enable_0),gpios,0), + .reset = reset, + .enable = enable, + .disable = disable, + .set_duty_cycles = set_duty_cycles, + .get_rotor_angle = get_rotor_angle, + .get_rotor_speed_dps = get_rotor_speed_dps, + .align_rotor = align_rotor, + .get_acumulated_angle = get_acumulated_angle, + .get_encoder_ppr = NULL, + .get_dc_bus_voltage = get_dc_bus_voltage, + .get_currents = NULL, + .number_of_shunts = NULL, + .fetch_sensors = fetch_sensors, + .current_rotor_deg = 0.0f, + .current_rotor_speed_dps = 0.0f, + .accumulated_angle_deg = 0.0f, + }, + { + .pwm_device = DEVICE_DT_GET(DT_NODELABEL(ledc1)), + .angle_sensor = DEVICE_DT_GET(DT_NODELABEL(angle_sensor_1)), + .enable_pins = GPIO_DT_SPEC_GET_BY_IDX(DT_NODELABEL(inverter_enable_1),gpios,0), + .reset = reset, + .enable = enable, + .disable = disable, + .set_duty_cycles = set_duty_cycles, + .get_rotor_angle = get_rotor_angle, + .get_rotor_speed_dps = get_rotor_speed_dps, + .align_rotor = align_rotor, + .get_acumulated_angle = get_acumulated_angle, + .get_encoder_ppr = NULL, + .get_dc_bus_voltage = get_dc_bus_voltage, + .get_currents = NULL, + .number_of_shunts = NULL, + .fetch_sensors = fetch_sensors, + .current_rotor_deg = 0.0f, + .current_rotor_speed_dps = 0.0f, + .accumulated_angle_deg = 0.0f, + } +} + +struct esp_foc_motor_interface* z_esp_foc_get_interface(enum zephyr_esp_foc_instances instance) +{ + if(instance >= Z_ESP_FOC_MAX) + return NULL; + + return &z_esp_hw_if.self[instance]; +} diff --git a/examples/stubs/motor_hardware_stub.h b/app/espfoc_motor_core/esp_foc_hardware_if.h similarity index 82% rename from examples/stubs/motor_hardware_stub.h rename to app/espfoc_motor_core/esp_foc_hardware_if.h index cc544d8..abe7b4d 100644 --- a/examples/stubs/motor_hardware_stub.h +++ b/app/espfoc_motor_core/esp_foc_hardware_if.h @@ -21,13 +21,14 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#pragma once +#pragma once -#include <espFoc/esp_foc.h> +#include <espFoC/motor_control/esp_foc.h> -struct motor_hardware_stub { - struct esp_foc_motor_interface self; +enum zephyr_esp_foc_instances { + Z_ESP_FOC_1 = 0, + Z_ESP_FOC_2, + Z_ESP_FOC_MAX; }; -int motor_hardware_stub_init(struct motor_hardware_stub *stub, - struct esp_foc_motor_interface **itf); +struct esp_foc_motor_interface* z_esp_foc_get_interface(enum zephyr_esp_foc_instances instance); \ No newline at end of file diff --git a/app/espfoc_motor_core/esp_foc_motor.c b/app/espfoc_motor_core/esp_foc_motor.c new file mode 100644 index 0000000..8d58c61 --- /dev/null +++ b/app/espfoc_motor_core/esp_foc_motor.c @@ -0,0 +1,160 @@ +/* + * MIT License + * + * Copyright (c) 2021 Felipe Neves + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include <zephyr/kernel.h> +#include <espFoC/motor_control/esp_foc.h> +#include <espFoC/ipc/esp_foc_ipc.h> +#include <zephyr/drivers/counter.h> + +#define ESP_FOC_INNER_CONTROL_US_PERIOD (100) + +static const struct device *timer_dev = DEVICE_DT_GET(DT_INST(3,espressif_esp32_timer)); +static float now_seconds = 0.0f; +static struct counter_alarm_cfg alarm_cfg; +static struct esp_foc_motor_control axis; +static struct motor_state outgoing_state; +static struct motor_state next_state; +static struct esp_foc_pid pid_vel_1; +static struct esp_foc_pid pid_pos_1; +static uint32_t timestamp_us = 0; + +static void esp_foc_motor_on_cmd (const struct motor_command *cmd) +{ + float position_deg = cmd->position_mdeg * 0.001f; + float speed_dps = cmd->speed_mdps * 0.001f; + float pid_gains[3] = { + (float *)cmd->pid_gains[0] * 0.001f, + (float *)cmd->pid_gains[1] * 0.001f, + (float *)cmd->pid_gains[2] * 0.001f, + }; + + if(cmd->command_mask & MOTOR_CMD_SPEED_MASK) { + esp_foc_controller_set_speed(&axis, speed_dps); + } + + if(cmd->command_mask & MOTOR_CMD_POSITION_MASK) { + esp_foc_controller_set_position(&axis, position_deg); + } + + if(cmd->command_mask & MOTOR_CMD_SHUTDOWN_MASK) { + if(cmd->power_state) + esp_foc_enable_axis(&axis); + else + esp_foc_disable_axis(&axis); + } + + if(cmd->command_mask & MOTOR_CMD_RESET_MASK) { + esp_foc_motor_reset(z_esp_foc_get_interface(Z_ESP_FOC_1)); + } + + if(cmd->command_mask & MOTOR_CMD_SPD_PID_MASK) { + if(cmd->command_mask & MOTOR_CMD_KP_MASK) { + esp_foc_pid_set_kp(&pid_vel_1, pid_gains[0]); + } + + if(cmd->command_mask & MOTOR_CMD_KI_MASK) { + esp_foc_pid_set_ki(&pid_vel_1, pid_gains[1]); + } + + if(cmd->command_mask & MOTOR_CMD_KD_MASK) { + esp_foc_pid_set_kd(&pid_vel_1, pid_gains[2]); + } + } + + if(cmd->command_mask & MOTOR_CMD_POS_PID_MASK) { + if(cmd->command_mask & MOTOR_CMD_KP_MASK) { + esp_foc_pid_set_kp(&pid_pos_1, pid_gains[0]); + } + + if(cmd->command_mask & MOTOR_CMD_KI_MASK) { + esp_foc_pid_set_ki(&pid_pos_1, pid_gains[1]); + } + + if(cmd->command_mask & MOTOR_CMD_KD_MASK) { + esp_foc_pid_set_kd(&pid_pos_1, pid_gains[2]); + } + } +} +ESP_FOC_DEFINE_IPC_CALLBACK(cmd_callback,esp_foc_motor_on_cmd, NULL); + +static void esp_foc_control_work_handler(struct k_work *work) +{ + esp_foc_run(&axis); +} + +K_WORK_DEFINE(esp_foc_work, motor_control_work_handler); + +static void esp_foc_timer_isr(const struct device *counter_dev, + uint8_t chan_id, uint32_t ticks, + void *user_data) +{ + k_work_submit(&esp_foc_work); + timestamp_us += counter_ticks_to_us(timer_dev, ticks); + counter_set_channel_alarm(timer_dev, 0, &alarm_cfg); +} + +/* We don't actually need a main function*/ +static int esp_foc_early_init(void) +{ + float sample_time_seconds = (float)ESP_FOC_INNER_CONTROL_US_PERIOD * 0.000001f; + + esp_foc_pid_init(&pid_vel_1, + sample_time_seconds * ESP_FOC_SPEED_CONTROL_RATIO, + 10000.0f); + + esp_foc_pid_init(&pid_pos_1, + sample_time_seconds * ESP_FOC_POSITION_CONTROL_RATIO, + 10000.0f); + + esp_foc_init_controller(&axis, z_esp_foc_get_interface(Z_ESP_FOC_1)); + esp_foc_add_position_control(&axis, &pid_pos_1); + esp_foc_add_speed_control(&axis, &pid_vel_1); + + counter_start(timer_dev); + alarm_cfg.flags = 0; + alarm_cfg.ticks = counter_us_to_ticks(timer_dev, CONTROL_PIPELINE_US_PERIOD); + alarm_cfg.callback = esp_foc_timer_isr; + alarm_cfg.user_data = &alarm_cfg; + counter_set_channel_alarm(timer_dev, 0, &alarm_cfg); + + esp_foc_ipc_init(); + esp_foc_ipc_register_callback(&cmd_callback); + + return 0; +} + +SYS_INIT(esp_foc_early_init, POST_KERNEL, CONFIG_APPLICATION_INIT_PRIORITY); + +int main(void) +{ + /* Report motor state each 1 milisecond asynchronously */ + while(1) { + k_msleep(K_USEC(1000)); + outgoing_state.timestamp_us = timestamp_us; + outgoing_state.position_mdeg = (uint32_t)(axis.current_position_degrees * 1000.0f); + outgoing_state.speed_mdps = (uint32_t)(axis.current_speed_dps * 1000.0f); + outgoing_state.power_state = (uint8_t)axis.is_enabled; + esp_foc_ipc_send_state(&outgoing_state); + } +} diff --git a/app/espfoc_motor_core/prj.conf b/app/espfoc_motor_core/prj.conf new file mode 100644 index 0000000..7b505d2 --- /dev/null +++ b/app/espfoc_motor_core/prj.conf @@ -0,0 +1,13 @@ +CONFIG_STDOUT_CONSOLE=n +CONFIG_PRINTK=n +CONFIG_HEAP_MEM_POOL_SIZE=256 + +CONFIG_IPM=y +CONFIG_PWM=y +CONFIG_I2C=y +CONFIG_SENSOR=y +CONFIG_COUNTER=y + +CONFIG_SENSOR=y +CONFIG_AMS_AS5600=y +CONFIG_FLOAT=y \ No newline at end of file diff --git a/app/prj.conf b/app/prj.conf new file mode 100644 index 0000000..3393bef --- /dev/null +++ b/app/prj.conf @@ -0,0 +1,6 @@ +CONFIG_PRINTK=y +CONFIG_IPM=y +CONFIG_TIMESLICE_SIZE=1 +CONFIG_MAIN_STACK_SIZE=8192 +CONFIG_HEAP_MEM_POOL_SIZE=2048 +CONFIG_FLOAT=y \ No newline at end of file diff --git a/common/include/espFoC/ipc/esp_foc_ipc.h b/common/include/espFoC/ipc/esp_foc_ipc.h new file mode 100644 index 0000000..9db4327 --- /dev/null +++ b/common/include/espFoC/ipc/esp_foc_ipc.h @@ -0,0 +1,86 @@ +/* + * MIT License + * + * Copyright (c) 2024 Felipe Neves + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#pragma once + +#include <stdint.h> +#include <stbool.h> +#include <zephyr/kernel.h> + +#define MOTOR_CMD_TORQUE_MASK 0x00 +#define MOTOR_CMD_SPEED_MASK 0x02 +#define MOTOR_CMD_POSITION_MASK 0x04 +#define MOTOR_CMD_SHUTDOWN_MASK 0x08 +#define MOTOR_CMD_RESET_MASK 0x10 +#define MOTOR_CMD_KP_MASK 0x20 +#define MOTOR_CMD_KI_MASK 0x40 +#define MOTOR_CMD_KD_MASK 0x80 +#define MOTOR_CMD_POS_PID_MASK 0x100 +#define MOTOR_CMD_SPD_PID_MASK 0x200 + +struct motor_state { + uint32_t timestamp_us; + uint32_t position_mdeg; + uint32_t speed_mdps; + uint32_t qvoltage_mvolts; + uint32_t dvoltage_mvolts; + uint32_t encoder; + uint8_t power_state; + uint8_t last_cmd_result; + uint8_t motor_number; + uint8_t direction; +}; + +struct motor_command { + uint32_t command_mask; + uint32_t speed_mdps; + uint32_t qvoltage_mvolts; + uint32_t dvoltage_mvolts; + uint32_t pid_gains[3]; + uint8_t power_state; + uint8_t motor_number; + uint8_t direction; + uint8_t res3; +}; + +typedef void (*esp_foc_ipc_motor_state_callback_t) (const struct motor_state *state); +typedef void (*esp_foc_ipc_motor_cmd_callback_t) (const struct motor_command *cmd); + +struct motor_report_callback { + esp_foc_ipc_motor_state_callback_t cmd_cb; + esp_foc_ipc_motor_cmd_callback_t state_cb + sys_dnode_t node; +}; + +#define ESP_FOC_DEFINE_IPC_CALLBACK(name,cmd_callback, state_callback) \ +struct motor_report_callback cn_##name = { \ + .state_cb = state_callback, \ + .cmd_cb = cmd_callback, \ +} + +int esp_foc_ipc_init(void); +int esp_foc_ipc_send_command(const struct motor_command *cmd); +int esp_foc_ipc_send_state(const struct motor_state *state); +int esp_foc_ipc_register_callback(const struct motor_report_callback *cb); +int esp_foc_ipc_remove_callback(const struct motor_report_callback *cb); diff --git a/include/espFoC/esp_foc.h b/common/include/espFoC/motor_control/esp_foc.h similarity index 86% rename from include/espFoC/esp_foc.h rename to common/include/espFoC/motor_control/esp_foc.h index 0105b2a..90b22a4 100644 --- a/include/espFoC/esp_foc.h +++ b/common/include/espFoC/motor_control/esp_foc.h @@ -24,11 +24,12 @@ #pragma once +#include <stdbool.h> #include <math.h> #include <errno.h> -#include <espFoC/esp_foc_motor_interface.h> -#include <espFoC/esp_foc_svm.h> -#include <espFoC/esp_foc_pid.h> +#include "esp_foc_motor_interface.h" +#include "esp_foc_svm.h" +#include "esp_foc_pid.h" struct esp_foc_motor_control { struct esp_foc_motor_interface *motor_hw; @@ -42,8 +43,13 @@ struct esp_foc_motor_control { float target_position_degrees; float current_speed_dps; float current_position_degrees; + + bool is_enabled; }; +extern const int ESP_FOC_SPEED_CONTROL_RATIO; +extern const int ESP_FOC_POSITION_CONTROL_RATIO; + int esp_foc_init_controller(struct esp_foc_motor_control *ctl, const struct esp_foc_motor_interface *hw); @@ -59,4 +65,8 @@ int esp_foc_add_position_control(struct esp_foc_motor_control *ctl, int esp_foc_add_speed_control(struct esp_foc_motor_control *ctl, const struct esp_foc_pid *speed_pid); +int esp_foc_enable_axis(struct esp_foc_motor_control *ctl); + +int esp_foc_disable_axis(struct esp_foc_motor_control *ctl); + int esp_foc_controller_run(struct esp_foc_motor_control *ctl); diff --git a/include/espFoC/esp_foc_motor_interface.h b/common/include/espFoC/motor_control/esp_foc_motor_interface.h similarity index 72% rename from include/espFoC/esp_foc_motor_interface.h rename to common/include/espFoC/motor_control/esp_foc_motor_interface.h index 3322acd..a103a23 100644 --- a/include/espFoC/esp_foc_motor_interface.h +++ b/common/include/espFoC/motor_control/esp_foc_motor_interface.h @@ -27,6 +27,7 @@ struct esp_foc_motor_interface { int (*reset)(struct esp_foc_motor_interface *self); int (*enable)(struct esp_foc_motor_interface *self); + int (*disable)(struct esp_foc_motor_interface *self); int (*set_duty_cycles)(struct esp_foc_motor_interface *self, float a, float b, float c); int (*get_rotor_angle)(struct esp_foc_motor_interface *self, float *angle); int (*get_rotor_speed_dps)(struct esp_foc_motor_interface *self, float *speed_dps); @@ -39,7 +40,7 @@ struct esp_foc_motor_interface { int (*fetch_sensors)(struct esp_foc_motor_interface *self); }; -int esp_foc_motor_reset(struct esp_foc_motor_interface *self) +static inline int esp_foc_motor_reset(struct esp_foc_motor_interface *self) { if(!self) return -EINVAL; @@ -51,7 +52,7 @@ int esp_foc_motor_reset(struct esp_foc_motor_interface *self) } -int esp_foc_motor_enable(struct esp_foc_motor_interface *self) +static inline int esp_foc_motor_enable(struct esp_foc_motor_interface *self) { if(!self) return -EINVAL; @@ -62,7 +63,18 @@ int esp_foc_motor_enable(struct esp_foc_motor_interface *self) return self->enable(self); } -int esp_foc_motor_set_duty_cycles(struct esp_foc_motor_interface *self, float a, float b, float c) +static inline int esp_foc_motor_disable(struct esp_foc_motor_interface *self) +{ + if(!self) + return -EINVAL; + + if(!self->disable) + return -ENOTSUP; + + return self->disable(self); +} + +static inline int esp_foc_motor_set_duty_cycles(struct esp_foc_motor_interface *self, float a, float b, float c) { if(!self) return -EINVAL; @@ -73,7 +85,7 @@ int esp_foc_motor_set_duty_cycles(struct esp_foc_motor_interface *self, float a, return self->set_duty_cycles(Self, a, b, c); } -int esp_foc_motor_get_rotor_angle(struct esp_foc_motor_interface *self, float *angle) +static inline int esp_foc_motor_get_rotor_angle(struct esp_foc_motor_interface *self, float *angle) { if(!self) return -EINVAL; @@ -84,7 +96,7 @@ int esp_foc_motor_get_rotor_angle(struct esp_foc_motor_interface *self, float *a return self->get_rotor_angle(self, angle); } -int esp_foc_motor_get_rotor_speed_dps(struct esp_foc_motor_interface *self, float *speed_dps) +static inline int esp_foc_motor_get_rotor_speed_dps(struct esp_foc_motor_interface *self, float *speed_dps) { if(!self) return -EINVAL; @@ -95,7 +107,7 @@ int esp_foc_motor_get_rotor_speed_dps(struct esp_foc_motor_interface *self, floa return self->get_rotor_speed_dps(self, speed_dps); } -int esp_foc_motor_align_rotor(struct esp_foc_motor_interface *self) +static inline int esp_foc_motor_align_rotor(struct esp_foc_motor_interface *self) { if(!self) return -EINVAL; @@ -106,7 +118,7 @@ int esp_foc_motor_align_rotor(struct esp_foc_motor_interface *self) return self->align_rotor(self); } -int esp_foc_motor_get_acumulated_angle(struct esp_foc_motor_interface *self, float *angle) +static inline int esp_foc_motor_get_acumulated_angle(struct esp_foc_motor_interface *self, float *angle) { if(!self) return -EINVAL; @@ -117,7 +129,7 @@ int esp_foc_motor_get_acumulated_angle(struct esp_foc_motor_interface *self, flo return self->get_acumulated_angle(self, angle); } -int esp_foc_motor_get_encoder_ppr(struct esp_foc_motor_interface *self, float *ppr) +static inline int esp_foc_motor_get_encoder_ppr(struct esp_foc_motor_interface *self, float *ppr) { if(!self) return -EINVAL; @@ -128,7 +140,7 @@ int esp_foc_motor_get_encoder_ppr(struct esp_foc_motor_interface *self, float *p return self->get_encoder_ppr(self, ppr); } -int esp_foc_motor_get_dc_bus_voltage(struct esp_foc_motor_interface *self, float *vdc) +static inline int esp_foc_motor_get_dc_bus_voltage(struct esp_foc_motor_interface *self, float *vdc) { if(!self) return -EINVAL; @@ -139,7 +151,7 @@ int esp_foc_motor_get_dc_bus_voltage(struct esp_foc_motor_interface *self, float return self->get_dc_bus_voltage(self, vdc); } -int esp_foc_motor_get_currents(struct esp_foc_motor_interface *self, float *ia, float *ib, float *ic) +static inline int esp_foc_motor_get_currents(struct esp_foc_motor_interface *self, float *ia, float *ib, float *ic) { if(!self) return -EINVAL; @@ -150,7 +162,7 @@ int esp_foc_motor_get_currents(struct esp_foc_motor_interface *self, float *ia, return self->get_currents(self, ia, ib, ic); } -int esp_foc_motor_number_of_shunts(struct esp_foc_motor_interface *self, int *shunts) +static inline int esp_foc_motor_number_of_shunts(struct esp_foc_motor_interface *self, int *shunts) { if(!self) return -EINVAL; @@ -161,7 +173,7 @@ int esp_foc_motor_number_of_shunts(struct esp_foc_motor_interface *self, int *sh return self->number_of_shunts(self, shunts); } -int esp_foc_motor_fetch_sensors(struct esp_foc_motor_interface *self) +static inline int esp_foc_motor_fetch_sensors(struct esp_foc_motor_interface *self) { if(!self) return -EINVAL; @@ -170,4 +182,4 @@ int esp_foc_motor_fetch_sensors(struct esp_foc_motor_interface *self) return -ENOTSUP; return self->fetch_sensors(self); -} \ No newline at end of file +} diff --git a/include/espFoC/esp_foc_pid.h b/common/include/espFoC/motor_control/esp_foc_pid.h similarity index 100% rename from include/espFoC/esp_foc_pid.h rename to common/include/espFoC/motor_control/esp_foc_pid.h diff --git a/include/espFoC/esp_foc_svm.h b/common/include/espFoC/motor_control/esp_foc_svm.h similarity index 100% rename from include/espFoC/esp_foc_svm.h rename to common/include/espFoC/motor_control/esp_foc_svm.h diff --git a/common/ipc/esp_foc_ipc.c b/common/ipc/esp_foc_ipc.c new file mode 100644 index 0000000..a474cc2 --- /dev/null +++ b/common/ipc/esp_foc_ipc.c @@ -0,0 +1,167 @@ +/* + * MIT License + * + * Copyright (c) 2024 Felipe Neves + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include <string.h> +#include <zephyr/device.h> +#include <zephyr/drivers/ipm.h> +#include <espFoc/ipc/esp_foc_ipc.h> + +#define LOCK_FREE_VAL 0xA5A5A5A5 +#define DIRECTION_TX 0x01 +#define DIRECTION_RX 0x81 + +static const struct device *ipc_dev = DEVICE_DT_GET(DT_CHOSEN(zephyr_ipc)); +static uint8_t *ipc_shm = DT_REG_ADDR(DT_CHOSEN(zephyr_ipc_shm)); +const static uint32_t ipc_shm_size = DT_REG_SIZE(DT_CHOSEN(zephyr_ipc_shm)); + +static atomic_t *shm_lock; +static struct motor_command *tx_motor_cmd; +static struct motor_command *rx_motor_cmd; +static struct motor_state *tx_motor_state; +static struct motor_state *rx_motor_state; + +BUILD_ASSERT(ipc_shm_size >= (2 * sizeof(motor_command)) + + (2 * sizeof(motor_state)), "Not enough shared memory!"); + +#define LOCK_OFFSET 0 +#define TX_CMD_OFFSET (LOCK_OFFSET + sizeof(atomic_t)) +#define RX_CMD_OFFSET (TX_CMD_OFFSET + sizeof(struct motor_command)) +#define TX_STATE_OFFSET (RX_CMD_OFFSET + sizeof(struct motor_command)) +#define RX_STATE_OFFSET (TX_STATE_OFFSET + sizeof(struct motor_state)) + +static sys_dlist_t ipc_callbacks; + +static void ipc_work_handler(struct k_work *work) +{ + sys_dnode_t *node; + + while (!atomic_cas(shm_lock, LOCK_FREE_VAL, + id)) { + ; + } + + SYS_DLIST_FOR_EACH_NODE(&ipc_callbacks, node) { + struct motor_report_callback * report = CONTAINER_OF(ipc_callbacks, struct motor_report_callback, node) + if(report) { + + if(report->cmd_cb) { + report->cmd_cb(rx_motor_cmd); + } + + if(report->state_cb) { + report->state_cb(rx_motor_state); + } + } + } + + atomic_set(shm_lock, LOCK_FREE_VAL); +} + +K_WORK_DEFINE(ipc_work, ipc_work_handler); + +static void ipc_dev_callback(const struct device *dev, void *context, + uint32_t id, volatile void *data) +{ + k_work_submit(&ipc_work); +} + +int esp_foc_ipc_init(void) +{ + shm_lock = (atomic_t *)&ipc_shm[LOCK_OFFSET]; + atomic_set(shm_lock, LOCK_FREE_VAL); + + tx_motor_cmd = (struct motor_command *)&ipc_shm[TX_CMD_OFFSET]; + rx_motor_cmd = (struct motor_command *)&ipc_shm[RX_CMD_OFFSET]; + tx_motor_state = (struct motor_state *)&ipc_shm[TX_STATE_OFFSET]; + rx_motor_state = (struct motor_state *)&ipc_shm[RX_STATE_OFFSET]; + + sys_dlist_init(&ipc_callbacks); + ipm_register_callback(ipc_dev, ipc_dev_callback, NULL); + ipm_set_enabled(ipc_dev, 1); + + return 0; +} +int esp_foc_ipc_send_command(const struct motor_command *cmd) +{ + if(!cmd) + return -EINVAL; + + uint32_t key = irq_lock(); + while (!atomic_cas(shm_lock, LOCK_FREE_VAL, + cmd->command_mask)) { + ; + } + + memcpy(rx_motor_cmd, cmd. sizeof(*rx_motor_cmd)); + atomic_set(shm_lock, LOCK_FREE_VAL); + irq_unlock(key); + + ipm_send(ipc_dev, -1, 0, NULL, 0); + + return 0; +} + +int esp_foc_ipc_send_state(const struct motor_state *state) +{ + if(!state) + return -EINVAL; + + uint32_t key = irq_lock(); + while (!atomic_cas(shm_lock, LOCK_FREE_VAL, + state->timestamp_us)) { + ; + } + + memcpy(rx_motor_state, state. sizeof(*rx_motor_cmd)); + atomic_set(shm_lock, LOCK_FREE_VAL); + + ipm_send(ipc_dev, -1, 0, NULL, 0); + irq_unlock(key); + + return 0; +} + +int esp_foc_ipc_register_callback(const struct motor_report_callback *cb) +{ + if(!cb) + return -EINVAL; + + uint32_t key = irq_lock(); + sys_dlist_append(&ipc_callbacks, &cb->node); + irq_unlock(key); + + return 0; +} + +int esp_foc_ipc_remove_callback(const struct motor_report_callback *cb) +{ + if(!cb) + return -EINVAL; + + uint32_t key = irq_lock(); + sys_dlist_remove(&cb->node); + irq_unlock(key); + + return 0; +} diff --git a/src/esp_foc.c b/common/motor_control/esp_foc.c similarity index 85% rename from src/esp_foc.c rename to common/motor_control/esp_foc.c index dc33bfb..2dc9c3c 100644 --- a/src/esp_foc.c +++ b/common/motor_control/esp_foc.c @@ -23,7 +23,7 @@ */ #include <math.h> -#include <espFoC/esp_foc.h> +#include <motor_control/esp_foc.h> extern const float ESP_FOC_M_PI; extern const float ESP_FOC_2_M_PI; @@ -78,11 +78,13 @@ int esp_foc_init_controller(struct esp_foc_motor_control *ctl, ctl->target_position = 0.0f; ctl->motor_hw = hw; - if(esp_foc_motor_enable(ctl->motor_hw)) { + if(esp_foc_motor_disable(ctl->motor_hw)) { return -ENODEV; } - return esp_foc_motor_reset(ctl->motor_hw); + ctl->is_enabled = false; + + return 0; } int esp_foc_controller_set_speed(struct esp_foc_motor_control *ctl, @@ -130,6 +132,46 @@ int esp_foc_add_speed_control(struct esp_foc_motor_control *ctl, return 0; } +int esp_foc_enable_axis(struct esp_foc_motor_control *ctl) +{ + if(!ctl) + return -EINVAL; + + if(ctl->is_enabled) + return EALREADY; + + int r = esp_foc_motor_enable(ctl->hw) + if(r) + return r; + + r = esp_foc_motor_reset(ctl->motor_hw); + if(r) + return r; + + ctl->is_enabled = true; + + return 0; +} + +int esp_foc_disable_axis(struct esp_foc_motor_control *ctl) +{ + if(!ctl) + return -EINVAL; + + if(!ctl->is_enabled) + return EALREADY; + + int r = esp_foc_motor_disable(ctl->hw) + if(r) + return r; + + ctl->target_speed = 0.0f; + ctl->target_position = 0.0f; + ctl->is_enabled = false; + + return 0; +} + int esp_foc_controller_run(struct esp_foc_motor_control *ctl) { float vd = 0.0f; @@ -141,6 +183,9 @@ int esp_foc_controller_run(struct esp_foc_motor_control *ctl) if(!ctl) return -EINVAL; + if(!ctl->is_enabled) + return -EIO; + esp_foc_motor_fetch_sensors(ctl->hw); if(ctl->pid_position) { diff --git a/src/esp_foc_consts.c b/common/motor_control/esp_foc_consts.c similarity index 100% rename from src/esp_foc_consts.c rename to common/motor_control/esp_foc_consts.c diff --git a/src/esp_foc_our_sin_cos.c b/common/motor_control/esp_foc_our_sin_cos.c similarity index 100% rename from src/esp_foc_our_sin_cos.c rename to common/motor_control/esp_foc_our_sin_cos.c diff --git a/src/esp_foc_pid.c b/common/motor_control/esp_foc_pid.c similarity index 98% rename from src/esp_foc_pid.c rename to common/motor_control/esp_foc_pid.c index 83085e6..f179afc 100644 --- a/src/esp_foc_pid.c +++ b/common/motor_control/esp_foc_pid.c @@ -22,7 +22,7 @@ * SOFTWARE. */ -#include <espFoc/esp_foc_pid.h> +#include <motor_control/esp_foc_pid.h> int esp_foc_pid_init(struct esp_foc_pid *p, float sample_time_seconds, float integral_limit) { diff --git a/src/esp_foc_svm.c b/common/motor_control/esp_foc_svm.c similarity index 98% rename from src/esp_foc_svm.c rename to common/motor_control/esp_foc_svm.c index 47861b7..39c9766 100644 --- a/src/esp_foc_svm.c +++ b/common/motor_control/esp_foc_svm.c @@ -2,7 +2,7 @@ * Copyright (c) 2021 Teslabs Engineering S.L. * SPDX-License-Identifier: Apache-2.0 */ -#include <espFoC/esp_foc.h> +#include <motor_control/esp_foc.h> extern const float ESP_FOC_SQRT3; extern const float ESP_FOC_1_SQRT3; diff --git a/doc/images/arch.png b/doc/images/arch.png new file mode 100644 index 0000000000000000000000000000000000000000..9ddd3099c4028e1333ecb1a86f29089f6b913f54 GIT binary patch literal 117374 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 literal 0 HcmV?d00001 diff --git a/examples/stubs/main.cpp b/examples/stubs/main.cpp deleted file mode 100644 index 0a7a080..0000000 --- a/examples/stubs/main.cpp +++ /dev/null @@ -1,35 +0,0 @@ -#include <unistd.h> -#include <signal.h> -#include <stdio.h> -#include <espFoC/esp_foc.h> - -struct motor_hardware_stub stub; -struct esp_foc_motor_interface *hw; -struct esp_foc_motor_control control; -int should_stop = 0; - -using namespace std; - -int main(int argc, char **argv) -{ - int err; - - err = motor_hardware_stub_init(&stub, &hw); - if(err) - cout << "failed to initialize the motor hardware err:" << err << endl; - - err = esp_foc_init_controller(&control, hw); - if(err) - cout << "failed to initialize esp foc controller err:" << err << endl; - - err = esp_foc_controller_set_speed(&control, 360.0f); - if(err) - cout << "failed to set the initial speed err" << err << endl; - - while(!should_stop) { - err = esp_foc_controller_run(&ctl); - if(err) - cout << "error when running controller err:" << err << endl; - usleep(1000); - } -} diff --git a/examples/stubs/motor_hardware_stub.c b/examples/stubs/motor_hardware_stub.c deleted file mode 100644 index 44a46bc..0000000 --- a/examples/stubs/motor_hardware_stub.c +++ /dev/null @@ -1,133 +0,0 @@ -/* - * MIT License - * - * Copyright (c) 2021 Felipe Neves - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#include <math.h> -#include "motor_hardware_stub.h" - -static const float pole_pairs = 12.0f; -static float erotor_angle = 0.0f; -static const float angle_step_per_ms = 0.36f; - -static int normalize_angle(float *angle) -{ - if(!angle) - return -EINVAL; - - float result = fmod(*angle, (2.0 * 3.141569f)); - if(result > 3.141569f) { - result -= 3.141569f; - } - - *angle = result; - - return 0; -} - -static int reset(struct esp_foc_motor_interface *self) -{ - if(!self) - return -EINVAL; - - return 0; -} - -static int enable(struct esp_foc_motor_interface *self) -{ - if(!self) - return -EINVAL; - - return 0; -} - -static int set_duty_cycles(struct esp_foc_motor_interface *self, float a, float b, float c) -{ - if(!self) - return -EINVAL; - - (void)a; - (void)b; - (void)c; - - return 0; -} - -static int get_rotor_angle(struct esp_foc_motor_interface *self, float *angle) -{ - if(!self || !angle) - return -EINVAL; - - *angle = erotor_angle * pole_pairs; - - return normalize_angle(angle); -} - -static int get_rotor_speed_dps(struct esp_foc_motor_interface *self, float *speed_dps) -{ - if(!self || speed_dps) - return -EINVAL; - - - //360 dps -> 1 RPS -> 1 RPM; - *speed_dps = 360.0f; - - return 0; -} - -static int align_rotor(struct esp_foc_motor_interface *self) -{ - if(!self) - return -EINVAL; - - return 0; -} - -static int fetch_sensors(struct esp_foc_motor_interface *self) -{ - if(!self) - return -EINVAL; - - erotor_angle += angle_step_per_ms; - if(e_angle > 360.0f) { - erotor_angle -= 360.0f; - } - - return 0; -} - -int motor_hardware_stub_init(struct motor_hardware_stub *stub, - struct esp_foc_motor_interface **itf) -{ - if(!stub) - return -EINVAL; - - stub->self->reset = reset; - stub->self->enable = enable; - stub->self->set_duty_cycles = set_duty_cycles; - stub->self->get_rotor_angle = get_rotor_angle; - stub->self->get_rotor_speed_dps = get_rotor_speed_dps; - stub->self->align_rotor = align_rotor; - stub->self->fetch_sensors = fetch_sensors; - - itf = stub->self; - return 0; -} \ No newline at end of file