diff --git a/libraries/AP_HAL_ChibiOS/hwdef/zr-v4/README.md b/libraries/AP_HAL_ChibiOS/hwdef/zr-v4/README.md new file mode 100644 index 0000000000..4f5a2eb5d4 --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/zr-v4/README.md @@ -0,0 +1,393 @@ +# Pixhawk4 Flight Controller + +The Pixhawk4 flight controller is sold by [Holybro](http://www.holybro.com/product/pixhawk-4) + +## Features + + - STM32F765 microcontroller + - Two IMUs: ICM20689 and BMI055 + - MS5611 SPI barometer + - builtin I2C IST8310 magnetometer + - microSD card slot + - 6 UARTs plus USB + - 14 PWM outputs + - Four I2C and two CAN ports + - External Buzzer + - external safety Switch + - voltage monitoring for servo rail and Vcc + - two dedicated power input ports for external power bricks + +## Pinout + +![Pixhawk4 Board](pixhawk4-pinout.jpg "Pixhawk4") + +## UART Mapping + + - SERIAL0 -> USB + - SERIAL1 -> UART2 (Telem1) + - SERIAL2 -> UART3 (Telem2) + - SERIAL3 -> UART1 (GPS) + - SERIAL4 -> UART4 (GPS2) + - SERIAL5 -> UART6 (spare) + - SERIAL6 -> UART7 (spare, debug) + +The Telem1 and Telem2 ports have RTS/CTS pins, the other UARTs do not +have RTS/CTS. + +The UART7 connector is labelled debug, but is available as a general +purpose UART with ArduPilot. + +### TELEM1, TELEM2 ports + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Pin Signal Volt
1 (red)VCC+5V
2 (blk)TX (OUT)+3.3V
3 (blk)RX (IN)+3.3V
4 (blk)CTS+3.3V
5 (blk)RTS+3.3V
6 (blk)GNDGND
+ + +### GPS port + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Pin Signal Volt
1 (red)VCC+5V
2 (blk)SERIAL3 TX (OUT)+3.3V
3 (blk)SERIAL3 RX (IN)+3.3V
4 (blk)SCL+3.3 (pullups)
5 (blk)SDA+3.3 (pullups)
6 (blk)SafetyButton+3.3V
7 (blk)SafetyLED+3.3V
8 (blk)VDD 3.3 (OUT)+3.3V
9 (blk)Buzzer+3.3V
10 (blk)GNDGND
+ +## RC Input + +RC input is configured on the port marked DSM/SBUS RC. This connector +supports all RC protocols. Two cables are available for this port. To +use software binding of Spektrum satellite receivers you need to use +the Spektrum satellite cable. + +## PWM Output + +The Pixhawk4 supports up to 16 PWM outputs. First first 8 outputs (labelled +"MAIN") are controlled by a dedicated STM32F100 IO controller. These 8 +outputs support all PWM output formats, but not DShot. + +The remaining 8 outputs (labelled AUX1 to AUX8) are the "auxillary" +outputs. These are directly attached to the STM32F765 and support all +PWM protocols. The first 6 of the auxillary PWM outputs support DShot. + +The 8 main PWM outputs are in 3 groups: + + - PWM 1 and 2 in group1 + - PWM 3 and 4 in group2 + - PWM 5, 6, 7 and 8 in group3 + +The 8 auxillary PWM outputs are in 2 groups: + + - PWM 1, 2, 3 and 4 in group1 + - PWM 5 and 6 in group2 + - PWM 7 and 8 in group3 + +Channels within the same group need to use the same output rate. If +any channel in a group uses DShot then all channels in the group need +to use DShot. + +## Battery Monitoring + +The board has two dedicated power monitor ports on 6 pin +connectors. The correct battery setting parameters are dependent on +the type of power brick which is connected. + +## Compass + +The Pixhawk4 has a builtin IST8310 compass. Due to potential +interference the board is usually used with an external I2C compass as +part of a GPS/Compass combination. + +## GPIOs + +The 6 PWM ports can be used as GPIOs (relays, buttons, RPM etc). To +use them you need to limit the number of these pins that is used for +PWM by setting the BRD_PWM_COUNT to a number less than 6. For example +if you set BRD_PWM_COUNT to 4 then PWM5 and PWM6 will be available for +use as GPIOs. + +The numbering of the GPIOs for PIN variables in ArduPilot is: + + - AUX1 50 + - AUX2 51 + - AUX3 52 + - AUX4 53 + - AUX5 54 + - AUX6 55 + +## Analog inputs + +The Pixhawk4 has 7 analog inputs + + - ADC Pin0 -> Battery Voltage + - ADC Pin1 -> Battery Current Sensor + - ADC Pin2 -> Battery Voltage 2 + - ADC Pin3 -> Battery Current Sensor 2 + - ADC Pin4 -> ADC port pin 2 + - ADC Pin14 -> ADC port pin 3 + - ADC Pin10 -> ADC 5V Sense + - ADC Pin11 -> ADC 3.3V Sense + - ADC Pin103 -> RSSI voltage monitoring + +## I2C Buses + + - the internal I2C port is bus 0 in ArduPilot (I2C3 in hardware) + - the port labelled I2CA is bus 3 in ArduPilot (I2C4 in hardware) + - the port labelled I2CB is bus 2 in ArduPilot (I2c2 in hardware) + - the port labelled GPS is bus 1 in ArduPilot (I2c1 in hardware) + +### Pinout for I2CA + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PinSignalVolt
1 (red)VCC+5V
2 (blk)SCL+3.3 (pullups)
3 (blk)SDA+3.3 (pullups)
4 (blk)GNDGND
+ +### Pinout for I2CB+UART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PinSignalVolt
1 (red)VCC+5V
2 (blk)SERIAL4 TX (OUT)+3.3V
3 (blk)SERIAL4 RX (IN)+3.3V
4 (blk)SCL+3.3 (pullups)
5 (blk)SDA+3.3 (pullups)
6 (blk)GNDGND
+ +## CAN + +The Pixhawk4 has two independent CAN buses, with the following pinouts. + +### CAN1&2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PinSignalVolt
1 (red)VCC+5V
2 (blk)CAN_H+12V
3 (blk)CAN_L+12V
4 (blk)GNDGND
+ +## Debug + +The Pixhawk4 supports SWD debugging on the debug port + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Pin Signal Volt
1 (red)FMU VDD 3.3+3.3V
2 (blk)UART TX Debug (OUT)+3.3V
3 (blk)UART RX Debug (IN)+3.3V
4 (blk)SWDIO+3.3V
5 (blk)SWCLK+3.3V
6 (blk)GNDGND
+ + +## Loading Firmware + +The board comes pre-installed with an ArduPilot compatible bootloader, +allowing the loading of *.apj firmware files with any ArduPilot +compatible ground station. + +## Acknowledgements + +Thanks to +[PX4](https://docs.px4.io/en/flight_controller/pixhawk4.html) for +images used under the [CC-BY 4.0 license](https://creativecommons.org/licenses/by/4.0/) diff --git a/libraries/AP_HAL_ChibiOS/hwdef/zr-v4/defaults.parm b/libraries/AP_HAL_ChibiOS/hwdef/zr-v4/defaults.parm new file mode 100644 index 0000000000..e11ee429e2 --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/zr-v4/defaults.parm @@ -0,0 +1,325 @@ + +# Pixhawk4 does not have hw flow control on radios +#NOTE: 2020/8/26 18:26:32 Frame : PID 1.4.4 +ACRO_BAL_PITCH 1 +ACRO_BAL_ROLL 1 +ACRO_RP_EXPO 0.3 +ACRO_RP_P 4.5 +ACRO_THR_MID 0 +ACRO_TRAINER 2 +ACRO_Y_EXPO 0 +ACRO_YAW_P 3 +ARMING_CHECK 1 +ARMING_DELAY 5 +ARMING_MIS_ITEMS 0 +ARMING_RUDDER 2 +ARMING_VPERC 90 +ATC_ACCEL_P_MAX 110000 +ATC_ACCEL_R_MAX 110000 +ATC_ACCEL_Y_MAX 27000 +ATC_ANG_LIM_TC 1 +ATC_ANG_PIT_P 4.5 +ATC_ANG_RLL_P 4.5 +ATC_ANG_YAW_P 6 +ATC_ANGLE_BOOST 1 +ATC_INPUT_TC 0.15 +ATC_RAT_PIT_D 0.0036 +ATC_RAT_PIT_FF 0 +ATC_RAT_PIT_FLTD 20 +ATC_RAT_PIT_FLTE 0 +ATC_RAT_PIT_FLTT 20 +ATC_RAT_PIT_I 0.19 +ATC_RAT_PIT_IMAX 0.5 +ATC_RAT_PIT_P 0.22 +ATC_RAT_RLL_D 0.0036 +ATC_RAT_RLL_FF 0 +ATC_RAT_RLL_FLTD 20 +ATC_RAT_RLL_FLTE 0 +ATC_RAT_RLL_FLTT 20 +ATC_RAT_RLL_I 0.19 +ATC_RAT_RLL_IMAX 0.5 +ATC_RAT_RLL_P 0.22 +ATC_RAT_YAW_D 0 +ATC_RAT_YAW_FF 0 +ATC_RAT_YAW_FLTD 0 +ATC_RAT_YAW_FLTE 2.5 +ATC_RAT_YAW_FLTT 20 +ATC_RAT_YAW_I 0.04 +ATC_RAT_YAW_IMAX 0.5 +ATC_RAT_YAW_P 0.45 +ATC_RATE_FF_ENAB 1 +ATC_RATE_P_MAX 0 +ATC_RATE_R_MAX 0 +ATC_RATE_Y_MAX 0 +ATC_SLEW_YAW 6000 +ATC_THR_MIX_MAN 0.1 +ATC_THR_MIX_MAX 0.5 +ATC_THR_MIX_MIN 0.1 +AVOID_ANGLE_MAX 1000 +AVOID_BEHAVE 0 +AVOID_DIST_MAX 1 +AVOID_ENABLE 0 +AVOID_MARGIN 7 +BATT_AMP_OFFSET 0 +BATT_AMP_PERVLT 20.7 +BATT_ARM_MAH 0 +BATT_ARM_VOLT 0 +BATT_CAPACITY 16000 +BATT_CRT_MAH 0 +BATT_CRT_VOLT 0 +BATT_CURR_PIN 1 +BATT_FS_CRT_ACT 0 +BATT_FS_LOW_ACT 2 +BATT_FS_VOLTSRC 0 +BATT_LOW_MAH 0 +BATT_LOW_VOLT 20.5 +BATT_LOW_TIMER 10 +BATT_MONITOR 4 +BATT_SERIAL_NUM -1 +BATT_VOLT_PIN 0 +BATT2_MONITOR 13 +BRD_PWM_COUNT 0 +BRD_RTC_TYPES 1 +BRD_RTC_TZ_MIN 0 +BRD_SAFETYENABLE 0 +BRD_SAFETYOPTION 3 +BRD_SBUS_OUT 0 +BRD_SD_SLOWDOWN 0 +BRD_SER1_RTSCTS 0 +BRD_SER2_RTSCTS 0 +BRD_SERIAL_NUM 0 +BRD_TYPE 24 +BRD_VBUS_MIN 4.3 +BRD_VSERVO_MIN 0 +BTN_ENABLE 0 +CAM_AUTO_ONLY 1 +CAM_DURATION 3 +CAM_FEEDBACK_PIN -1 +CAM_FEEDBACK_POL 0 +CAM_MAX_ROLL 0 +CAM_MIN_INTERVAL 0 +CAM_RELAY_ON 1 +CAM_SERVO_OFF 1100 +CAM_SERVO_ON 1900 +CAM_TRIGG_DIST 0 +CAM_TRIGG_TYPE 2 +CAM_TYPE 0 +CAN_D1_PROTOCOL 1 +CAN_D1_UC_ESC_BM 0 +CAN_D1_UC_NODE 10 +CAN_D1_UC_SRV_BM 0 +CAN_D1_UC_SRV_RT 50 +CAN_D2_PROTOCOL 1 +CAN_P1_BITRATE 1000000 +CAN_P1_DRIVER 1 +CAN_P2_BITRATE 1000000 +CAN_P2_DRIVER 1 +CAN_SLCAN_CPORT 0 +CAN_SLCAN_SERNUM -1 +CAN_SLCAN_TIMOUT 0 +CHUTE_ENABLED 0 +CIRCLE_RADIUS 1000 +CIRCLE_RATE 20 +COMPASS_USE 1 +COMPASS_USE2 0 +COMPASS_USE3 0 +DEV_OPTIONS 0 +DISARM_DELAY 2 +EK2_MAG_I_GATE 800 +EK2_YAW_I_GATE 800 +FLTMODE_CH 5 +FLTMODE1 2 +FLTMODE2 2 +FLTMODE3 5 +FLTMODE4 5 +FLTMODE5 5 +FLTMODE6 5 +FRAME_CLASS 1 +FRAME_TYPE 1 +FS_CRASH_CHECK 1 +FS_EKF_ACTION 1 +FS_EKF_THRESH 0.8 +FS_GCS_ENABLE 0 +FS_OPTIONS 0 +FS_THR_ENABLE 0 +FS_THR_VALUE 975 +FS_VIBE_ENABLE 1 +GND_EFFECT_COMP 1 +GND_EXT_BUS -1 +GND_FLTR_RNG 0 +GND_PRIMARY 0 +GND_PROBE_EXT 0 +GND_TEMP 0 +GPS_AUTO_CONFIG 1 +GPS_AUTO_SWITCH 1 +GPS_BLEND_MASK 5 +GPS_BLEND_TC 10 +GPS_DELAY_MS 0 +GPS_DELAY_MS2 0 +GPS_GNSS_MODE 0 +GPS_GNSS_MODE2 0 +GPS_HDOP_GOOD 90 +GPS_INJECT_TO 127 +GPS_MIN_DGPS 100 +GPS_MIN_ELEV -100 +GPS_NAVFILTER 8 +GPS_NUM_SW 5 +GPS_POS1_X 0 +GPS_POS1_Y 0 +GPS_POS1_Z 0 +GPS_POS2_X 0 +GPS_POS2_Y 0 +GPS_POS2_Z 0 +GPS_RATE_MS 200 +GPS_RATE_MS2 200 +GPS_RAW_DATA 0 +GPS_SAVE_CFG 2 +GPS_SBAS_MODE 2 +GPS_SBP_LOGMASK -256 +GPS_TYPE 1 +GPS_TYPE2 5 +LAND_ALT_LOW 5000 +LAND_LOCK_ALT 40 +LAND_LOCK_RPY 1 +LAND_REPOSITION 1 +LAND_SL_2ND_ALT 1500 +LAND_SL_3ND_ALT 3000 +LAND_SPEED 150 +LAND_SPEED_2ND 50 +LAND_SPEED_3ND 100 +LAND_SPEED_HIGH 0 +MOT_BAT_CURR_MAX 0 +MOT_BAT_CURR_TC 5 +MOT_BAT_IDX 0 +MOT_BAT_VOLT_MAX 0 +MOT_BAT_VOLT_MIN 0 +MOT_BOOST_SCALE 0 +MOT_HOVER_LEARN 2 +MOT_PWM_MAX 0 +MOT_PWM_MIN 0 +MOT_PWM_TYPE 0 +MOT_SAFE_DISARM 0 +MOT_SAFE_TIME 1 +MOT_SLEW_DN_TIME 0 +MOT_SLEW_UP_TIME 0 +MOT_SPIN_ARM 0.1 +MOT_SPIN_MAX 0.95 +MOT_SPIN_MIN 0.15 +MOT_SPOOL_TIME 0.5 +MOT_THST_EXPO 0.65 +MOT_THST_HOVER 0.35 +MOT_YAW_HEADROOM 200 +NTF_BUZZ_ENABLE 1 +NTF_BUZZ_ON_LVL 1 +NTF_BUZZ_PIN 0 +NTF_BUZZ_VOLUME 100 +NTF_DISPLAY_TYPE 0 +NTF_LED_BRIGHT 3 +NTF_LED_OVERRIDE 4 +NTF_LED_TYPES 38 +NTF_OREO_THEME 0 +OA_TYPE 0 +PHLD_BRAKE_ANGLE 3000 +PHLD_BRAKE_RATE 8 +PILOT_ACCEL_Z 250 +PILOT_DN2_ALT 100 +PILOT_SPEED_DN 250 +PILOT_SPEED_DN2 100 +PILOT_SPEED_UP 250 +PILOT_THR_BHV 0 +PILOT_THR_FILT 0 +PILOT_TKOFF_ALT 0 +PLND_ENABLED 0 +PRX_TYPE 4 +PRX_YAW_CORR 0 +RALLY_INCL_HOME 1 +RALLY_LIMIT_KM 0.3 +RALLY_TOTAL 0 +RC7_OPTION 9 +RC8_OPTION 0 +RC9_OPTION 4 +RELAY_PIN 50 +RELAY_PIN2 53 +RELAY_PIN3 52 +RELAY_PIN4 54 +RELAY_PIN5 -1 +RELAY_PIN6 -1 +RNGFND_GAIN 0.8 +RNGFND1_ADDR 11 +RNGFND1_FUNCTION 0 +RNGFND1_GNDCLEAR 10 +RNGFND1_MAX_CM 500 +RNGFND1_MIN_CM 20 +RNGFND1_OFFSET 0 +RNGFND1_ORIENT 25 +RNGFND1_PIN -1 +RNGFND1_POS_X 0 +RNGFND1_POS_Y 0 +RNGFND1_POS_Z 0 +RNGFND1_PWRRNG 0 +RNGFND1_RMETRIC 1 +RNGFND1_SCALING 3 +RNGFND1_STOP_PIN -1 +RNGFND1_TYPE 24 +RNGFND2_ADDR 1 +RNGFND2_FUNCTION 0 +RNGFND2_GNDCLEAR 10 +RNGFND2_MAX_CM 3500 +RNGFND2_MIN_CM 50 +RNGFND2_OFFSET 0 +RNGFND2_ORIENT 0 +RNGFND2_PIN -1 +RNGFND2_POS_X 0 +RNGFND2_POS_Y 0 +RNGFND2_POS_Z 0 +RNGFND2_PWRRNG 0 +RNGFND2_RMETRIC 1 +RNGFND2_SCALING 3 +RNGFND2_STOP_PIN -1 +RNGFND2_TYPE 24 +RTL_ALT_FINAL 1500 +RTL_CLIMB_MIN 0 +RTL_CONE_SLOPE 3 +RTL_LOIT_TIME 5000 +RTL_SPEED 0 +SCHED_DEBUG 0 +SCHED_LOOP_RATE 400 +SCR_ENABLE 0 +SERIAL_PASS1 0 +SERIAL_PASS2 -1 +SERIAL_PASSTIMO 15 +SERIAL0_BAUD 115 +SERIAL0_PROTOCOL 2 +SERIAL1_BAUD 57 +SERIAL1_OPTIONS 0 +SERIAL1_PROTOCOL 1 +SERIAL2_BAUD 115 +SERIAL2_OPTIONS 0 +SERIAL2_PROTOCOL 24 +SERIAL3_BAUD 38 +SERIAL3_OPTIONS 0 +SERIAL3_PROTOCOL 5 +SERIAL4_BAUD 115 +SERIAL4_OPTIONS 0 +SERIAL4_PROTOCOL 5 +SERIAL5_BAUD 57 +SERIAL5_OPTIONS 0 +SERIAL5_PROTOCOL -1 +SERIAL6_BAUD 57 +SERIAL6_OPTIONS 0 +SERIAL6_PROTOCOL -1 +SERIAL7_BAUD 115200 +SERIAL7_OPTIONS 0 +SERIAL7_PROTOCOL 2 +WP_YAW_BEHAVIOR 1 +WPNAV_ACCEL 100 +WPNAV_ACCEL_Z 100 +WPNAV_FAST_WP 0 +WPNAV_RADIUS 200 +WPNAV_RFND_USE 1 +WPNAV_SPEED 800 +WPNAV_SPEED_DN 150 +WPNAV_SPEED_UP 350 +ZR_RTL_DELAY 15 +ZR_TK_DELAY 5 +ZR_TK_REQ_ALT 600 \ No newline at end of file diff --git a/libraries/AP_HAL_ChibiOS/hwdef/zr-v4/hwdef-bl.dat b/libraries/AP_HAL_ChibiOS/hwdef/zr-v4/hwdef-bl.dat new file mode 100644 index 0000000000..8f84484e43 --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/zr-v4/hwdef-bl.dat @@ -0,0 +1,4 @@ +# hw definition file for processing by chibios_hwdef.py +# for Pixhawk4 bootloader + +include ../fmuv5/hwdef-bl.dat diff --git a/libraries/AP_HAL_ChibiOS/hwdef/zr-v4/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/zr-v4/hwdef.dat new file mode 100644 index 0000000000..910bcac2fe --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/zr-v4/hwdef.dat @@ -0,0 +1,11 @@ +# hw definition file for processing by chibios_hwdef.py +# for Holybro Pixhawk4 hardware. + +include ../fmuv5/hwdef.dat + +# setup for supplied power brick +undef HAL_BATT_VOLT_SCALE +define HAL_BATT_VOLT_SCALE 18.182 +undef HAL_BATT_CURR_SCALE +define HAL_BATT_CURR_SCALE 36.364 + diff --git a/libraries/AP_HAL_ChibiOS/hwdef/zr-v4/pixhawk4-pinout.jpg b/libraries/AP_HAL_ChibiOS/hwdef/zr-v4/pixhawk4-pinout.jpg new file mode 100644 index 0000000000..bebe219ed2 Binary files /dev/null and b/libraries/AP_HAL_ChibiOS/hwdef/zr-v4/pixhawk4-pinout.jpg differ diff --git a/zr-v4.sh b/zr-v4.sh new file mode 100755 index 0000000000..e9d162cedc --- /dev/null +++ b/zr-v4.sh @@ -0,0 +1,3 @@ +./waf configure --board pixhawk4 +./waf rover +cp ./build/pixhawk4/bin/arducopter.apj /mnt/f/_01-work/100\=data/固件/zr-v4/wsl/zr-rover4.1.1.px4