From 584dfe4f831109be8f05d07ca0c5720b7793a671 Mon Sep 17 00:00:00 2001 From: Michael Wiebusch Date: Tue, 17 Dec 2013 13:27:23 +0100 Subject: [PATCH] cleaned up project structure ... added the proper files --- firmware/src/CB_functions.c | 126 ++++++++++++++++++++++++++++++++++++ firmware/src/CB_functions.h | 16 +++++ firmware/src/Makefile | 1 + firmware/src/main.c | 98 +--------------------------- firmware/src/usart1.c | 103 +++++++++++++++++++++++++++++ firmware/src/usart1.h | 17 +++++ 6 files changed, 266 insertions(+), 95 deletions(-) create mode 100644 firmware/src/CB_functions.c create mode 100644 firmware/src/CB_functions.h create mode 100644 firmware/src/usart1.c create mode 100644 firmware/src/usart1.h diff --git a/firmware/src/CB_functions.c b/firmware/src/CB_functions.c new file mode 100644 index 0000000..12a1640 --- /dev/null +++ b/firmware/src/CB_functions.c @@ -0,0 +1,126 @@ +/** + ******************************************************** + * + * Converter Board specific functions + * + ******************************************************** + */ + +#include "CB_functions.h" + +#include "periph_conf.h" + + + +void decode_register(uint8_t addr,uint16_t *registers) { + uint16_t thisRegister = registers[addr]; + switch (addr){ + case 0x0: +// thisRegister[thisRegister]++; // just for debug reasons + USART_SendData(USART1, addr); + while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET); + USART_SendData(USART1, (uint8_t) (thisRegister>>8)); // upper nibble + while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET); + USART_SendData(USART1, (uint8_t) (thisRegister & 0x00FF)); // lower nibble + while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET); + + break; + case 0x1: // Switches0 + CB_GPIO_Out(ENAA0,thisRegister & 1<<5); + CB_GPIO_Out(DISA0,thisRegister & 1<<4); + CB_GPIO_Out(ENAD0,thisRegister & 1<<3); + CB_GPIO_Out(DISD0,thisRegister & 1<<2); + CB_GPIO_Out(SENSOREN0,thisRegister & 1<<1); + CB_GPIO_Out(JTAGEN0,thisRegister & 1<<0); + break; + case 0x2: // Switches1 + CB_GPIO_Out(ENAA1,thisRegister & 1<<5); + CB_GPIO_Out(DISA1,thisRegister & 1<<4); + CB_GPIO_Out(ENAD1,thisRegister & 1<<3); + CB_GPIO_Out(DISD1,thisRegister & 1<<2); + CB_GPIO_Out(SENSOREN1,thisRegister & 1<<1); + CB_GPIO_Out(JTAGEN1,thisRegister & 1<<0); + break; + + case 0x10: // LEDs + if(thisRegister & 1<<7) { + CB_GPIO_Out(LED4,thisRegister & 1<<3); + } + if(thisRegister & 1<<6) { + CB_GPIO_Out(LED3,thisRegister & 1<<2); + } + if(thisRegister & 1<<5) { + CB_GPIO_Out(LED2,thisRegister & 1<<1); + } + if(thisRegister & 1<<4) { + CB_GPIO_Out(LED1,thisRegister & 1<<0); + } + break; + + + } + + +} + + +void init_CB_GPIO_Outputs(void) { + + CB_GPIO_Out_Init(LED1); + CB_GPIO_Out_Init(LED2); + CB_GPIO_Out_Init(LED3); + CB_GPIO_Out_Init(LED4); + CB_GPIO_Out_Init(JTAGEN0); + CB_GPIO_Out_Init(JTAGEN1); + CB_GPIO_Out_Init(SENSOREN0); + CB_GPIO_Out_Init(SENSOREN1); + CB_GPIO_Out_Init(DISD0); + CB_GPIO_Out_Init(DISA0); + CB_GPIO_Out_Init(DISD1); + CB_GPIO_Out_Init(DISA1); + CB_GPIO_Out_Init(ENAD0); + CB_GPIO_Out_Init(ENAA0); + CB_GPIO_Out_Init(ENAD1); + CB_GPIO_Out_Init(ENAA1); +// CB_GPIO_Out_Init(OVCD_C0); //input! +// CB_GPIO_Out_Init(OVCA_C0); //input! +// CB_GPIO_Out_Init(OVCD_C1); //input! +// CB_GPIO_Out_Init(OVCA_C1); //input! + CB_GPIO_Out_Init(MUXADDR0); + CB_GPIO_Out_Init(MUXADDR1); + CB_GPIO_Out_Init(ZEROCALIB); + CB_GPIO_Out_Init(ADC_CONV0); + CB_GPIO_Out_Init(ADC_CONV1); + CB_GPIO_Out_Init(DAC_CS); + CB_GPIO_Out_Init(UC_CS); + + + CB_GPIO_Out_Hi(LED1); + CB_GPIO_Out_Lo(LED2); + CB_GPIO_Out_Lo(LED3); + CB_GPIO_Out_Lo(LED4); + CB_GPIO_Out_Hi(JTAGEN0); + CB_GPIO_Out_Hi(JTAGEN1); + CB_GPIO_Out_Hi(SENSOREN0); + CB_GPIO_Out_Hi(SENSOREN1); + CB_GPIO_Out_Lo(DISD0); + CB_GPIO_Out_Lo(DISA0); + CB_GPIO_Out_Lo(DISD1); + CB_GPIO_Out_Lo(DISA1); + CB_GPIO_Out_Hi(ENAD0); + CB_GPIO_Out_Hi(ENAA0); + CB_GPIO_Out_Hi(ENAD1); + CB_GPIO_Out_Hi(ENAA1); +// CB_GPIO_Out_Lo(OVCD_C0); //input! +// CB_GPIO_Out_Lo(OVCA_C0); //input! +// CB_GPIO_Out_Lo(OVCD_C1); //input! +// CB_GPIO_Out_Lo(OVCA_C1); //input! + CB_GPIO_Out_Lo(MUXADDR0); + CB_GPIO_Out_Lo(MUXADDR1); + CB_GPIO_Out_Lo(ZEROCALIB); + CB_GPIO_Out_Hi(ADC_CONV0); // spi nCS -> idle Hi + CB_GPIO_Out_Hi(ADC_CONV1); // spi nCS -> idle Hi + CB_GPIO_Out_Hi(DAC_CS); // spi nCS -> idle Hi + CB_GPIO_Out_Hi(UC_CS); // spi nCS -> idle Hi + +} \ No newline at end of file diff --git a/firmware/src/CB_functions.h b/firmware/src/CB_functions.h new file mode 100644 index 0000000..2a2d679 --- /dev/null +++ b/firmware/src/CB_functions.h @@ -0,0 +1,16 @@ +/** + ******************************************************** + * + * Converter Board specific functions (headers) + * + ******************************************************** + */ + +#include "stm32f10x.h" +#include "stm32f10x_conf.h" // contains all std periph includes +#include "core_cm3.h" +// #include "stm32f10x_it.h" + + +void init_CB_GPIO_Outputs(void); +void decode_register(uint8_t addr,uint16_t *registers); \ No newline at end of file diff --git a/firmware/src/Makefile b/firmware/src/Makefile index 76cfe35..174d4e7 100644 --- a/firmware/src/Makefile +++ b/firmware/src/Makefile @@ -7,6 +7,7 @@ OBJS+=spi.o OBJS+=stm32f10x_it.o OBJS+=periph_conf.o OBJS+=CB_functions.o +OBJS+=usart1.o # OBJS+=keypins.o diff --git a/firmware/src/main.c b/firmware/src/main.c index 21d458a..658d465 100644 --- a/firmware/src/main.c +++ b/firmware/src/main.c @@ -14,6 +14,7 @@ #include #include "newlib_stubs.c" #include "CB_functions.h" +#include "usart1.h" #define UC_NO_REGS 17 @@ -41,11 +42,8 @@ void spi_dma_shovel(void); /* function prototypes */ -void RCC_Configuration(void); -void GPIO_Configuration(void); -void NVIC_Configuration(void); + void USART1_IRQHandler(void); -void init_USART1_w_interrupt(void); @@ -88,7 +86,7 @@ int main(int argc, char *argv[]) { SPIBuffer[0] = 0x1234; SPIBuffer[1] = 0x5678; - init_USART1_w_interrupt(); + init_USART1(); @@ -276,98 +274,8 @@ void disable_JTAG(void) { -void init_USART1_w_interrupt(void) { - /* structure contains data for USART configuration */ - USART_InitTypeDef USART_InitStructure; - - /* HW configuration */ - RCC_Configuration(); - GPIO_Configuration(); - NVIC_Configuration(); - - /* USARTx configuration ---------------------------------------------------*/ - USART_InitStructure.USART_BaudRate = 9600; - USART_InitStructure.USART_WordLength = USART_WordLength_8b; - USART_InitStructure.USART_StopBits = USART_StopBits_1; - USART_InitStructure.USART_Parity = USART_Parity_No ; - USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; - USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; - - /* Configurating and enabling USART1 */ - USART_Init(USART1, &USART_InitStructure); - USART_Cmd(USART1, ENABLE); - - /* Enabling interrupt from USART1 */ - USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); - - while (1); -} - -/* clock sources configuration */ -void RCC_Configuration(void) -{ - /* error status */ - ErrorStatus HSEStartUpStatus; - - RCC_DeInit(); - - RCC_HSEConfig(RCC_HSE_ON); - HSEStartUpStatus = RCC_WaitForHSEStartUp(); - - if (HSEStartUpStatus == SUCCESS) { - FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); - FLASH_SetLatency(FLASH_Latency_2); - - RCC_HCLKConfig(RCC_SYSCLK_Div1); - RCC_PCLK2Config(RCC_HCLK_Div1); - RCC_PCLK1Config(RCC_HCLK_Div2); - - RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); - RCC_PLLCmd(ENABLE); - while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); - - RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); - while (RCC_GetSYSCLKSource() != 0x08); - } - - RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); - RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); -} -/* I/O ports configuration */ -void GPIO_Configuration(void) -{ - GPIO_InitTypeDef GPIO_InitStructure; - - /* Configuring USART1_Tx as 'alternate function push-pull' */ - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; - GPIO_Init(GPIOA, &GPIO_InitStructure); - - /* Configuring USART1_Rx as 'input floating' */ - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; - GPIO_Init(GPIOA, &GPIO_InitStructure); -} - - -/* NVIC module configuration */ -void NVIC_Configuration(void) -{ - NVIC_InitTypeDef NVIC_InitStructure; - - /* Place the vector table into FLASH */ - NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0); - - /* Enabling interrupt from USART1 */ - NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; - NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; - NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; - NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; - NVIC_Init(&NVIC_InitStructure); -} diff --git a/firmware/src/usart1.c b/firmware/src/usart1.c new file mode 100644 index 0000000..ba47a61 --- /dev/null +++ b/firmware/src/usart1.c @@ -0,0 +1,103 @@ +/** + ******************************************************** + * + * USART1 + * + ******************************************************** + */ + +#include "usart1.h" + +void init_USART1(void) { + /* structure contains data for USART configuration */ + USART_InitTypeDef USART_InitStructure; + + /* HW configuration */ + RCC_Configuration(); + GPIO_Configuration(); + NVIC_Configuration(); + + /* USARTx configuration ---------------------------------------------------*/ + USART_InitStructure.USART_BaudRate = 9600; + USART_InitStructure.USART_WordLength = USART_WordLength_8b; + USART_InitStructure.USART_StopBits = USART_StopBits_1; + USART_InitStructure.USART_Parity = USART_Parity_No ; + USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; + USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; + + /* Configurating and enabling USART1 */ + USART_Init(USART1, &USART_InitStructure); + USART_Cmd(USART1, ENABLE); + + /* Enabling interrupt from USART1 */ + USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); + + while (1); +} + + +/* clock sources configuration */ +void RCC_Configuration(void) +{ + /* error status */ + ErrorStatus HSEStartUpStatus; + + RCC_DeInit(); + + RCC_HSEConfig(RCC_HSE_ON); + HSEStartUpStatus = RCC_WaitForHSEStartUp(); + + if (HSEStartUpStatus == SUCCESS) { + FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); + FLASH_SetLatency(FLASH_Latency_2); + + RCC_HCLKConfig(RCC_SYSCLK_Div1); + RCC_PCLK2Config(RCC_HCLK_Div1); + RCC_PCLK1Config(RCC_HCLK_Div2); + + RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); + RCC_PLLCmd(ENABLE); + while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); + + RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); + while (RCC_GetSYSCLKSource() != 0x08); + } + + RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); + RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); +} + + +/* I/O ports configuration */ +void GPIO_Configuration(void) +{ + GPIO_InitTypeDef GPIO_InitStructure; + + /* Configuring USART1_Tx as 'alternate function push-pull' */ + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; + GPIO_Init(GPIOA, &GPIO_InitStructure); + + /* Configuring USART1_Rx as 'input floating' */ + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; + GPIO_Init(GPIOA, &GPIO_InitStructure); +} + + +/* NVIC module configuration */ +void NVIC_Configuration(void) +{ + NVIC_InitTypeDef NVIC_InitStructure; + + /* Place the vector table into FLASH */ + NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0); + + /* Enabling interrupt from USART1 */ + NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; + NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; + NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; + NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; + NVIC_Init(&NVIC_InitStructure); +} diff --git a/firmware/src/usart1.h b/firmware/src/usart1.h new file mode 100644 index 0000000..f07b70b --- /dev/null +++ b/firmware/src/usart1.h @@ -0,0 +1,17 @@ +/** + ******************************************************** + * + * USART1 (headers) + * + ******************************************************** + */ + + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x_conf.h" + + +void init_USART1(void); +void RCC_Configuration(void); +void GPIO_Configuration(void); +void NVIC_Configuration(void); \ No newline at end of file -- 2.43.0