IR-controller/old/hw_config.h
2015-04-22 12:35:38 +03:00

124 lines
3.5 KiB
C

/*
* hw_config.h - some definitions of hardware configuration, be careful:
* interrupts.c also have hardware-dependent parts!
*
* This program 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 of the License, or
* (at your option) any later version.
*
* This program 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 this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301, USA.
*/
#pragma once
#ifndef __HW_CONFIG_H__
#define __HW_CONFIG_H__
#include "stm32f10x.h"
/*
* here nailed next config pins:
*
* USB disconnect: PC11
* User button: PA0
* LED: PC12
* Hall Sensor: PD2
* ADC: PB0
* ADG506 control: PC0..4
* 1-wire: PB10,11
* stepper motors: PA8 (Timer1cc1), PB1, PC6..PC10
* ZacWire: PA1 (TIM2_CH2), PB8 (ZW power)
*/
#define ADC1_DR_Address ((uint32_t)0x4001244C)
/*
* Hall sensor
*/
// Hall sensor GPIO port
#define Hall_GPIOx GPIOD
// Hall sensor pin
#define Hall_PIN GPIO_Pin_2
/*
* One Wire interface
*/
// In case of using USART2 for 1-wire port, make corresponding change
// and redefine pins in OW_Init
//#define OW_USART_X USART2
#define OW_USART_X USART3
// USART2 is on DMA channels 6(RX) & 7(TX); USART3 is on channels 2 & 3
//#define OW_DMA_TX_CHANNEL DMA1_Channel7
#define OW_DMA_TX_CHANNEL DMA1_Channel2
//#define OW_DMA_RX_CHANNEL DMA1_Channel6
#define OW_DMA_RX_CHANNEL DMA1_Channel3
// wait EndOfTransmission without interrupts, change DMA1_FLAG_TC6 to appropriate
// flags: GL-global interrupt, HT-half transfer, TC-transfer complete, TE-transfer error
//#define DMA_TRANSFER_END (DMA_GetFlagStatus(DMA1_FLAG_TC6) == RESET)
#define OW_DMA_TRANSFER_END (DMA_GetFlagStatus(DMA1_FLAG_TC3) == RESET)
/*
* Motor interface
*/
// Timer to PWG generation
#define SM_Timer TIM1
// compare-capture channel of motor timer
#define SM_IT_CC (TIM_IT_CC1)
// CC reload register of motor timer
#define SM_CCR CCR1
// PUL - step impulses
#define SM_PUL_GPIOx GPIOA
#define SM_PUL_PIN GPIO_Pin_8
// DIR - cw/ccw
#define SM_DIR_GPIOx GPIOB
#define SM_DIR_PIN GPIO_Pin_1
// EN - enable motor X
// !!! bits MUST BE CONSEQUENT !!!
#define SM_EN_GPIOx GPIOC
// all enable pins
#define SM_EN_PINS ((uint16_t)0x7c0)
// motor0 - all other are SM_EN0_PIN << (motor number)
#define SM_EN0_PIN GPIO_Pin_6
/*
* ZacWire interface
*/
#define ZW_Timer TIM2
// PB8 - ZacWire power
#define ZW_PWR_GPIOx GPIOB
#define ZW_PWR_PIN GPIO_Pin_8
// PA8 - timer input
#define ZW_DATA_GPIOx GPIOA
#define ZW_DATA_PIN GPIO_Pin_1
// ZW timer
#define ZW_TIM_CHNL TIM_Channel_2
#define ZW_TRIGGER TIM_TS_TI2FP2
// ZW interrupts. When changing TIM_IT_CC3 to something else, make also changes in zakwire.c
#define ZW_INTRPTS (TIM_IT_CC2 | TIM_IT_CC3)
// RCC
void RCC_Config(void);
// packet size for data to be sent to USB
#define USART_RX_DATA_SIZE 512
void Enter_LowPowerMode(void);
void Leave_LowPowerMode(void);
void Set_USBClock(void);
void USB_Interrupts_Config(void);
void USB_Cable_Config (FunctionalState NewState);
void Handle_USBAsynchXfer (void);
void USB_Send_Data(uint8_t data);
void Ports_Config(void);
extern __IO uint16_t ADC_value;
#endif // __HW_CONFIG_H__