Paparazzi UAS  v7.0_unstable
Paparazzi is a free software Unmanned Aircraft System.
actuators_esc32.h File Reference

Actuators driver for AutoQuad ESC32 motor controllers. More...

#include "std.h"
#include "generated/airframe.h"
+ Include dependency graph for actuators_esc32.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  ESC32_response
 
struct  ESC32_com
 
struct  ESC32
 

Macros

#define ESC32_RESPONSE_CNT   12
 
#define ESC32_CAN_LCC_MASK   ((uint32_t)0x3<<30)
 
#define ESC32_CAN_LCC_EXCEPTION   ((uint32_t)0x0<<30)
 
#define ESC32_CAN_LCC_HIGH   ((uint32_t)0x1<<30)
 
#define ESC32_CAN_LCC_NORMAL   ((uint32_t)0x2<<30)
 
#define ESC32_CAN_LCC_INFO   ((uint32_t)0x3<<30)
 
#define ESC32_CAN_TT_MASK   ((uint32_t)0x1<<29)
 
#define ESC32_CAN_TT_GROUP   ((uint32_t)0x0<<29)
 
#define ESC32_CAN_TT_NODE   ((uint32_t)0x1<<29)
 
#define ESC32_CAN_FID_MASK   ((uint32_t)0xf<<25)
 
#define ESC32_CAN_FID_RESET_BUS   ((uint32_t)0x0<<25)
 
#define ESC32_CAN_FID_ACK   ((uint32_t)0x1<<25)
 
#define ESC32_CAN_FID_NACK   ((uint32_t)0x2<<25)
 
#define ESC32_CAN_FID_CMD   ((uint32_t)0x3<<25)
 
#define ESC32_CAN_FID_GET   ((uint32_t)0x4<<25)
 
#define ESC32_CAN_FID_SET   ((uint32_t)0x5<<25)
 
#define ESC32_CAN_FID_REPLY   ((uint32_t)0x6<<25)
 
#define ESC32_CAN_FID_REQ_ADDR   ((uint32_t)0x7<<25)
 
#define ESC32_CAN_FID_GRANT_ADDR   ((uint32_t)0x8<<25)
 
#define ESC32_CAN_FID_ERROR   ((uint32_t)0x9<<25)
 
#define ESC32_CAN_FID_PING   ((uint32_t)0xa<<25)
 
#define ESC32_CAN_FID_TELEM   ((uint32_t)0xb<<25)
 
#define ESC32_CAN_DOC_MASK   ((uint32_t)0x3f<<19)
 
#define ESC32_CAN_SID_MASK   ((uint32_t)0x1f<<14)
 
#define ESC32_CAN_TID_MASK   ((uint32_t)0x1f<<9)
 
#define ESC32_CAN_SEQ_MASK   ((uint32_t)0x3f<<3)
 
#define ActuatorESC32Set(_i, _v)   { actuators_esc32_set(_i, _v); }
 
#define ActuatorsESC32Init()   actuators_esc32_init()
 
#define ActuatorsESC32Commit()   actuators_esc32_commit()
 

Enumerations

enum  {
  ESC32_CAN_TYPE_ESC = 1 , ESC32_CAN_TYPE_SERVO , ESC32_CAN_TYPE_SENSOR , ESC32_CAN_TYPE_SWITCH ,
  ESC32_CAN_TYPE_OSD , ESC32_CAN_TYPE_UART , ESC32_CAN_TYPE_HUB , ESC32_CAN_TYPE_NUM
}
 
enum  {
  ESC32_CAN_CMD_DISARM = 1 , ESC32_CAN_CMD_ARM , ESC32_CAN_CMD_START , ESC32_CAN_CMD_STOP ,
  ESC32_CAN_CMD_SETPOINT10 , ESC32_CAN_CMD_SETPOINT12 , ESC32_CAN_CMD_SETPOINT16 , ESC32_CAN_CMD_RPM ,
  ESC32_CAN_CMD_CFG_READ , ESC32_CAN_CMD_CFG_WRITE , ESC32_CAN_CMD_CFG_DEFAULT , ESC32_CAN_CMD_TELEM_RATE ,
  ESC32_CAN_CMD_TELEM_VALUE , ESC32_CAN_CMD_BEEP , ESC32_CAN_CMD_POS , ESC32_CAN_CMD_USER_DEFINED ,
  ESC32_CAN_CMD_RESET , ESC32_CAN_CMD_STREAM , ESC32_CAN_CMD_ON , ESC32_CAN_CMD_OFF
}
 
