From 394b8b483ad5e30362e8e80f081eeb446c92ed31 Mon Sep 17 00:00:00 2001 From: drowe67 Date: Sat, 18 Jun 2016 00:05:16 +0000 Subject: [PATCH] support for SM2000 Port E tx/rx +12V control git-svn-id: https://svn.code.sf.net/p/freetel/code@2822 01035d8c-6547-0410-b346-abe4f91aad63 --- codec2-dev/stm32/inc/debugblinky.h | 4 +++- codec2-dev/stm32/src/debugblinky.c | 16 ++++++++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/codec2-dev/stm32/inc/debugblinky.h b/codec2-dev/stm32/inc/debugblinky.h index 0561272c..f2bb2daf 100644 --- a/codec2-dev/stm32/inc/debugblinky.h +++ b/codec2-dev/stm32/inc/debugblinky.h @@ -4,7 +4,8 @@ AUTHOR......: David Rowe DATE CREATED: 12 August 2014 - Configures GPIO pins used for debug blinkies + Configures Port E GPIO pins used for debug blinkies, and control lines + for SM2000 +12V switching. \*---------------------------------------------------------------------------*/ @@ -29,5 +30,6 @@ #define __DEBUGBLINKY__ void init_debug_blinky(void); +void txrx_12V(int state); #endif diff --git a/codec2-dev/stm32/src/debugblinky.c b/codec2-dev/stm32/src/debugblinky.c index 171cd5cc..992c8b05 100644 --- a/codec2-dev/stm32/src/debugblinky.c +++ b/codec2-dev/stm32/src/debugblinky.c @@ -30,16 +30,28 @@ void init_debug_blinky(void) { GPIO_InitTypeDef GPIO_InitStruct; - /* PE0-3 used to indicate activity */ + /* PE0-3 used to indicate activity, PE4-5 for SM2000 +12V rail switching */ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE); - GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3; + GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOE, &GPIO_InitStruct); +} +/* SM2000: 0 for +12V RX power, 1 for +12V TX power */ + +void txrx_12V(int state) { + if (state) { + GPIOE->ODR &= ~(1 << 5); /* +12VRXENB off */ + GPIOE->ODR |= (1 << 4); /* +12VTXENB on */ + } + else { + GPIOE->ODR &= ~(1 << 4); /* +12VTXENB off */ + GPIOE->ODR |= (1 << 5); /* +12VRXENB on */ + } } -- 2.25.1