BV: fix going to safe state on full version, and RS485 pin info

This commit is contained in:
King Kévin 2018-02-13 19:27:15 +01:00
parent 8774be07cd
commit fee77b8231
2 changed files with 10 additions and 11 deletions

View File

@ -69,12 +69,8 @@ uint8_t busvoodoo_revision = 0;
void busvoodoo_setup(void)
{
// enable all GPIO domains since we use pins on all ports
rcc_periph_clock_enable(RCC_GPIOA); // enable clock for all GPIO domains
rcc_periph_clock_enable(RCC_GPIOB); // enable clock for all GPIO domains
rcc_periph_clock_enable(RCC_GPIOC); // enable clock for all GPIO domains
rcc_periph_clock_enable(RCC_GPIOD); // enable clock for all GPIO domains
rcc_periph_clock_enable(RCC_AFIO); // enable pin alternate function (for communication)
busvoodoo_safe_state(); // switch off all outputs
rcc_periph_clock_enable(RCC_GPIOA|RCC_GPIOB|RCC_GPIOC|RCC_GPIOD|RCC_AFIO); // enable clock for all GPIO domains and alternate function (for communication)
busvoodoo_safe_state(); // put pins in safe state (for common light version)
// check if this BusVoodoo is a full version
rcc_periph_clock_enable(RCC_ADC12_IN(BUSVOODOO_HV_CHANNEL)); // enable clock for GPIO domain for HV channel
@ -85,6 +81,7 @@ void busvoodoo_setup(void)
busvoodoo_full = false;
} else {
busvoodoo_full = true;
busvoodoo_safe_state(); // also put the full version pins in safe state
}
// setup ADC to measure hardware revision voltage
@ -217,8 +214,10 @@ void busvoodoo_safe_state(void)
gpio_set_mode(GPIO(BUSVOODOO_RS485_RE_PORT), GPIO_MODE_OUTPUT_2_MHZ, GPIO_CNF_OUTPUT_OPENDRAIN, GPIO(BUSVOODOO_RS485_RE_PIN)); // use external pull-up resistor to set high by default
gpio_clear(GPIO(BUSVOODOO_RS485_DE_PORT), GPIO(BUSVOODOO_RS485_DE_PIN)); // set low to disable transmitter
gpio_set_mode(GPIO(BUSVOODOO_RS485_DE_PORT), GPIO_MODE_OUTPUT_2_MHZ, GPIO_CNF_OUTPUT_PUSHPULL, GPIO(BUSVOODOO_RS485_DE_PIN)); // there is also an external pull-down resistor to disable per default
gpio_set_mode(GPIO(BUSVOODOO_RS485_TX_PORT), GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO(BUSVOODOO_RS485_TX_PIN)); // set pin to floating
gpio_set_mode(GPIO(BUSVOODOO_RS485_RX_PORT), GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO(BUSVOODOO_RS485_RX_PIN)); // set pin to floating
// disable all CAN and some RS-458 signals (put back to input floating)
// disable CAN transceiver and signals (put back to input floating)
gpio_set_mode(GPIO(BUSVOODOO_CAN_TX_PORT), GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO(BUSVOODOO_CAN_TX_PIN)); // set pin to floating
gpio_set_mode(GPIO(BUSVOODOO_CAN_RX_PORT), GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO(BUSVOODOO_CAN_RX_PIN)); // set pin to floating
gpio_set(GPIO(BUSVOODOO_CAN_EN_PORT), GPIO(BUSVOODOO_CAN_EN_PIN)); // set high to power off transceiver

View File

@ -76,10 +76,10 @@
/** @defgroup busvoodoo_rs485 RS-485 (and RS-422) transceiver connection definition
* @{
*/
#define BUSVOODOO_RS485_RE_PORT C /**< RS-232 pin to enable receiver (active low, pulled up) */
#define BUSVOODOO_RS485_RE_PIN 13 /**< RS-232 pin to enable receiver (active low, pulled up) */
#define BUSVOODOO_RS485_DE_PORT C /**< RS-232 pin to enable transmitter (active high, pulled low) */
#define BUSVOODOO_RS485_DE_PIN 14 /**< RS-232 pin to enable transmitter (active high, pulled low) */
#define BUSVOODOO_RS485_RE_PORT C /**< RS-485 pin to enable receiver (active low, pulled up) */
#define BUSVOODOO_RS485_RE_PIN 13 /**< RS-485 pin to enable receiver (active low, pulled up) */
#define BUSVOODOO_RS485_DE_PORT C /**< RS-485 pin to enable transmitter (active high, pulled low) */
#define BUSVOODOO_RS485_DE_PIN 14 /**< RS-485 pin to enable transmitter (active high, pulled low) */
#define BUSVOODOO_RS485_TX_PORT A /**< RS-485 Transmit output pin */
#define BUSVOODOO_RS485_TX_PIN 2 /**< RS-485 Transmit output pin */
#define BUSVOODOO_RS485_RX_PORT A /**< RS-485 Receive input pin */