enum  {
  ESC32_CAN_DATA_GROUP = 1 , ESC32_CAN_DATA_TYPE , ESC32_CAN_DATA_ID , ESC32_CAN_DATA_INPUT_MODE ,
  ESC32_CAN_DATA_RUN_MODE , ESC32_CAN_DATA_STATE , ESC32_CAN_DATA_PARAM_ID , ESC32_CAN_DATA_TELEM ,
  ESC32_CAN_DATA_VERSION , ESC32_CAN_DATA_VALUE , ESC32_CAN_DATA_PARAM_NAME1 , ESC32_CAN_DATA_PARAM_NAME2
}
 
enum  {
  ESC32_CAN_TELEM_NONE = 0 , ESC32_CAN_TELEM_STATUS , ESC32_CAN_TELEM_STATE , ESC32_CAN_TELEM_TEMP ,
  ESC32_CAN_TELEM_VIN , ESC32_CAN_TELEM_AMPS , ESC32_CAN_TELEM_RPM , ESC32_CAN_TELEM_ERRORS ,
  ESC32_CAN_TELEM_VALUE , ESC32_CAN_TELEM_NUM
}
 
enum  ESC32_esc_status { ESC32_STATUS_ESC_FREE = 0 , ESC32_STATUS_ESC_INIT , ESC32_STATUS_ESC_RDY }
 
enum  ESC32_status { ESC32_STATUS_INIT = 0 , ESC32_STATUS_MELODY , ESC32_STATUS_UNARMED , ESC32_STATUS_RUNNING }
 
enum  ESC32_config_cmd { ESC32_CONFIG_CMD_IDLE = 0 , ESC32_CONFIG_CMD_BEEP , ESC32_CONFIG_CMD_TURN , ESC32_CONFIG_CMD_DIR }
 

Functions

void actuators_esc32_init (void)
 Initializes the ESCs. More...
 
void actuators_esc32_commit (void)
 Commits the commands and sends them to the ESCs. More...
 
void actuators_esc32_set (uint8_t i, uint16_t v)
 Set the commands (either RPM or duty cycle) More...
 
void actuators_esc32_config_cmd (uint8_t i)
 When receiving a configuration setting command. More...
 

Variables

struct ESC32 actuators_esc32
 

Detailed Description

Actuators driver for AutoQuad ESC32 motor controllers.

Definition in file actuators_esc32.h.


Data Structure Documentation

◆ ESC32_response

struct ESC32_response

Definition at line 146 of file actuators_esc32.h.

Data Fields
uint8_t data[8] The data of the response.
uint8_t fid The FID of the response.

◆ ESC32_com

struct ESC32_com

Definition at line 158 of file actuators_esc32.h.

Data Fields
uint8_t can_id The CAN identifier.
uint8_t network_id Index in the array +1.
enum ESC32_esc_status status The current status of the esc.
uint8_t type The type of ESC.
uint32_t uuid The UUID of the ESC.

◆ ESC32

struct ESC32

Definition at line 182 of file actuators_esc32.h.

+ Collaboration diagram for ESC32:
Data Fields
uint8_t can_seq_idx CAN seq ID used for communicating.
uint16_t cmds[SERVOS_ESC32_NB] Commands which need to be committed.
enum ESC32_config_cmd config_cmd The command.
uint8_t config_idx Selected ESC.
struct ESC32_com escs[SERVOS_ESC32_NB] The ESCs connected via CAN.
uint8_t escs_sorted[SERVOS_ESC32_NB] The ESCs sorted by uuid.
uint32_t melody_status The status of the melody.
struct ESC32_response responses[ESC32_RESPONSE_CNT] Responses of CAN messages.
enum ESC32_status status The current status of all actuators.

Macro Definition Documentation

◆ ActuatorESC32Set

#define ActuatorESC32Set (   _i,
  _v 
)    { actuators_esc32_set(_i, _v); }

Definition at line 205 of file actuators_esc32.h.

◆ ActuatorsESC32Commit

#define ActuatorsESC32Commit ( )    actuators_esc32_commit()

Definition at line 207 of file actuators_esc32.h.

◆ ActuatorsESC32Init

#define ActuatorsESC32Init ( )    actuators_esc32_init()

Definition at line 206 of file actuators_esc32.h.

◆ ESC32_CAN_DOC_MASK

#define ESC32_CAN_DOC_MASK   ((uint32_t)0x3f<<19)

Definition at line 66 of file actuators_esc32.h.

