[chibios] Fix i2c error handling (#2898)

* [chibios] Fix i2c hanging full autopilot for 50ms and better error handling
* [airspeed] Fix ms45xx faulty readings
* [board] Fix cube orange test build
* [actuators] Remove actuators_ppm which is not implemented
* [ppm] Fix warnings for lisa mx and lisa m
* [tests] Fix test build and std.h include for TRUE/FALSE
* [chibios] Update to latest paparazzi version
This commit is contained in:
Freek van Tienen
2022-10-07 15:27:43 +02:00
committed by GitHub
parent 10b8b96d7d
commit 46055fc8f8
29 changed files with 201 additions and 239 deletions
+2 -2
View File
@@ -24,8 +24,8 @@
</module> </module>
<module name="airspeed" type="ms45xx_i2c"> <module name="airspeed" type="ms45xx_i2c">
<define name="USE_I2C4"/> <define name="USE_I2C2"/>
<define name="MS45XX_I2C_DEV" value="i2c4"/> <define name="MS45XX_I2C_DEV" value="i2c2"/>
</module> </module>
<module name="scheduling_indi_simple"/> <module name="scheduling_indi_simple"/>
@@ -15,7 +15,9 @@
<define name="AGR_CLIMB" /> <define name="AGR_CLIMB" />
<define name="LOITER_TRIM" /> <define name="LOITER_TRIM" />
<module name="radio_control" type="ppm"/> <module name="radio_control" type="ppm">
<define name="USE_PWM6" value="FALSE"/> <!-- Disable PWM6 to enable PPM on PWM6 -->
</module>
<!-- Communication --> <!-- Communication -->
<module name="telemetry" type="transparent"/> <module name="telemetry" type="transparent"/>
-26
View File
@@ -1,26 +0,0 @@
<!DOCTYPE module SYSTEM "module.dtd">
<module name="actuators_ppm" dir="actuators" task="actuators">
<doc>
<description>
Actuators Driver using PPM output
This is used in the case where you want to directly drive a receiver which has a microcontroller
to do the decoding and driving of the servos (not a 4015 or 4017 decoder chip).
The PPM is output on the SERV_CLK pin. The PPM frame rate, pulse width, and number of channels
Can be adjusted in the "servos_ppm_hw.h" file to suit your particular receiver.
</description>
</doc>
<dep>
<depends>actuators</depends>
<provides>actuators</provides>
</dep>
<header>
<file name="actuators_ppm.h"/>
</header>
<makefile target="!sim">
<define name="SERVOS_PPM_MAT"/>
<file_arch name="actuators_ppm_hw.c"/>
</makefile>
</module>
+1
View File
@@ -22,6 +22,7 @@
<init fun="ppm_init()"/> <init fun="ppm_init()"/>
<event fun="ppm_event()"/> <event fun="ppm_event()"/>
<makefile target="ap|fbw|sim|nps|hitl"> <makefile target="ap|fbw|sim|nps|hitl">
<define name="USE_PPM" value="TRUE"/>
<define name="PPM_CONFIG" value="$(PPM_CONFIG)" cond="ifdef PPM_CONFIG"/> <define name="PPM_CONFIG" value="$(PPM_CONFIG)" cond="ifdef PPM_CONFIG"/>
<define name="RADIO_CONTROL_TYPE_PPM"/> <define name="RADIO_CONTROL_TYPE_PPM"/>
<file name="ppm.c"/> <file name="ppm.c"/>
+58 -5
View File
@@ -63,6 +63,8 @@ struct i2c_init {
semaphore_t sem; semaphore_t sem;
I2CConfig cfg; I2CConfig cfg;
struct i2c_errors errors; struct i2c_errors errors;
ioline_t line_sda;
ioline_t line_scl;
}; };
@@ -71,6 +73,44 @@ static void handle_i2c_thd(struct i2c_periph *p);
// Timeout for I2C transaction // Timeout for I2C transaction
static const systime_t tmo = TIME_US2I(10000000 / PERIODIC_FREQUENCY); static const systime_t tmo = TIME_US2I(10000000 / PERIODIC_FREQUENCY);
static iomode_t palReadLineMode(ioline_t line)
{
ioportid_t port = PAL_PORT(line);
uint8_t pad = PAL_PAD(line);
iomode_t ret = 0;
ret |= (port->MODER >> (pad*2)) & 0x3;
ret |= ((port->OTYPER >> pad)&1) << 2;
ret |= ((port->OSPEEDR >> (pad*2))&3) << 3;
ret |= ((port->PUPDR >> (pad*2))&3) << 5;
if (pad < 8) {
ret |= ((port->AFRL >> (pad*4))&0xF) << 7;
} else {
ret |= ((port->AFRH >> ((pad-8)*4))&0xF) << 7;
}
return ret;
}
/* Clear a stuck bus */
static void i2c_clear_bus(struct i2c_init *i)
{
const iomode_t mode_saved = palReadLineMode(i->line_scl);
palSetLineMode(i->line_scl, PAL_MODE_OUTPUT_PUSHPULL);
for(uint8_t j = 0; j < 20; j++) {
palToggleLine(i->line_scl);
chThdSleepMicroseconds(10);
}
palSetLineMode(i->line_scl, mode_saved);
}
static uint8_t i2c_read_sda(struct i2c_init *i)
{
const iomode_t mode_saved = palReadLineMode(i->line_sda);
palSetLineMode(i->line_sda, PAL_MODE_INPUT);
uint8_t ret = palReadLine(i->line_sda);
palSetLineMode(i->line_sda, mode_saved);
return ret;
}
/** /**
* main thread function * main thread function
* *
@@ -152,8 +192,13 @@ static void handle_i2c_thd(struct i2c_periph *p)
break; break;
case MSG_TIMEOUT: case MSG_TIMEOUT:
//if a timeout occurred before operation end //if a timeout occurred before operation end
// mark as failed and restart // mark as failed
t->status = I2CTransFailed; t->status = I2CTransFailed;
p->errors->unexpected_event_cnt++;
// Clear the bus if kept busy
if(i2c_read_sda(i) == 0) {
i2c_clear_bus(i);
}
i2cStart((I2CDriver *)p->reg_addr, &i->cfg); i2cStart((I2CDriver *)p->reg_addr, &i->cfg);
break; break;
case MSG_RESET: case MSG_RESET:
@@ -211,7 +256,9 @@ PRINT_CONFIG_VAR(I2C1_CLOCK_SPEED)
static IN_DMA_SECTION(struct i2c_init i2c1_init_s) = { static IN_DMA_SECTION(struct i2c_init i2c1_init_s) = {
.name = "i2c1", .name = "i2c1",
.sem = __SEMAPHORE_DATA(i2c1_init_s.sem, 0), .sem = __SEMAPHORE_DATA(i2c1_init_s.sem, 0),
.cfg = I2C1_CFG_DEF .cfg = I2C1_CFG_DEF,
.line_sda = LINE_I2C1_SDA,
.line_scl = LINE_I2C1_SCL
}; };
static THD_WORKING_AREA(wa_thd_i2c1, I2C_THREAD_STACK_SIZE); static THD_WORKING_AREA(wa_thd_i2c1, I2C_THREAD_STACK_SIZE);
@@ -240,7 +287,9 @@ PRINT_CONFIG_VAR(I2C2_CLOCK_SPEED)
static IN_DMA_SECTION(struct i2c_init i2c2_init_s) = { static IN_DMA_SECTION(struct i2c_init i2c2_init_s) = {
.name = "i2c2", .name = "i2c2",
.sem = __SEMAPHORE_DATA(i2c2_init_s.sem, 0), .sem = __SEMAPHORE_DATA(i2c2_init_s.sem, 0),
.cfg = I2C2_CFG_DEF .cfg = I2C2_CFG_DEF,
.line_sda = LINE_I2C2_SDA,
.line_scl = LINE_I2C2_SCL
}; };
static THD_WORKING_AREA(wa_thd_i2c2, I2C_THREAD_STACK_SIZE); static THD_WORKING_AREA(wa_thd_i2c2, I2C_THREAD_STACK_SIZE);
@@ -269,7 +318,9 @@ PRINT_CONFIG_VAR(I2C3_CLOCK_SPEED)
static IN_DMA_SECTION(struct i2c_init i2c3_init_s) = { static IN_DMA_SECTION(struct i2c_init i2c3_init_s) = {
.name = "i2c3", .name = "i2c3",
.sem = __SEMAPHORE_DATA(i2c3_init_s.sem, 0), .sem = __SEMAPHORE_DATA(i2c3_init_s.sem, 0),
.cfg = I2C3_CFG_DEF .cfg = I2C3_CFG_DEF,
.line_sda = LINE_I2C3_SDA,
.line_scl = LINE_I2C3_SCL
}; };
static THD_WORKING_AREA(wa_thd_i2c3, I2C_THREAD_STACK_SIZE); static THD_WORKING_AREA(wa_thd_i2c3, I2C_THREAD_STACK_SIZE);
@@ -298,7 +349,9 @@ PRINT_CONFIG_VAR(I2C4_CLOCK_SPEED)
static IN_DMA_SECTION(struct i2c_init i2c4_init_s) = { static IN_DMA_SECTION(struct i2c_init i2c4_init_s) = {
.name = "i2c4", .name = "i2c4",
.sem = __SEMAPHORE_DATA(i2c4_init_s.sem, 0), .sem = __SEMAPHORE_DATA(i2c4_init_s.sem, 0),
.cfg = I2C4_CFG_DEF .cfg = I2C4_CFG_DEF,
.line_sda = LINE_I2C4_SDA,
.line_scl = LINE_I2C4_SCL
}; };
static THD_WORKING_AREA(wa_thd_i2c4, I2C_THREAD_STACK_SIZE); static THD_WORKING_AREA(wa_thd_i2c4, I2C_THREAD_STACK_SIZE);
@@ -1,34 +0,0 @@
/*
* Copyright (C) 2012 Gautier Hattenberger
*
* This file is part of paparazzi.
*
* paparazzi is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* paparazzi is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with paparazzi; see the file COPYING. If not, write to
* the Free Software Foundation, 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*
*/
#ifndef SERVOS_PPM_HW_H
#define SERVOS_PPM_HW_H
#define SERVOS_TICS_OF_USEC(_v) (_v)
#define ActuatorPpmSet(_i, _v) {}
#define ActuatorsPpmInit() {}
#define ActuatorsPpmCommit() {}
#endif
@@ -201,7 +201,8 @@
#else #else
#define STM32_I2C_USE_I2C3 FALSE #define STM32_I2C_USE_I2C3 FALSE
#endif #endif
#define STM32_I2C_BUSY_TIMEOUT 50 #define STM32_I2C_ISR_LIMIT 6
#define STM32_I2C_BUSY_TIMEOUT 0
#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0) #define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0)
#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6) #define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6)
#define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2) #define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2)
@@ -240,7 +240,8 @@
#endif #endif
#define STM32_I2C_USE_I2C3 FALSE #define STM32_I2C_USE_I2C3 FALSE
#define STM32_I2C_USE_I2C4 FALSE #define STM32_I2C_USE_I2C4 FALSE
#define STM32_I2C_BUSY_TIMEOUT 50 #define STM32_I2C_ISR_LIMIT 6
#define STM32_I2C_BUSY_TIMEOUT 0
#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0) #define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0)
#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6) #define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6)
#define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2) #define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2)
@@ -189,7 +189,8 @@
#else #else
#define STM32_I2C_USE_I2C3 FALSE #define STM32_I2C_USE_I2C3 FALSE
#endif #endif
#define STM32_I2C_BUSY_TIMEOUT 50 #define STM32_I2C_ISR_LIMIT 6
#define STM32_I2C_BUSY_TIMEOUT 0
#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0) #define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0)
#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6) #define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6)
#define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2) #define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2)
+2 -1
View File
@@ -311,7 +311,8 @@
#else #else
#define STM32_I2C_USE_I2C4 FALSE #define STM32_I2C_USE_I2C4 FALSE
#endif #endif
#define STM32_I2C_BUSY_TIMEOUT 50 #define STM32_I2C_ISR_LIMIT 6
#define STM32_I2C_BUSY_TIMEOUT 0
#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY #define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY
#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY #define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY
#define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY #define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY
@@ -218,7 +218,8 @@
#define STM32_I2C_USE_I2C2 FALSE #define STM32_I2C_USE_I2C2 FALSE
#define STM32_I2C_USE_I2C3 FALSE #define STM32_I2C_USE_I2C3 FALSE
#define STM32_I2C_USE_I2C4 FALSE #define STM32_I2C_USE_I2C4 FALSE
#define STM32_I2C_BUSY_TIMEOUT 50 #define STM32_I2C_ISR_LIMIT 6
#define STM32_I2C_BUSY_TIMEOUT 0
#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0) #define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0)
#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6) #define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6)
#define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 3) #define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 3)
@@ -121,7 +121,8 @@
#else #else
#define STM32_I2C_USE_I2C2 FALSE #define STM32_I2C_USE_I2C2 FALSE
#endif #endif
#define STM32_I2C_BUSY_TIMEOUT 50 #define STM32_I2C_ISR_LIMIT 6
#define STM32_I2C_BUSY_TIMEOUT 0
#define STM32_I2C_I2C1_IRQ_PRIORITY 5 #define STM32_I2C_I2C1_IRQ_PRIORITY 5
#define STM32_I2C_I2C2_IRQ_PRIORITY 5 #define STM32_I2C_I2C2_IRQ_PRIORITY 5
#define STM32_I2C_I2C1_DMA_PRIORITY 3 #define STM32_I2C_I2C1_DMA_PRIORITY 3
+5 -2
View File
@@ -1,6 +1,8 @@
#ifndef CONFIG_LISA_M_COMMON_H #ifndef CONFIG_LISA_M_COMMON_H
#define CONFIG_LISA_M_COMMON_H #define CONFIG_LISA_M_COMMON_H
#include "std.h"
/* SPI slave mapping */ /* SPI slave mapping */
#define SPI_SELECT_SLAVE0_PORT GPIOA #define SPI_SELECT_SLAVE0_PORT GPIOA
@@ -105,7 +107,7 @@
* *
* Default is PPM config 2, input on GPIO01 (Servo pin 6) * Default is PPM config 2, input on GPIO01 (Servo pin 6)
*/ */
#if USE_PPM
#ifndef PPM_CONFIG #ifndef PPM_CONFIG
#define PPM_CONFIG 2 #define PPM_CONFIG 2
#endif #endif
@@ -147,6 +149,7 @@
#error "Unknown PPM config" #error "Unknown PPM config"
#endif // PPM_CONFIG #endif // PPM_CONFIG
#endif // USE_PPM
/* /*
* ADC * ADC
@@ -255,7 +258,7 @@
#endif #endif
#endif #endif
#if PPM_CONFIG == 2 && USE_PWM6 == 1 #if (USE_PPM && PPM_CONFIG == 2) && USE_PWM6 == 1
#warning "You cannot USE_PWM6 and SERVO6 (or equivalent) at the same time" #warning "You cannot USE_PWM6 and SERVO6 (or equivalent) at the same time"
#endif #endif
@@ -209,7 +209,8 @@
#else #else
#define STM32_I2C_USE_I2C3 FALSE #define STM32_I2C_USE_I2C3 FALSE
#endif #endif
#define STM32_I2C_BUSY_TIMEOUT 50 #define STM32_I2C_ISR_LIMIT 6
#define STM32_I2C_BUSY_TIMEOUT 0
#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0) #define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0)
#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6) #define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6)
#define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2) #define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2)
+5 -2
View File
@@ -23,6 +23,8 @@
#ifndef CONFIG_LISA_MX_COMMON_H #ifndef CONFIG_LISA_MX_COMMON_H
#define CONFIG_LISA_MX_COMMON_H #define CONFIG_LISA_MX_COMMON_H
#include "std.h"
#define BOARD_LISA_MX #define BOARD_LISA_MX
/* Lisa/M has a 12MHz external clock and 168MHz internal. */ /* Lisa/M has a 12MHz external clock and 168MHz internal. */
@@ -218,7 +220,7 @@
* *
* Default is PPM config 2, input on GPIOA1 (Servo pin 6) * Default is PPM config 2, input on GPIOA1 (Servo pin 6)
*/ */
#if USE_PPM
#ifndef PPM_CONFIG #ifndef PPM_CONFIG
#define PPM_CONFIG 2 #define PPM_CONFIG 2
#endif #endif
@@ -260,6 +262,7 @@
#error "Unknown PPM config" #error "Unknown PPM config"
#endif // PPM_CONFIG #endif // PPM_CONFIG
#endif // USE_PPM
/* SPI */ /* SPI */
#define SPI1_GPIO_AF GPIO_AF5 #define SPI1_GPIO_AF GPIO_AF5
@@ -424,7 +427,7 @@
#define USE_PWM6 1 #define USE_PWM6 1
#endif #endif
#if PPM_CONFIG == 2 && USE_PWM6 == 1 #if (USE_PPM && PPM_CONFIG == 2) && USE_PWM6 == 1
#warning "You cannot USE_PWM6 and SERVO6 (or equivalent) at the same time" #warning "You cannot USE_PWM6 and SERVO6 (or equivalent) at the same time"
#endif #endif
@@ -228,7 +228,8 @@
#endif #endif
#define STM32_I2C_USE_I2C3 FALSE #define STM32_I2C_USE_I2C3 FALSE
#define STM32_I2C_USE_I2C4 FALSE #define STM32_I2C_USE_I2C4 FALSE
#define STM32_I2C_BUSY_TIMEOUT 50 #define STM32_I2C_ISR_LIMIT 6
#define STM32_I2C_BUSY_TIMEOUT 0
#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0) #define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0)
#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6) #define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6)
#define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 3) #define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 3)
@@ -228,7 +228,8 @@
#else #else
#define STM32_I2C_USE_I2C4 FALSE #define STM32_I2C_USE_I2C4 FALSE
#endif #endif
#define STM32_I2C_BUSY_TIMEOUT 50 #define STM32_I2C_ISR_LIMIT 6
#define STM32_I2C_BUSY_TIMEOUT 0
#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0) #define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0)
#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 7) #define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 7)
#define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2) #define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2)
@@ -201,7 +201,8 @@
#else #else
#define STM32_I2C_USE_I2C3 FALSE #define STM32_I2C_USE_I2C3 FALSE
#endif #endif
#define STM32_I2C_BUSY_TIMEOUT 50 #define STM32_I2C_ISR_LIMIT 6
#define STM32_I2C_BUSY_TIMEOUT 0
#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0) #define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0)
#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6) #define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6)
#define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2) #define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2)
@@ -203,7 +203,8 @@
#else #else
#define STM32_I2C_USE_I2C3 FALSE #define STM32_I2C_USE_I2C3 FALSE
#endif #endif
#define STM32_I2C_BUSY_TIMEOUT 50 #define STM32_I2C_ISR_LIMIT 6
#define STM32_I2C_BUSY_TIMEOUT 0
#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0) #define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0)
#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6) #define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6)
#define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2) #define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2)
@@ -236,7 +236,8 @@
#else #else
#define STM32_I2C_USE_I2C4 FALSE #define STM32_I2C_USE_I2C4 FALSE
#endif #endif
#define STM32_I2C_BUSY_TIMEOUT 50 #define STM32_I2C_ISR_LIMIT 6
#define STM32_I2C_BUSY_TIMEOUT 0
#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0) #define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0)
#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 7) #define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 7)
#define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2) #define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2)
@@ -228,7 +228,8 @@
#else #else
#define STM32_I2C_USE_I2C4 FALSE #define STM32_I2C_USE_I2C4 FALSE
#endif #endif
#define STM32_I2C_BUSY_TIMEOUT 50 #define STM32_I2C_ISR_LIMIT 6
#define STM32_I2C_BUSY_TIMEOUT 0
#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0) #define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0)
#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 7) #define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 7)
#define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2) #define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2)
+40 -40
View File
@@ -76,8 +76,8 @@
#define SRVB2 7U #define SRVB2 7U
#define SRVB3 8U #define SRVB3 8U
#define SRVB4 9U #define SRVB4 9U
#define I2C2_SCL_EXTERNAL 10U #define I2C2_SCL 10U
#define I2C2_SDA_EXTERNAL 11U #define I2C2_SDA 11U
#define SPI2_EXTERNAL_CS 12U #define SPI2_EXTERNAL_CS 12U
#define PB13 13U #define PB13 13U
#define SPI2_EXTERNAL_MISO 14U #define SPI2_EXTERNAL_MISO 14U
@@ -112,8 +112,8 @@
#define UART3_RX 9U #define UART3_RX 9U
#define LED4 10U #define LED4 10U
#define PD11 11U #define PD11 11U
#define I2C4_SCL_EXTERNAL 12U #define I2C4_SCL 12U
#define I2C4_SDA_EXTERNAL 13U #define I2C4_SDA 13U
#define PD14 14U #define PD14 14U
#define LED1 15U #define LED1 15U
@@ -261,8 +261,8 @@
#define LINE_SRVB2 PAL_LINE(GPIOB, 7U) #define LINE_SRVB2 PAL_LINE(GPIOB, 7U)
#define LINE_SRVB3 PAL_LINE(GPIOB, 8U) #define LINE_SRVB3 PAL_LINE(GPIOB, 8U)
#define LINE_SRVB4 PAL_LINE(GPIOB, 9U) #define LINE_SRVB4 PAL_LINE(GPIOB, 9U)
#define LINE_I2C2_SCL_EXTERNAL PAL_LINE(GPIOB, 10U) #define LINE_I2C2_SCL PAL_LINE(GPIOB, 10U)
#define LINE_I2C2_SDA_EXTERNAL PAL_LINE(GPIOB, 11U) #define LINE_I2C2_SDA PAL_LINE(GPIOB, 11U)
#define LINE_SPI2_EXTERNAL_CS PAL_LINE(GPIOB, 12U) #define LINE_SPI2_EXTERNAL_CS PAL_LINE(GPIOB, 12U)
#define LINE_SPI2_EXTERNAL_MISO PAL_LINE(GPIOB, 14U) #define LINE_SPI2_EXTERNAL_MISO PAL_LINE(GPIOB, 14U)
#define LINE_SPI2_EXTERNAL_MOSI PAL_LINE(GPIOB, 15U) #define LINE_SPI2_EXTERNAL_MOSI PAL_LINE(GPIOB, 15U)
@@ -288,8 +288,8 @@
#define LINE_UART3_TX PAL_LINE(GPIOD, 8U) #define LINE_UART3_TX PAL_LINE(GPIOD, 8U)
#define LINE_UART3_RX PAL_LINE(GPIOD, 9U) #define LINE_UART3_RX PAL_LINE(GPIOD, 9U)
#define LINE_LED4 PAL_LINE(GPIOD, 10U) #define LINE_LED4 PAL_LINE(GPIOD, 10U)
#define LINE_I2C4_SCL_EXTERNAL PAL_LINE(GPIOD, 12U) #define LINE_I2C4_SCL PAL_LINE(GPIOD, 12U)
#define LINE_I2C4_SDA_EXTERNAL PAL_LINE(GPIOD, 13U) #define LINE_I2C4_SDA PAL_LINE(GPIOD, 13U)
#define LINE_LED1 PAL_LINE(GPIOD, 15U) #define LINE_LED1 PAL_LINE(GPIOD, 15U)
#define LINE_RC1 PAL_LINE(GPIOE, 0U) #define LINE_RC1 PAL_LINE(GPIOE, 0U)
@@ -441,8 +441,8 @@
PIN_MODE_ALTERNATE(SRVB2) | \ PIN_MODE_ALTERNATE(SRVB2) | \
PIN_MODE_ALTERNATE(SRVB3) | \ PIN_MODE_ALTERNATE(SRVB3) | \
PIN_MODE_ALTERNATE(SRVB4) | \ PIN_MODE_ALTERNATE(SRVB4) | \
PIN_MODE_ALTERNATE(I2C2_SCL_EXTERNAL) | \ PIN_MODE_ALTERNATE(I2C2_SCL) | \
PIN_MODE_ALTERNATE(I2C2_SDA_EXTERNAL) | \ PIN_MODE_ALTERNATE(I2C2_SDA) | \
PIN_MODE_OUTPUT(SPI2_EXTERNAL_CS) | \ PIN_MODE_OUTPUT(SPI2_EXTERNAL_CS) | \
PIN_MODE_INPUT(PB13) | \ PIN_MODE_INPUT(PB13) | \
PIN_MODE_ALTERNATE(SPI2_EXTERNAL_MISO) | \ PIN_MODE_ALTERNATE(SPI2_EXTERNAL_MISO) | \
@@ -458,8 +458,8 @@
PIN_OTYPE_PUSHPULL(SRVB2) | \ PIN_OTYPE_PUSHPULL(SRVB2) | \
PIN_OTYPE_PUSHPULL(SRVB3) | \ PIN_OTYPE_PUSHPULL(SRVB3) | \
PIN_OTYPE_PUSHPULL(SRVB4) | \ PIN_OTYPE_PUSHPULL(SRVB4) | \
PIN_OTYPE_OPENDRAIN(I2C2_SCL_EXTERNAL) | \ PIN_OTYPE_OPENDRAIN(I2C2_SCL) | \
PIN_OTYPE_OPENDRAIN(I2C2_SDA_EXTERNAL) | \ PIN_OTYPE_OPENDRAIN(I2C2_SDA) | \
PIN_OTYPE_PUSHPULL(SPI2_EXTERNAL_CS) | \ PIN_OTYPE_PUSHPULL(SPI2_EXTERNAL_CS) | \
PIN_OTYPE_PUSHPULL(PB13) | \ PIN_OTYPE_PUSHPULL(PB13) | \
PIN_OTYPE_PUSHPULL(SPI2_EXTERNAL_MISO) | \ PIN_OTYPE_PUSHPULL(SPI2_EXTERNAL_MISO) | \
@@ -475,8 +475,8 @@
PIN_OSPEED_SPEED_HIGH(SRVB2) | \ PIN_OSPEED_SPEED_HIGH(SRVB2) | \
PIN_OSPEED_SPEED_HIGH(SRVB3) | \ PIN_OSPEED_SPEED_HIGH(SRVB3) | \
PIN_OSPEED_SPEED_HIGH(SRVB4) | \ PIN_OSPEED_SPEED_HIGH(SRVB4) | \
PIN_OSPEED_SPEED_HIGH(I2C2_SCL_EXTERNAL) | \ PIN_OSPEED_SPEED_HIGH(I2C2_SCL) | \
PIN_OSPEED_SPEED_HIGH(I2C2_SDA_EXTERNAL) | \ PIN_OSPEED_SPEED_HIGH(I2C2_SDA) | \
PIN_OSPEED_SPEED_HIGH(SPI2_EXTERNAL_CS) | \ PIN_OSPEED_SPEED_HIGH(SPI2_EXTERNAL_CS) | \
PIN_OSPEED_SPEED_VERYLOW(PB13) | \ PIN_OSPEED_SPEED_VERYLOW(PB13) | \
PIN_OSPEED_SPEED_HIGH(SPI2_EXTERNAL_MISO) | \ PIN_OSPEED_SPEED_HIGH(SPI2_EXTERNAL_MISO) | \
@@ -492,8 +492,8 @@
PIN_PUPDR_FLOATING(SRVB2) | \ PIN_PUPDR_FLOATING(SRVB2) | \
PIN_PUPDR_FLOATING(SRVB3) | \ PIN_PUPDR_FLOATING(SRVB3) | \
PIN_PUPDR_FLOATING(SRVB4) | \ PIN_PUPDR_FLOATING(SRVB4) | \
PIN_PUPDR_PULLUP(I2C2_SCL_EXTERNAL) | \ PIN_PUPDR_PULLUP(I2C2_SCL) | \
PIN_PUPDR_PULLUP(I2C2_SDA_EXTERNAL) | \ PIN_PUPDR_PULLUP(I2C2_SDA) | \
PIN_PUPDR_FLOATING(SPI2_EXTERNAL_CS) | \ PIN_PUPDR_FLOATING(SPI2_EXTERNAL_CS) | \
PIN_PUPDR_PULLDOWN(PB13) | \ PIN_PUPDR_PULLDOWN(PB13) | \
PIN_PUPDR_FLOATING(SPI2_EXTERNAL_MISO) | \ PIN_PUPDR_FLOATING(SPI2_EXTERNAL_MISO) | \
@@ -509,8 +509,8 @@
PIN_ODR_LEVEL_LOW(SRVB2) | \ PIN_ODR_LEVEL_LOW(SRVB2) | \
PIN_ODR_LEVEL_LOW(SRVB3) | \ PIN_ODR_LEVEL_LOW(SRVB3) | \
PIN_ODR_LEVEL_LOW(SRVB4) | \ PIN_ODR_LEVEL_LOW(SRVB4) | \
PIN_ODR_LEVEL_HIGH(I2C2_SCL_EXTERNAL) | \ PIN_ODR_LEVEL_HIGH(I2C2_SCL) | \
PIN_ODR_LEVEL_HIGH(I2C2_SDA_EXTERNAL) | \ PIN_ODR_LEVEL_HIGH(I2C2_SDA) | \
PIN_ODR_LEVEL_HIGH(SPI2_EXTERNAL_CS) | \ PIN_ODR_LEVEL_HIGH(SPI2_EXTERNAL_CS) | \
PIN_ODR_LEVEL_LOW(PB13) | \ PIN_ODR_LEVEL_LOW(PB13) | \
PIN_ODR_LEVEL_HIGH(SPI2_EXTERNAL_MISO) | \ PIN_ODR_LEVEL_HIGH(SPI2_EXTERNAL_MISO) | \
@@ -527,8 +527,8 @@
#define VAL_GPIOB_AFRH (PIN_AFIO_AF(SRVB3, 2) | \ #define VAL_GPIOB_AFRH (PIN_AFIO_AF(SRVB3, 2) | \
PIN_AFIO_AF(SRVB4, 2) | \ PIN_AFIO_AF(SRVB4, 2) | \
PIN_AFIO_AF(I2C2_SCL_EXTERNAL, 4) | \ PIN_AFIO_AF(I2C2_SCL, 4) | \
PIN_AFIO_AF(I2C2_SDA_EXTERNAL, 4) | \ PIN_AFIO_AF(I2C2_SDA, 4) | \
PIN_AFIO_AF(SPI2_EXTERNAL_CS, 0) | \ PIN_AFIO_AF(SPI2_EXTERNAL_CS, 0) | \
PIN_AFIO_AF(PB13, 0) | \ PIN_AFIO_AF(PB13, 0) | \
PIN_AFIO_AF(SPI2_EXTERNAL_MISO, 5) | \ PIN_AFIO_AF(SPI2_EXTERNAL_MISO, 5) | \
@@ -649,8 +649,8 @@
PIN_MODE_ALTERNATE(UART3_RX) | \ PIN_MODE_ALTERNATE(UART3_RX) | \
PIN_MODE_OUTPUT(LED4) | \ PIN_MODE_OUTPUT(LED4) | \
PIN_MODE_INPUT(PD11) | \ PIN_MODE_INPUT(PD11) | \
PIN_MODE_ALTERNATE(I2C4_SCL_EXTERNAL) | \ PIN_MODE_ALTERNATE(I2C4_SCL) | \
PIN_MODE_ALTERNATE(I2C4_SDA_EXTERNAL) | \ PIN_MODE_ALTERNATE(I2C4_SDA) | \
PIN_MODE_INPUT(PD14) | \ PIN_MODE_INPUT(PD14) | \
PIN_MODE_OUTPUT(LED1)) PIN_MODE_OUTPUT(LED1))
@@ -666,8 +666,8 @@
PIN_OTYPE_PUSHPULL(UART3_RX) | \ PIN_OTYPE_PUSHPULL(UART3_RX) | \
PIN_OTYPE_PUSHPULL(LED4) | \ PIN_OTYPE_PUSHPULL(LED4) | \
PIN_OTYPE_PUSHPULL(PD11) | \ PIN_OTYPE_PUSHPULL(PD11) | \
PIN_OTYPE_OPENDRAIN(I2C4_SCL_EXTERNAL) | \ PIN_OTYPE_OPENDRAIN(I2C4_SCL) | \
PIN_OTYPE_OPENDRAIN(I2C4_SDA_EXTERNAL) | \ PIN_OTYPE_OPENDRAIN(I2C4_SDA) | \
PIN_OTYPE_PUSHPULL(PD14) | \ PIN_OTYPE_PUSHPULL(PD14) | \
PIN_OTYPE_PUSHPULL(LED1)) PIN_OTYPE_PUSHPULL(LED1))
@@ -683,8 +683,8 @@
PIN_OSPEED_SPEED_HIGH(UART3_RX) | \ PIN_OSPEED_SPEED_HIGH(UART3_RX) | \
PIN_OSPEED_SPEED_VERYLOW(LED4) | \ PIN_OSPEED_SPEED_VERYLOW(LED4) | \
PIN_OSPEED_SPEED_VERYLOW(PD11) | \ PIN_OSPEED_SPEED_VERYLOW(PD11) | \
PIN_OSPEED_SPEED_HIGH(I2C4_SCL_EXTERNAL) | \ PIN_OSPEED_SPEED_HIGH(I2C4_SCL) | \
PIN_OSPEED_SPEED_HIGH(I2C4_SDA_EXTERNAL) | \ PIN_OSPEED_SPEED_HIGH(I2C4_SDA) | \
PIN_OSPEED_SPEED_VERYLOW(PD14) | \ PIN_OSPEED_SPEED_VERYLOW(PD14) | \
PIN_OSPEED_SPEED_VERYLOW(LED1)) PIN_OSPEED_SPEED_VERYLOW(LED1))
@@ -700,8 +700,8 @@
PIN_PUPDR_FLOATING(UART3_RX) | \ PIN_PUPDR_FLOATING(UART3_RX) | \
PIN_PUPDR_FLOATING(LED4) | \ PIN_PUPDR_FLOATING(LED4) | \
PIN_PUPDR_PULLDOWN(PD11) | \ PIN_PUPDR_PULLDOWN(PD11) | \
PIN_PUPDR_PULLUP(I2C4_SCL_EXTERNAL) | \ PIN_PUPDR_PULLUP(I2C4_SCL) | \
PIN_PUPDR_PULLUP(I2C4_SDA_EXTERNAL) | \ PIN_PUPDR_PULLUP(I2C4_SDA) | \
PIN_PUPDR_PULLDOWN(PD14) | \ PIN_PUPDR_PULLDOWN(PD14) | \
PIN_PUPDR_FLOATING(LED1)) PIN_PUPDR_FLOATING(LED1))
@@ -717,8 +717,8 @@
PIN_ODR_LEVEL_HIGH(UART3_RX) | \ PIN_ODR_LEVEL_HIGH(UART3_RX) | \
PIN_ODR_LEVEL_LOW(LED4) | \ PIN_ODR_LEVEL_LOW(LED4) | \
PIN_ODR_LEVEL_LOW(PD11) | \ PIN_ODR_LEVEL_LOW(PD11) | \
PIN_ODR_LEVEL_HIGH(I2C4_SCL_EXTERNAL) | \ PIN_ODR_LEVEL_HIGH(I2C4_SCL) | \
PIN_ODR_LEVEL_HIGH(I2C4_SDA_EXTERNAL) | \ PIN_ODR_LEVEL_HIGH(I2C4_SDA) | \
PIN_ODR_LEVEL_LOW(PD14) | \ PIN_ODR_LEVEL_LOW(PD14) | \
PIN_ODR_LEVEL_LOW(LED1)) PIN_ODR_LEVEL_LOW(LED1))
@@ -735,8 +735,8 @@
PIN_AFIO_AF(UART3_RX, 7) | \ PIN_AFIO_AF(UART3_RX, 7) | \
PIN_AFIO_AF(LED4, 0) | \ PIN_AFIO_AF(LED4, 0) | \
PIN_AFIO_AF(PD11, 0) | \ PIN_AFIO_AF(PD11, 0) | \
PIN_AFIO_AF(I2C4_SCL_EXTERNAL, 4) | \ PIN_AFIO_AF(I2C4_SCL, 4) | \
PIN_AFIO_AF(I2C4_SDA_EXTERNAL, 4) | \ PIN_AFIO_AF(I2C4_SDA, 4) | \
PIN_AFIO_AF(PD14, 0) | \ PIN_AFIO_AF(PD14, 0) | \
PIN_AFIO_AF(LED1, 0)) PIN_AFIO_AF(LED1, 0))
@@ -1483,10 +1483,10 @@
#define AF_LINE_SRVB3 2U #define AF_LINE_SRVB3 2U
#define AF_SRVB4 2U #define AF_SRVB4 2U
#define AF_LINE_SRVB4 2U #define AF_LINE_SRVB4 2U
#define AF_I2C2_SCL_EXTERNAL 4U #define AF_I2C2_SCL 4U
#define AF_LINE_I2C2_SCL_EXTERNAL 4U #define AF_LINE_I2C2_SCL 4U
#define AF_I2C2_SDA_EXTERNAL 4U #define AF_I2C2_SDA 4U
#define AF_LINE_I2C2_SDA_EXTERNAL 4U #define AF_LINE_I2C2_SDA 4U
#define AF_SPI2_EXTERNAL_MISO 5U #define AF_SPI2_EXTERNAL_MISO 5U
#define AF_LINE_SPI2_EXTERNAL_MISO 5U #define AF_LINE_SPI2_EXTERNAL_MISO 5U
#define AF_SPI2_EXTERNAL_MOSI 5U #define AF_SPI2_EXTERNAL_MOSI 5U
@@ -1521,10 +1521,10 @@
#define AF_LINE_UART3_TX 7U #define AF_LINE_UART3_TX 7U
#define AF_UART3_RX 7U #define AF_UART3_RX 7U
#define AF_LINE_UART3_RX 7U #define AF_LINE_UART3_RX 7U
#define AF_I2C4_SCL_EXTERNAL 4U #define AF_I2C4_SCL 4U
#define AF_LINE_I2C4_SCL_EXTERNAL 4U #define AF_LINE_I2C4_SCL 4U
#define AF_I2C4_SDA_EXTERNAL 4U #define AF_I2C4_SDA 4U
#define AF_LINE_I2C4_SDA_EXTERNAL 4U #define AF_LINE_I2C4_SDA 4U
#define AF_RC1 8U #define AF_RC1 8U
#define AF_LINE_RC1 8U #define AF_LINE_RC1 8U
#define AF_SPI4_INTERNAL_CLK 5U #define AF_SPI4_INTERNAL_CLK 5U
@@ -95,8 +95,8 @@ PB06 SRVB1 PWM AF:TIM4_CH1 ()
PB07 SRVB2 PWM AF:TIM4_CH2 () PB07 SRVB2 PWM AF:TIM4_CH2 ()
PB08 SRVB3 PWM AF:TIM4_CH3 () PB08 SRVB3 PWM AF:TIM4_CH3 ()
PB09 SRVB4 PWM AF:TIM4_CH4 () PB09 SRVB4 PWM AF:TIM4_CH4 ()
PB10 I2C2_SCL_EXTERNAL I2C AF:I2C2_SCL PB10 I2C2_SCL I2C AF:I2C2_SCL #External
PB11 I2C2_SDA_EXTERNAL I2C AF:I2C2_SDA PB11 I2C2_SDA I2C AF:I2C2_SDA #External
PB12 SPI2_EXTERNAL_CS OUTPUT PUSHPULL SPEED_HIGH FLOATING LEVEL_HIGH PB12 SPI2_EXTERNAL_CS OUTPUT PUSHPULL SPEED_HIGH FLOATING LEVEL_HIGH
PB14 SPI2_EXTERNAL_MISO SPI AF:SPI2_MISO PB14 SPI2_EXTERNAL_MISO SPI AF:SPI2_MISO
PB15 SPI2_EXTERNAL_MOSI SPI AF:SPI2_MOSI PB15 SPI2_EXTERNAL_MOSI SPI AF:SPI2_MOSI
@@ -121,8 +121,8 @@ PD06 UART2_RX UART AF:USART2_RX
PD08 UART3_TX UART AF:USART3_TX PD08 UART3_TX UART AF:USART3_TX
PD09 UART3_RX UART AF:USART3_RX PD09 UART3_RX UART AF:USART3_RX
PD10 LED4 LED PD10 LED4 LED
PD12 I2C4_SCL_EXTERNAL I2C AF:I2C4_SCL PD12 I2C4_SCL I2C AF:I2C4_SCL #External
PD13 I2C4_SDA_EXTERNAL I2C AF:I2C4_SDA PD13 I2C4_SDA I2C AF:I2C4_SDA #External
PD15 LED1 LED PD15 LED1 LED
PE00 RC1 UART AF:UART8_RX () PE00 RC1 UART AF:UART8_RX ()
+40 -40
View File
@@ -76,8 +76,8 @@
#define SRVB2 7U #define SRVB2 7U
#define SRVB3 8U #define SRVB3 8U
#define SRVB4 9U #define SRVB4 9U
#define I2C2_SCL_EXTERNAL 10U #define I2C2_SCL 10U
#define I2C2_SDA_EXTERNAL 11U #define I2C2_SDA 11U
#define SPI2_EXTERNAL_CS 12U #define SPI2_EXTERNAL_CS 12U
#define PB13 13U #define PB13 13U
#define SPI2_EXTERNAL_MISO 14U #define SPI2_EXTERNAL_MISO 14U
@@ -112,8 +112,8 @@
#define UART3_RX 9U #define UART3_RX 9U
#define LED4 10U #define LED4 10U
#define PD11 11U #define PD11 11U
#define I2C4_SCL_EXTERNAL 12U #define I2C4_SCL 12U
#define I2C4_SDA_EXTERNAL 13U #define I2C4_SDA 13U
#define PD14 14U #define PD14 14U
#define LED1 15U #define LED1 15U
@@ -261,8 +261,8 @@
#define LINE_SRVB2 PAL_LINE(GPIOB, 7U) #define LINE_SRVB2 PAL_LINE(GPIOB, 7U)
#define LINE_SRVB3 PAL_LINE(GPIOB, 8U) #define LINE_SRVB3 PAL_LINE(GPIOB, 8U)
#define LINE_SRVB4 PAL_LINE(GPIOB, 9U) #define LINE_SRVB4 PAL_LINE(GPIOB, 9U)
#define LINE_I2C2_SCL_EXTERNAL PAL_LINE(GPIOB, 10U) #define LINE_I2C2_SCL PAL_LINE(GPIOB, 10U)
#define LINE_I2C2_SDA_EXTERNAL PAL_LINE(GPIOB, 11U) #define LINE_I2C2_SDA PAL_LINE(GPIOB, 11U)
#define LINE_SPI2_EXTERNAL_CS PAL_LINE(GPIOB, 12U) #define LINE_SPI2_EXTERNAL_CS PAL_LINE(GPIOB, 12U)
#define LINE_SPI2_EXTERNAL_MISO PAL_LINE(GPIOB, 14U) #define LINE_SPI2_EXTERNAL_MISO PAL_LINE(GPIOB, 14U)
#define LINE_SPI2_EXTERNAL_MOSI PAL_LINE(GPIOB, 15U) #define LINE_SPI2_EXTERNAL_MOSI PAL_LINE(GPIOB, 15U)
@@ -288,8 +288,8 @@
#define LINE_UART3_TX PAL_LINE(GPIOD, 8U) #define LINE_UART3_TX PAL_LINE(GPIOD, 8U)
#define LINE_UART3_RX PAL_LINE(GPIOD, 9U) #define LINE_UART3_RX PAL_LINE(GPIOD, 9U)
#define LINE_LED4 PAL_LINE(GPIOD, 10U) #define LINE_LED4 PAL_LINE(GPIOD, 10U)
#define LINE_I2C4_SCL_EXTERNAL PAL_LINE(GPIOD, 12U) #define LINE_I2C4_SCL PAL_LINE(GPIOD, 12U)
#define LINE_I2C4_SDA_EXTERNAL PAL_LINE(GPIOD, 13U) #define LINE_I2C4_SDA PAL_LINE(GPIOD, 13U)
#define LINE_LED1 PAL_LINE(GPIOD, 15U) #define LINE_LED1 PAL_LINE(GPIOD, 15U)
#define LINE_RC1 PAL_LINE(GPIOE, 0U) #define LINE_RC1 PAL_LINE(GPIOE, 0U)
@@ -441,8 +441,8 @@
PIN_MODE_ALTERNATE(SRVB2) | \ PIN_MODE_ALTERNATE(SRVB2) | \
PIN_MODE_ALTERNATE(SRVB3) | \ PIN_MODE_ALTERNATE(SRVB3) | \
PIN_MODE_ALTERNATE(SRVB4) | \ PIN_MODE_ALTERNATE(SRVB4) | \
PIN_MODE_ALTERNATE(I2C2_SCL_EXTERNAL) | \ PIN_MODE_ALTERNATE(I2C2_SCL) | \
PIN_MODE_ALTERNATE(I2C2_SDA_EXTERNAL) | \ PIN_MODE_ALTERNATE(I2C2_SDA) | \
PIN_MODE_OUTPUT(SPI2_EXTERNAL_CS) | \ PIN_MODE_OUTPUT(SPI2_EXTERNAL_CS) | \
PIN_MODE_INPUT(PB13) | \ PIN_MODE_INPUT(PB13) | \
PIN_MODE_ALTERNATE(SPI2_EXTERNAL_MISO) | \ PIN_MODE_ALTERNATE(SPI2_EXTERNAL_MISO) | \
@@ -458,8 +458,8 @@
PIN_OTYPE_PUSHPULL(SRVB2) | \ PIN_OTYPE_PUSHPULL(SRVB2) | \
PIN_OTYPE_PUSHPULL(SRVB3) | \ PIN_OTYPE_PUSHPULL(SRVB3) | \
PIN_OTYPE_PUSHPULL(SRVB4) | \ PIN_OTYPE_PUSHPULL(SRVB4) | \
PIN_OTYPE_OPENDRAIN(I2C2_SCL_EXTERNAL) | \ PIN_OTYPE_OPENDRAIN(I2C2_SCL) | \
PIN_OTYPE_OPENDRAIN(I2C2_SDA_EXTERNAL) | \ PIN_OTYPE_OPENDRAIN(I2C2_SDA) | \
PIN_OTYPE_PUSHPULL(SPI2_EXTERNAL_CS) | \ PIN_OTYPE_PUSHPULL(SPI2_EXTERNAL_CS) | \
PIN_OTYPE_PUSHPULL(PB13) | \ PIN_OTYPE_PUSHPULL(PB13) | \
PIN_OTYPE_PUSHPULL(SPI2_EXTERNAL_MISO) | \ PIN_OTYPE_PUSHPULL(SPI2_EXTERNAL_MISO) | \
@@ -475,8 +475,8 @@
PIN_OSPEED_SPEED_HIGH(SRVB2) | \ PIN_OSPEED_SPEED_HIGH(SRVB2) | \
PIN_OSPEED_SPEED_HIGH(SRVB3) | \ PIN_OSPEED_SPEED_HIGH(SRVB3) | \
PIN_OSPEED_SPEED_HIGH(SRVB4) | \ PIN_OSPEED_SPEED_HIGH(SRVB4) | \
PIN_OSPEED_SPEED_HIGH(I2C2_SCL_EXTERNAL) | \ PIN_OSPEED_SPEED_HIGH(I2C2_SCL) | \
PIN_OSPEED_SPEED_HIGH(I2C2_SDA_EXTERNAL) | \ PIN_OSPEED_SPEED_HIGH(I2C2_SDA) | \
PIN_OSPEED_SPEED_HIGH(SPI2_EXTERNAL_CS) | \ PIN_OSPEED_SPEED_HIGH(SPI2_EXTERNAL_CS) | \
PIN_OSPEED_SPEED_VERYLOW(PB13) | \ PIN_OSPEED_SPEED_VERYLOW(PB13) | \
PIN_OSPEED_SPEED_HIGH(SPI2_EXTERNAL_MISO) | \ PIN_OSPEED_SPEED_HIGH(SPI2_EXTERNAL_MISO) | \
@@ -492,8 +492,8 @@
PIN_PUPDR_FLOATING(SRVB2) | \ PIN_PUPDR_FLOATING(SRVB2) | \
PIN_PUPDR_FLOATING(SRVB3) | \ PIN_PUPDR_FLOATING(SRVB3) | \
PIN_PUPDR_FLOATING(SRVB4) | \ PIN_PUPDR_FLOATING(SRVB4) | \
PIN_PUPDR_PULLUP(I2C2_SCL_EXTERNAL) | \ PIN_PUPDR_PULLUP(I2C2_SCL) | \
PIN_PUPDR_PULLUP(I2C2_SDA_EXTERNAL) | \ PIN_PUPDR_PULLUP(I2C2_SDA) | \
PIN_PUPDR_FLOATING(SPI2_EXTERNAL_CS) | \ PIN_PUPDR_FLOATING(SPI2_EXTERNAL_CS) | \
PIN_PUPDR_PULLDOWN(PB13) | \ PIN_PUPDR_PULLDOWN(PB13) | \
PIN_PUPDR_FLOATING(SPI2_EXTERNAL_MISO) | \ PIN_PUPDR_FLOATING(SPI2_EXTERNAL_MISO) | \
@@ -509,8 +509,8 @@
PIN_ODR_LEVEL_LOW(SRVB2) | \ PIN_ODR_LEVEL_LOW(SRVB2) | \
PIN_ODR_LEVEL_LOW(SRVB3) | \ PIN_ODR_LEVEL_LOW(SRVB3) | \
PIN_ODR_LEVEL_LOW(SRVB4) | \ PIN_ODR_LEVEL_LOW(SRVB4) | \
PIN_ODR_LEVEL_HIGH(I2C2_SCL_EXTERNAL) | \ PIN_ODR_LEVEL_HIGH(I2C2_SCL) | \
PIN_ODR_LEVEL_HIGH(I2C2_SDA_EXTERNAL) | \ PIN_ODR_LEVEL_HIGH(I2C2_SDA) | \
PIN_ODR_LEVEL_HIGH(SPI2_EXTERNAL_CS) | \ PIN_ODR_LEVEL_HIGH(SPI2_EXTERNAL_CS) | \
PIN_ODR_LEVEL_LOW(PB13) | \ PIN_ODR_LEVEL_LOW(PB13) | \
PIN_ODR_LEVEL_HIGH(SPI2_EXTERNAL_MISO) | \ PIN_ODR_LEVEL_HIGH(SPI2_EXTERNAL_MISO) | \
@@ -527,8 +527,8 @@
#define VAL_GPIOB_AFRH (PIN_AFIO_AF(SRVB3, 2) | \ #define VAL_GPIOB_AFRH (PIN_AFIO_AF(SRVB3, 2) | \
PIN_AFIO_AF(SRVB4, 2) | \ PIN_AFIO_AF(SRVB4, 2) | \
PIN_AFIO_AF(I2C2_SCL_EXTERNAL, 4) | \ PIN_AFIO_AF(I2C2_SCL, 4) | \
PIN_AFIO_AF(I2C2_SDA_EXTERNAL, 4) | \ PIN_AFIO_AF(I2C2_SDA, 4) | \
PIN_AFIO_AF(SPI2_EXTERNAL_CS, 0) | \ PIN_AFIO_AF(SPI2_EXTERNAL_CS, 0) | \
PIN_AFIO_AF(PB13, 0) | \ PIN_AFIO_AF(PB13, 0) | \
PIN_AFIO_AF(SPI2_EXTERNAL_MISO, 5) | \ PIN_AFIO_AF(SPI2_EXTERNAL_MISO, 5) | \
@@ -649,8 +649,8 @@
PIN_MODE_ALTERNATE(UART3_RX) | \ PIN_MODE_ALTERNATE(UART3_RX) | \
PIN_MODE_OUTPUT(LED4) | \ PIN_MODE_OUTPUT(LED4) | \
PIN_MODE_INPUT(PD11) | \ PIN_MODE_INPUT(PD11) | \
PIN_MODE_ALTERNATE(I2C4_SCL_EXTERNAL) | \ PIN_MODE_ALTERNATE(I2C4_SCL) | \
PIN_MODE_ALTERNATE(I2C4_SDA_EXTERNAL) | \ PIN_MODE_ALTERNATE(I2C4_SDA) | \
PIN_MODE_INPUT(PD14) | \ PIN_MODE_INPUT(PD14) | \
PIN_MODE_OUTPUT(LED1)) PIN_MODE_OUTPUT(LED1))
@@ -666,8 +666,8 @@
PIN_OTYPE_PUSHPULL(UART3_RX) | \ PIN_OTYPE_PUSHPULL(UART3_RX) | \
PIN_OTYPE_PUSHPULL(LED4) | \ PIN_OTYPE_PUSHPULL(LED4) | \
PIN_OTYPE_PUSHPULL(PD11) | \ PIN_OTYPE_PUSHPULL(PD11) | \
PIN_OTYPE_OPENDRAIN(I2C4_SCL_EXTERNAL) | \ PIN_OTYPE_OPENDRAIN(I2C4_SCL) | \
PIN_OTYPE_OPENDRAIN(I2C4_SDA_EXTERNAL) | \ PIN_OTYPE_OPENDRAIN(I2C4_SDA) | \
PIN_OTYPE_PUSHPULL(PD14) | \ PIN_OTYPE_PUSHPULL(PD14) | \
PIN_OTYPE_PUSHPULL(LED1)) PIN_OTYPE_PUSHPULL(LED1))
@@ -683,8 +683,8 @@
PIN_OSPEED_SPEED_HIGH(UART3_RX) | \ PIN_OSPEED_SPEED_HIGH(UART3_RX) | \
PIN_OSPEED_SPEED_VERYLOW(LED4) | \ PIN_OSPEED_SPEED_VERYLOW(LED4) | \
PIN_OSPEED_SPEED_VERYLOW(PD11) | \ PIN_OSPEED_SPEED_VERYLOW(PD11) | \
PIN_OSPEED_SPEED_HIGH(I2C4_SCL_EXTERNAL) | \ PIN_OSPEED_SPEED_HIGH(I2C4_SCL) | \
PIN_OSPEED_SPEED_HIGH(I2C4_SDA_EXTERNAL) | \ PIN_OSPEED_SPEED_HIGH(I2C4_SDA) | \
PIN_OSPEED_SPEED_VERYLOW(PD14) | \ PIN_OSPEED_SPEED_VERYLOW(PD14) | \
PIN_OSPEED_SPEED_VERYLOW(LED1)) PIN_OSPEED_SPEED_VERYLOW(LED1))
@@ -700,8 +700,8 @@
PIN_PUPDR_FLOATING(UART3_RX) | \ PIN_PUPDR_FLOATING(UART3_RX) | \
PIN_PUPDR_FLOATING(LED4) | \ PIN_PUPDR_FLOATING(LED4) | \
PIN_PUPDR_PULLDOWN(PD11) | \ PIN_PUPDR_PULLDOWN(PD11) | \
PIN_PUPDR_PULLUP(I2C4_SCL_EXTERNAL) | \ PIN_PUPDR_PULLUP(I2C4_SCL) | \
PIN_PUPDR_PULLUP(I2C4_SDA_EXTERNAL) | \ PIN_PUPDR_PULLUP(I2C4_SDA) | \
PIN_PUPDR_PULLDOWN(PD14) | \ PIN_PUPDR_PULLDOWN(PD14) | \
PIN_PUPDR_FLOATING(LED1)) PIN_PUPDR_FLOATING(LED1))
@@ -717,8 +717,8 @@
PIN_ODR_LEVEL_HIGH(UART3_RX) | \ PIN_ODR_LEVEL_HIGH(UART3_RX) | \
PIN_ODR_LEVEL_LOW(LED4) | \ PIN_ODR_LEVEL_LOW(LED4) | \
PIN_ODR_LEVEL_LOW(PD11) | \ PIN_ODR_LEVEL_LOW(PD11) | \
PIN_ODR_LEVEL_HIGH(I2C4_SCL_EXTERNAL) | \ PIN_ODR_LEVEL_HIGH(I2C4_SCL) | \
PIN_ODR_LEVEL_HIGH(I2C4_SDA_EXTERNAL) | \ PIN_ODR_LEVEL_HIGH(I2C4_SDA) | \
PIN_ODR_LEVEL_LOW(PD14) | \ PIN_ODR_LEVEL_LOW(PD14) | \
PIN_ODR_LEVEL_LOW(LED1)) PIN_ODR_LEVEL_LOW(LED1))
@@ -735,8 +735,8 @@
PIN_AFIO_AF(UART3_RX, 7) | \ PIN_AFIO_AF(UART3_RX, 7) | \
PIN_AFIO_AF(LED4, 0) | \ PIN_AFIO_AF(LED4, 0) | \
PIN_AFIO_AF(PD11, 0) | \ PIN_AFIO_AF(PD11, 0) | \
PIN_AFIO_AF(I2C4_SCL_EXTERNAL, 4) | \ PIN_AFIO_AF(I2C4_SCL, 4) | \
PIN_AFIO_AF(I2C4_SDA_EXTERNAL, 4) | \ PIN_AFIO_AF(I2C4_SDA, 4) | \
PIN_AFIO_AF(PD14, 0) | \ PIN_AFIO_AF(PD14, 0) | \
PIN_AFIO_AF(LED1, 0)) PIN_AFIO_AF(LED1, 0))
@@ -1483,10 +1483,10 @@
#define AF_LINE_SRVB3 2U #define AF_LINE_SRVB3 2U
#define AF_SRVB4 2U #define AF_SRVB4 2U
#define AF_LINE_SRVB4 2U #define AF_LINE_SRVB4 2U
#define AF_I2C2_SCL_EXTERNAL 4U #define AF_I2C2_SCL 4U
#define AF_LINE_I2C2_SCL_EXTERNAL 4U #define AF_LINE_I2C2_SCL 4U
#define AF_I2C2_SDA_EXTERNAL 4U #define AF_I2C2_SDA 4U
#define AF_LINE_I2C2_SDA_EXTERNAL 4U #define AF_LINE_I2C2_SDA 4U
#define AF_SPI2_EXTERNAL_MISO 5U #define AF_SPI2_EXTERNAL_MISO 5U
#define AF_LINE_SPI2_EXTERNAL_MISO 5U #define AF_LINE_SPI2_EXTERNAL_MISO 5U
#define AF_SPI2_EXTERNAL_MOSI 5U #define AF_SPI2_EXTERNAL_MOSI 5U
@@ -1521,10 +1521,10 @@
#define AF_LINE_UART3_TX 7U #define AF_LINE_UART3_TX 7U
#define AF_UART3_RX 7U #define AF_UART3_RX 7U
#define AF_LINE_UART3_RX 7U #define AF_LINE_UART3_RX 7U
#define AF_I2C4_SCL_EXTERNAL 4U #define AF_I2C4_SCL 4U
#define AF_LINE_I2C4_SCL_EXTERNAL 4U #define AF_LINE_I2C4_SCL 4U
#define AF_I2C4_SDA_EXTERNAL 4U #define AF_I2C4_SDA 4U
#define AF_LINE_I2C4_SDA_EXTERNAL 4U #define AF_LINE_I2C4_SDA 4U
#define AF_RC1 8U #define AF_RC1 8U
#define AF_LINE_RC1 8U #define AF_LINE_RC1 8U
#define AF_SPI4_INTERNAL_CLK 5U #define AF_SPI4_INTERNAL_CLK 5U
@@ -95,8 +95,8 @@ PB06 SRVB1 PWM AF:TIM4_CH1 ()
PB07 SRVB2 PWM AF:TIM4_CH2 () PB07 SRVB2 PWM AF:TIM4_CH2 ()
PB08 SRVB3 PWM AF:TIM4_CH3 () PB08 SRVB3 PWM AF:TIM4_CH3 ()
PB09 SRVB4 PWM AF:TIM4_CH4 () PB09 SRVB4 PWM AF:TIM4_CH4 ()
PB10 I2C2_SCL_EXTERNAL I2C AF:I2C2_SCL PB10 I2C2_SCL I2C AF:I2C2_SCL #External
PB11 I2C2_SDA_EXTERNAL I2C AF:I2C2_SDA PB11 I2C2_SDA I2C AF:I2C2_SDA #External
PB12 SPI2_EXTERNAL_CS OUTPUT PUSHPULL SPEED_HIGH FLOATING LEVEL_HIGH PB12 SPI2_EXTERNAL_CS OUTPUT PUSHPULL SPEED_HIGH FLOATING LEVEL_HIGH
PB14 SPI2_EXTERNAL_MISO SPI AF:SPI2_MISO PB14 SPI2_EXTERNAL_MISO SPI AF:SPI2_MISO
PB15 SPI2_EXTERNAL_MOSI SPI AF:SPI2_MOSI PB15 SPI2_EXTERNAL_MOSI SPI AF:SPI2_MOSI
@@ -121,8 +121,8 @@ PD06 UART2_RX UART AF:USART2_RX
PD08 UART3_TX UART AF:USART3_TX PD08 UART3_TX UART AF:USART3_TX
PD09 UART3_RX UART AF:USART3_RX PD09 UART3_RX UART AF:USART3_RX
PD10 LED4 LED PD10 LED4 LED
PD12 I2C4_SCL_EXTERNAL I2C AF:I2C4_SCL PD12 I2C4_SCL I2C AF:I2C4_SCL #External
PD13 I2C4_SDA_EXTERNAL I2C AF:I2C4_SDA PD13 I2C4_SDA I2C AF:I2C4_SDA #External
PD15 LED1 LED PD15 LED1 LED
PE00 RC1 UART AF:UART8_RX () PE00 RC1 UART AF:UART8_RX ()
@@ -1,27 +0,0 @@
/*
* Copyright (C) 2012 Gautier Hattenberger
*
* This file is part of Paparazzi.
*
* Paparazzi is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* Paparazzi is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Paparazzi; see the file COPYING. If not, write to
* the Free Software Foundation, 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#ifndef ACTUATORS_PPM_H
#define ACTUATORS_PPM_H
#include "modules/actuators/servos_ppm_hw.h"
#endif /* ACTUATORS_PPM_H */
@@ -229,6 +229,18 @@ void ms45xx_i2c_event(void)
/* 14bit raw pressure */ /* 14bit raw pressure */
uint16_t p_raw = 0x3FFF & (((uint16_t)(ms45xx_trans.buf[0]) << 8) | (uint16_t)(ms45xx_trans.buf[1])); uint16_t p_raw = 0x3FFF & (((uint16_t)(ms45xx_trans.buf[0]) << 8) | (uint16_t)(ms45xx_trans.buf[1]));
/* 11bit raw temperature, 5 LSB bits not used */
uint16_t temp_raw = 0xFFE0 & (((uint16_t)(ms45xx_trans.buf[2]) << 8) |
(uint16_t)(ms45xx_trans.buf[3]));
temp_raw = temp_raw >> 5;
/* Reject any values that are the absolute minimum or maximums these
can happen due to gnd lifts or communication errors on the bus */
if(p_raw == 0x3FFF || p_raw == 0 || temp_raw == 0x7FF || temp_raw == 0) {
ms45xx_trans.status = I2CTransDone;
return;
}
/* For type Diff /* For type Diff
* Output is proportional to the difference between Port 1 and Port 2. Output * Output is proportional to the difference between Port 1 and Port 2. Output
* swings positive when Port 1> Port 2. Output is 50% of total counts * swings positive when Port 1> Port 2. Output is 50% of total counts
@@ -256,10 +268,6 @@ void ms45xx_i2c_event(void)
} }
} }
/* 11bit raw temperature, 5 LSB bits not used */
uint16_t temp_raw = 0xFFE0 & (((uint16_t)(ms45xx_trans.buf[2]) << 8) |
(uint16_t)(ms45xx_trans.buf[3]));
temp_raw = temp_raw >> 5;
/* 0 = -50degC, 20147 = 150degC /* 0 = -50degC, 20147 = 150degC
* ms45xx_temperature in 0.1 deg Celcius * ms45xx_temperature in 0.1 deg Celcius
*/ */
@@ -1,34 +0,0 @@
/*
* Copyright (C) 2012 Gautier Hattenberger
*
* This file is part of paparazzi.
*
* paparazzi is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* paparazzi is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with paparazzi; see the file COPYING. If not, write to
* the Free Software Foundation, 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*
*/
#ifndef SERVOS_PPM_HW_H
#define SERVOS_PPM_HW_H
#define SERVOS_TICS_OF_USEC(_v) (_v)
#define ActuatorPpmSet(_i, _v) {}
#define ActuatorsPpmInit() {}
#define ActuatorsPpmCommit() {}
#endif