mirror of
https://github.com/eddyem/IR-controller.git
synced 2025-12-06 10:45:15 +03:00
124 lines
3.5 KiB
C
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__
|