◆ ESC32_CAN_FID_ACK

#define ESC32_CAN_FID_ACK   ((uint32_t)0x1<<25)

Definition at line 52 of file actuators_esc32.h.

◆ ESC32_CAN_FID_CMD

#define ESC32_CAN_FID_CMD   ((uint32_t)0x3<<25)

Definition at line 54 of file actuators_esc32.h.

◆ ESC32_CAN_FID_ERROR

#define ESC32_CAN_FID_ERROR   ((uint32_t)0x9<<25)

Definition at line 60 of file actuators_esc32.h.

◆ ESC32_CAN_FID_GET

#define ESC32_CAN_FID_GET   ((uint32_t)0x4<<25)

Definition at line 55 of file actuators_esc32.h.

◆ ESC32_CAN_FID_GRANT_ADDR

#define ESC32_CAN_FID_GRANT_ADDR   ((uint32_t)0x8<<25)

Definition at line 59 of file actuators_esc32.h.

◆ ESC32_CAN_FID_MASK

#define ESC32_CAN_FID_MASK   ((uint32_t)0xf<<25)

Definition at line 50 of file actuators_esc32.h.

◆ ESC32_CAN_FID_NACK

#define ESC32_CAN_FID_NACK   ((uint32_t)0x2<<25)

Definition at line 53 of file actuators_esc32.h.

◆ ESC32_CAN_FID_PING

#define ESC32_CAN_FID_PING   ((uint32_t)0xa<<25)

Definition at line 61 of file actuators_esc32.h.

◆ ESC32_CAN_FID_REPLY

#define ESC32_CAN_FID_REPLY   ((uint32_t)0x6<<25)

Definition at line 57 of file actuators_esc32.h.

◆ ESC32_CAN_FID_REQ_ADDR

#define ESC32_CAN_FID_REQ_ADDR   ((uint32_t)0x7<<25)

Definition at line 58 of file actuators_esc32.h.

◆ ESC32_CAN_FID_RESET_BUS

#define ESC32_CAN_FID_RESET_BUS   ((uint32_t)0x0<<25)

Definition at line 51 of file actuators_esc32.h.

◆ ESC32_CAN_FID_SET

#define ESC32_CAN_FID_SET   ((uint32_t)0x5<<25)

Definition at line 56 of file actuators_esc32.h.

◆ ESC32_CAN_FID_TELEM

#define ESC32_CAN_FID_TELEM   ((uint32_t)0xb<<25)

Definition at line 62 of file actuators_esc32.h.

◆ ESC32_CAN_LCC_EXCEPTION

#define ESC32_CAN_LCC_EXCEPTION   ((uint32_t)0x0<<30)

Definition at line 37 of file actuators_esc32.h.

◆ ESC32_CAN_LCC_HIGH

#define ESC32_CAN_LCC_HIGH   ((uint32_t)0x1<<30)

Definition at line 38 of file actuators_esc32.h.

◆ ESC32_CAN_LCC_INFO

#define ESC32_CAN_LCC_INFO   ((uint32_t)0x3<<30)

Definition at line 40 of file actuators_esc32.h.

◆ ESC32_CAN_LCC_MASK

#define ESC32_CAN_LCC_MASK   ((uint32_t)0x3<<30)

Definition at line 36 of file actuators_esc32.h.

◆ ESC32_CAN_LCC_NORMAL

#define ESC32_CAN_LCC_NORMAL   ((uint32_t)0x2<<30)

Definition at line 39 of file actuators_esc32.h.

◆ ESC32_CAN_SEQ_MASK

#define ESC32_CAN_SEQ_MASK   ((uint32_t)0x3f<<3)

Definition at line 78 of file actuators_esc32.h.

◆ ESC32_CAN_SID_MASK

#define ESC32_CAN_SID_MASK   ((uint32_t)0x1f<<14)

Definition at line 70 of file actuators_esc32.h.

◆ ESC32_CAN_TID_MASK

#define ESC32_CAN_TID_MASK   ((uint32_t)0x1f<<9)

Definition at line 74 of file actuators_esc32.h.

◆ ESC32_CAN_TT_GROUP

#define ESC32_CAN_TT_GROUP   ((uint32_t)0x0<<29)

Definition at line 45 of file actuators_esc32.h.

◆ ESC32_CAN_TT_MASK

#define ESC32_CAN_TT_MASK   ((uint32_t)0x1<<29)

Definition at line 44 of file actuators_esc32.h.

◆ ESC32_CAN_TT_NODE

