Added PCBA information to project

tested - functional

git-svn-id: https://svn.vbchaos.nl/svn/hsb/trunk@227 05563f52-14a8-4384-a975-3d1654cca0fa
This commit is contained in:
mmi
2017-10-02 10:08:57 +00:00
parent b7d4985090
commit 802e9c64ca
7 changed files with 343 additions and 3 deletions

View File

@@ -26,6 +26,7 @@ OBJECTS = \
stm32f10x_it.o \
adc.o \
led.o \
PCBA.o \
rtc.o \
spi.o \
spiDevice.o \

View File

@@ -0,0 +1,86 @@
// -----------------------------------------------------------------------------
/// @file PCBA.h
/// @brief File description
// -----------------------------------------------------------------------------
// Micro-Key bv
// Industrieweg 28, 9804 TG Noordhorn
// Postbus 92, 9800 AB Zuidhorn
// The Netherlands
// Tel: +31 594 503020
// Fax: +31 594 505825
// Email: support@microkey.nl
// Web: www.microkey.nl
// -----------------------------------------------------------------------------
/// $Revision$
/// $Author$
/// $Date$
// (c) 2015 Micro-Key bv
// -----------------------------------------------------------------------------
/// @defgroup {group_name} {group_description}
/// Description
/// @file PCBA.h
/// @ingroup {group_name}
#ifndef PCBA_H_
#define PCBA_H_
// -----------------------------------------------------------------------------
// Include files
// -----------------------------------------------------------------------------
#include "stm32f10x.h"
#include "platform.h"
// -----------------------------------------------------------------------------
// Constant and macro definitions
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
// Type definitions.
// -----------------------------------------------------------------------------
typedef enum
{
CathodeMCP = 0,
Tesla = 1,
Anode = 2,
ND = 3
}PCBA_t;
struct Pcba
{
PCBA_t pcba;
char name[20];
T_PL_GPIO A0;
T_PL_GPIO A1;
};
// -----------------------------------------------------------------------------
// Function declarations
// -----------------------------------------------------------------------------
/** ----------------------------------------------------------------------------
* PCBA_construct
* Initializes the PCBA information of the hardware.
* PCBA information is defined via placed resistors
* This function can only be called once. Within the first call an internal flag
* is set to prevent any further calling. That is because the PCBA information
* cannot change during run-time
*
* @param self The PCBA information
*
* @return ErrorStatus SUCCESS if construction was successful
* ERROR otherwise
*
* @todo
* -----------------------------------------------------------------------------
*/
extern ErrorStatus PCBA_construct(struct Pcba* self);
#endif /* PCBA_H_ */

View File

@@ -60,6 +60,8 @@ typedef struct
GPIO_InitTypeDef GPIO_InitStruct;
} T_PL_GPIO;
// Export of PCBA information
extern struct Pcba* const pcba;
// Export of LEDs
extern struct Led* const ledGreen;

View File

@@ -0,0 +1,88 @@
// -----------------------------------------------------------------------------
/// @file PCBA.c
/// @brief Description
// -----------------------------------------------------------------------------
// Micro-Key bv
// Industrieweg 28, 9804 TG Noordhorn
// Postbus 92, 9800 AB Zuidhorn
// The Netherlands
// Tel: +31 594 503020
// Fax: +31 594 505825
// Email: support@microkey.nl
// Web: www.microkey.nl
// -----------------------------------------------------------------------------
/// $Revision$
/// $Author$
/// $Date$
// (c) 2017 Micro-Key bv
// -----------------------------------------------------------------------------
/// @file PCBA.c
/// @ingroup {group_name}
// -----------------------------------------------------------------------------
// Include files
// -----------------------------------------------------------------------------
#include <stdbool.h>
#include "PCBA.h"
#include "Logger.h"
// -----------------------------------------------------------------------------
// Constant and macro definitions
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
// Type definitions
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
// File-scope variables
// -----------------------------------------------------------------------------
static bool initialized = false;
static const char nameArray[4][20] =
{
"Cathode/MCP repair ",
"Tesla repair ",
"Anode repair ",
"UNDEFINED PCBA ",
};
// -----------------------------------------------------------------------------
// Function declarations
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
// Function definitions
// -----------------------------------------------------------------------------
ErrorStatus PCBA_construct(struct Pcba* self)
{
ErrorStatus returnValue = SUCCESS;
if (!initialized)
{
uint8_t A0 = GPIO_ReadInputDataBit(self->A0.GPIO_Typedef, self->A0.GPIO_InitStruct.GPIO_Pin);
uint8_t A1 = GPIO_ReadInputDataBit(self->A1.GPIO_Typedef, self->A1.GPIO_InitStruct.GPIO_Pin);
self->pcba = (A0 & 0x01) | ((A1 << 1) & 0x02);
snprintf(self->name, (sizeof(self->name) / sizeof(self->name[0])), "%s", nameArray[self->pcba]);
initialized = true;
}
else
{
returnValue = ERROR;
}
return returnValue;
}

View File

@@ -33,10 +33,11 @@
#include "stm32f10x_it.h"
#include "platform.h"
#include "spiDevice.h"
#include "led.h"
#include "PCBA.h"
#include "rtc.h"
#include "spi.h"
#include "spiDevice.h"
#include "uart.h"
#include "keypadMatrix.h"
#include "nhd0420.h"
@@ -76,6 +77,9 @@
// The following static file-scope variables represent the actual storage of
// the IO/Peripheral object
// PCBA information
static struct Pcba _pcba;
// LEDs
static struct Led _ledGreen;
static struct Led _ledOrange;
@@ -105,6 +109,8 @@ static struct KeypadParameters _keypadParameters;
// The following pointers are for export (see platform.h) and external use.
// Note that the pointer content is marked "const"
struct Pcba* const pcba = &_pcba;
struct Led* const ledGreen = &_ledGreen;
struct Led* const ledOrange = &_ledOrange;
@@ -160,6 +166,11 @@ ErrorStatus initPlatform(void)
// INITIALIZE AND CONFIGURE ALL REQUIRED IO AND PERIPHERY
if (returnValue == SUCCESS)
{
/* --------------------------------------------------------------------*/
/* PCBA */
/* --------------------------------------------------------------------*/
// PCBA_construct(pcba);
/* --------------------------------------------------------------------*/
/* LEDs */
/* --------------------------------------------------------------------*/
@@ -326,6 +337,22 @@ static ErrorStatus initIO (void)
{
ErrorStatus returnValue = SUCCESS;
/*PCBA IO initialisation -------------------------------------------------*/
// A0
pcba->A0.GPIO_Typedef = GPIOC;
pcba->A0.GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPD;
pcba->A0.GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;
pcba->A0.GPIO_InitStruct.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_Init(pcba->A0.GPIO_Typedef, &pcba->A0.GPIO_InitStruct);
// A1
pcba->A1.GPIO_Typedef = GPIOC;
pcba->A1.GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPD;
pcba->A1.GPIO_InitStruct.GPIO_Pin = GPIO_Pin_1;
pcba->A1.GPIO_InitStruct.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_Init(pcba->A1.GPIO_Typedef, &pcba->A1.GPIO_InitStruct);
/*LED IO initialisation --------------------------------------------------*/
// Init LED Green
ledGreen->ledGpio.GPIO_Typedef = GPIOC;