#define ESC32_CAN_TT_NODE   ((uint32_t)0x1<<29)

Definition at line 46 of file actuators_esc32.h.

◆ ESC32_RESPONSE_CNT

#define ESC32_RESPONSE_CNT   12

Definition at line 32 of file actuators_esc32.h.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
ESC32_CAN_TYPE_ESC 
ESC32_CAN_TYPE_SERVO 
ESC32_CAN_TYPE_SENSOR 
ESC32_CAN_TYPE_SWITCH 
ESC32_CAN_TYPE_OSD 
ESC32_CAN_TYPE_UART 
ESC32_CAN_TYPE_HUB 
ESC32_CAN_TYPE_NUM 

Definition at line 81 of file actuators_esc32.h.

◆ anonymous enum

anonymous enum
Enumerator
ESC32_CAN_CMD_DISARM 
ESC32_CAN_CMD_ARM 
ESC32_CAN_CMD_START 
ESC32_CAN_CMD_STOP 
ESC32_CAN_CMD_SETPOINT10 
ESC32_CAN_CMD_SETPOINT12 
ESC32_CAN_CMD_SETPOINT16 
ESC32_CAN_CMD_RPM 
ESC32_CAN_CMD_CFG_READ 
ESC32_CAN_CMD_CFG_WRITE 
ESC32_CAN_CMD_CFG_DEFAULT 
ESC32_CAN_CMD_TELEM_RATE 
ESC32_CAN_CMD_TELEM_VALUE 
ESC32_CAN_CMD_BEEP 
ESC32_CAN_CMD_POS 
ESC32_CAN_CMD_USER_DEFINED 
ESC32_CAN_CMD_RESET 
ESC32_CAN_CMD_STREAM 
ESC32_CAN_CMD_ON 
ESC32_CAN_CMD_OFF 

Definition at line 93 of file actuators_esc32.h.

◆ anonymous enum

anonymous enum
Enumerator
ESC32_CAN_DATA_GROUP 
ESC32_CAN_DATA_TYPE 
ESC32_CAN_DATA_ID 
ESC32_CAN_DATA_INPUT_MODE 
ESC32_CAN_DATA_RUN_MODE 
ESC32_CAN_DATA_STATE 
ESC32_CAN_DATA_PARAM_ID 
ESC32_CAN_DATA_TELEM 
ESC32_CAN_DATA_VERSION 
ESC32_CAN_DATA_VALUE 
ESC32_CAN_DATA_PARAM_NAME1 
ESC32_CAN_DATA_PARAM_NAME2 

Definition at line 117 of file actuators_esc32.h.

◆ anonymous enum

anonymous enum
Enumerator
ESC32_CAN_TELEM_NONE 
ESC32_CAN_TELEM_STATUS 
ESC32_CAN_TELEM_STATE 
ESC32_CAN_TELEM_TEMP 
ESC32_CAN_TELEM_VIN 
ESC32_CAN_TELEM_AMPS 
ESC32_CAN_TELEM_RPM 
ESC32_CAN_TELEM_ERRORS 
ESC32_CAN_TELEM_VALUE 
ESC32_CAN_TELEM_NUM 

Definition at line 133 of file actuators_esc32.h.

◆ ESC32_config_cmd

Enumerator
ESC32_CONFIG_CMD_IDLE 
ESC32_CONFIG_CMD_BEEP 
ESC32_CONFIG_CMD_TURN 
ESC32_CONFIG_CMD_DIR 

Definition at line 175 of file actuators_esc32.h.

◆ ESC32_esc_status

Enumerator
ESC32_STATUS_ESC_FREE 
ESC32_STATUS_ESC_INIT 
ESC32_STATUS_ESC_RDY 

Definition at line 152 of file actuators_esc32.h.

◆ ESC32_status

Enumerator
ESC32_STATUS_INIT 
ESC32_STATUS_MELODY 
ESC32_STATUS_UNARMED 
ESC32_STATUS_RUNNING 

Definition at line 167 of file actuators_esc32.h.

Function Documentation

◆ actuators_esc32_commit()

◆ actuators_esc32_config_cmd()

◆ actuators_esc32_init()

◆ actuators_esc32_set()

void actuators_esc32_set ( uint8_t  i,
uint16_t  v 
)

Set the commands (either RPM or duty cycle)

Definition at line 73 of file actuators_esc32.c.

References actuators_esc32, ESC32::cmds, and ESC32::escs_sorted.

Variable Documentation

◆ actuators_esc32