mirror of
https://github.com/opentx/opentx.git
synced 2025-07-21 15:25:17 +03:00
[Horus] ADC driver by Mike
+ new CLI command repeat <interval> <other command>
This commit is contained in:
parent
bca18f5938
commit
b1f5ea115c
6 changed files with 252 additions and 118 deletions
|
@ -44,8 +44,12 @@ OS_TID cliTaskId;
|
||||||
TaskStack<CLI_STACK_SIZE> cliStack;
|
TaskStack<CLI_STACK_SIZE> cliStack;
|
||||||
Fifo<256> cliRxFifo;
|
Fifo<256> cliRxFifo;
|
||||||
uint8_t cliTracesEnabled = true;
|
uint8_t cliTracesEnabled = true;
|
||||||
|
// char cliLastLine[CLI_COMMAND_MAX_LEN+1];
|
||||||
|
|
||||||
typedef int (* CliFunction) (const char ** args);
|
typedef int (* CliFunction) (const char ** args);
|
||||||
|
int cliExecLine(char * line);
|
||||||
|
int cliExecCommand(const char ** argv);
|
||||||
|
int cliHelp(const char ** argv);
|
||||||
|
|
||||||
struct CliCommand
|
struct CliCommand
|
||||||
{
|
{
|
||||||
|
@ -326,7 +330,27 @@ int cliDebugVars(const char ** argv)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int cliHelp(const char ** argv);
|
int cliRepeat(const char ** argv)
|
||||||
|
{
|
||||||
|
int interval = 0;
|
||||||
|
int counter = 0;
|
||||||
|
if (toInt(argv, 1, &interval) > 0 && argv[2]) {
|
||||||
|
interval *= 50;
|
||||||
|
counter = interval;
|
||||||
|
uint8_t c;
|
||||||
|
while (!cliRxFifo.pop(c) || !(c == '\r' || c == '\n' || c == ' ')) {
|
||||||
|
CoTickDelay(10); // 20ms
|
||||||
|
if (++counter >= interval) {
|
||||||
|
cliExecCommand(&argv[2]);
|
||||||
|
counter = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
serialPrint("%s: Invalid arguments", argv[0]);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
const CliCommand cliCommands[] = {
|
const CliCommand cliCommands[] = {
|
||||||
{ "beep", cliBeep, "[<frequency>] [<duration>]" },
|
{ "beep", cliBeep, "[<frequency>] [<duration>]" },
|
||||||
|
@ -342,6 +366,7 @@ const CliCommand cliCommands[] = {
|
||||||
#endif
|
#endif
|
||||||
{ "help", cliHelp, "[<command>]" },
|
{ "help", cliHelp, "[<command>]" },
|
||||||
{ "debugvars", cliDebugVars, "" },
|
{ "debugvars", cliDebugVars, "" },
|
||||||
|
{ "repeat", cliRepeat, "<interval> <command>" },
|
||||||
{ NULL, NULL, NULL } /* sentinel */
|
{ NULL, NULL, NULL } /* sentinel */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -423,6 +448,7 @@ void cliTask(void * pdata)
|
||||||
// enter
|
// enter
|
||||||
serialCrlf();
|
serialCrlf();
|
||||||
line[pos] = '\0';
|
line[pos] = '\0';
|
||||||
|
// strcpy(cliLastLine, line);
|
||||||
cliExecLine(line);
|
cliExecLine(line);
|
||||||
pos = 0;
|
pos = 0;
|
||||||
cliPrompt();
|
cliPrompt();
|
||||||
|
|
|
@ -1005,7 +1005,16 @@ enum Analogs {
|
||||||
STICK2,
|
STICK2,
|
||||||
STICK3,
|
STICK3,
|
||||||
STICK4,
|
STICK4,
|
||||||
#if defined(PCBFLAMENCO)
|
#if defined(PCBHORUS)
|
||||||
|
POT1,
|
||||||
|
POT2,
|
||||||
|
POT3,
|
||||||
|
POT_LAST=POT3,
|
||||||
|
SLIDER1,
|
||||||
|
SLIDER2,
|
||||||
|
SLIDER3,
|
||||||
|
SLIDER4,
|
||||||
|
#elif defined(PCBFLAMENCO)
|
||||||
POT1,
|
POT1,
|
||||||
POT2,
|
POT2,
|
||||||
POT_LAST = POT2,
|
POT_LAST = POT2,
|
||||||
|
@ -1049,6 +1058,10 @@ enum Analogs {
|
||||||
TX_VOLTAGE,
|
TX_VOLTAGE,
|
||||||
#if defined(PCBSKY9X) && !defined(REVA)
|
#if defined(PCBSKY9X) && !defined(REVA)
|
||||||
TX_CURRENT,
|
TX_CURRENT,
|
||||||
|
#endif
|
||||||
|
#if defined(PCBHORUS)
|
||||||
|
MOUSE1,
|
||||||
|
MOUSE2,
|
||||||
#endif
|
#endif
|
||||||
NUMBER_ANALOG
|
NUMBER_ANALOG
|
||||||
};
|
};
|
||||||
|
|
|
@ -36,87 +36,189 @@
|
||||||
|
|
||||||
#include "../../opentx.h"
|
#include "../../opentx.h"
|
||||||
|
|
||||||
#define STICK_LV 3
|
#define ADC_CS_HIGH() (ADC_SPI_GPIO->BSRRL = ADC_SPI_PIN_CS)
|
||||||
#define STICK_LH 2
|
#define ADC_CS_LOW() (ADC_SPI_GPIO->BSRRH = ADC_SPI_PIN_CS)
|
||||||
#define STICK_RV 0
|
|
||||||
#define STICK_RH 1
|
|
||||||
#define POT_L 13
|
|
||||||
#define POT_R 5
|
|
||||||
#define SLIDE_L 9
|
|
||||||
#define SLIDE_R 8
|
|
||||||
#define SWITCHES1 11
|
|
||||||
#define SWITCHES2 7
|
|
||||||
#define SWITCHES3 10
|
|
||||||
#define SWITCHES4 6
|
|
||||||
#define BATTERY 14
|
|
||||||
|
|
||||||
// Sample time should exceed 1uS
|
#define RESETCMD 0x4000
|
||||||
#define SAMPTIME 2 // sample time = 28 cycles
|
#define MANUAL_MODE 0x1000 // manual mode channel 0
|
||||||
|
|
||||||
|
#define SAMPTIME 2 // sample time = 28 cycles
|
||||||
|
|
||||||
uint16_t Analog_values[NUMBER_ANALOG] __DMA;
|
uint16_t Analog_values[NUMBER_ANALOG] __DMA;
|
||||||
|
|
||||||
#define NUMBER_ANALOG_ADC1 13
|
static u16 SPIx_ReadWriteByte(uint16_t value)
|
||||||
|
{
|
||||||
|
while(SPI_I2S_GetFlagStatus(ADC_SPI,SPI_I2S_FLAG_TXE) == RESET);
|
||||||
|
SPI_I2S_SendData(ADC_SPI,value);
|
||||||
|
|
||||||
#if 0
|
while(SPI_I2S_GetFlagStatus(ADC_SPI,SPI_I2S_FLAG_RXNE) ==RESET);
|
||||||
const int8_t ana_direction[NUMBER_ANALOG] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
|
return SPI_I2S_ReceiveData(ADC_SPI);
|
||||||
#endif
|
}
|
||||||
|
|
||||||
|
static void ADS7952_Init()
|
||||||
|
{
|
||||||
|
GPIO_InitTypeDef GPIO_InitStructure;
|
||||||
|
SPI_InitTypeDef SPI_InitStructure;
|
||||||
|
|
||||||
|
GPIO_InitStructure.GPIO_Pin = ADC_SPI_PIN_MISO|ADC_SPI_PIN_SCK|ADC_SPI_PIN_MOSI;
|
||||||
|
GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;
|
||||||
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
|
||||||
|
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
||||||
|
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
|
||||||
|
GPIO_Init(ADC_SPI_GPIO, &GPIO_InitStructure);
|
||||||
|
|
||||||
|
GPIO_InitStructure.GPIO_Pin = ADC_SPI_PIN_CS;
|
||||||
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
|
||||||
|
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
||||||
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||||
|
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
|
||||||
|
GPIO_Init(ADC_SPI_GPIO, &GPIO_InitStructure);
|
||||||
|
|
||||||
|
GPIO_PinAFConfig(ADC_SPI_GPIO, ADC_SPI_PinSource_SCK, ADC_GPIO_AF);
|
||||||
|
GPIO_PinAFConfig(ADC_SPI_GPIO, ADC_SPI_PinSource_MISO, ADC_GPIO_AF);
|
||||||
|
GPIO_PinAFConfig(ADC_SPI_GPIO, ADC_SPI_PinSource_MOSI, ADC_GPIO_AF);
|
||||||
|
|
||||||
|
SPI_I2S_DeInit(ADC_SPI);
|
||||||
|
|
||||||
|
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
|
||||||
|
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
|
||||||
|
SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b;
|
||||||
|
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
|
||||||
|
SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
|
||||||
|
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
|
||||||
|
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_8;
|
||||||
|
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
|
||||||
|
SPI_InitStructure.SPI_CRCPolynomial = 7;
|
||||||
|
SPI_Init(ADC_SPI,&SPI_InitStructure);
|
||||||
|
SPI_Cmd(ADC_SPI,ENABLE);
|
||||||
|
SPI_I2S_ITConfig(ADC_SPI,SPI_I2S_IT_TXE,DISABLE);
|
||||||
|
SPI_I2S_ITConfig(ADC_SPI,SPI_I2S_IT_RXNE,DISABLE);
|
||||||
|
|
||||||
|
ADC_CS_HIGH();
|
||||||
|
delay_01us(1);
|
||||||
|
ADC_CS_LOW();
|
||||||
|
SPIx_ReadWriteByte(RESETCMD);
|
||||||
|
ADC_CS_HIGH();
|
||||||
|
delay_01us(1);
|
||||||
|
ADC_CS_LOW();
|
||||||
|
SPIx_ReadWriteByte(MANUAL_MODE);
|
||||||
|
ADC_CS_HIGH();
|
||||||
|
|
||||||
|
// SPIx_ReadWriteByte(ProgramReg_Auto2 );
|
||||||
|
// ADC_CS_HIGH();
|
||||||
|
|
||||||
|
// asm("nop");
|
||||||
|
// ADC_CS_LOW();
|
||||||
|
// SPIx_ReadWriteByte(AutoMode_2);
|
||||||
|
// ADC_CS_HIGH();
|
||||||
|
|
||||||
|
// asm("nop");
|
||||||
|
// ADC_CS_LOW();
|
||||||
|
// SPIx_ReadWriteByte(ContinuedSelectMode);
|
||||||
|
// ADC_CS_HIGH();
|
||||||
|
// asm("nop");
|
||||||
|
}
|
||||||
|
|
||||||
void adcInit()
|
void adcInit()
|
||||||
{
|
{
|
||||||
return ;
|
RCC_AHB1PeriphClockCmd(ADC_RCC_AHB1Periph, ENABLE);
|
||||||
|
RCC_APB2PeriphClockCmd(ADC_RCC_APB2Periph, ENABLE);
|
||||||
|
|
||||||
// Enable clocks
|
ADS7952_Init();
|
||||||
RCC->APB2ENR |= RCC_APB2ENR_ADC1EN;
|
|
||||||
RCC->AHB1ENR |= ADC_RCC_AHB1Periph_GPIO | RCC_AHB1ENR_DMA2EN;
|
|
||||||
|
|
||||||
configure_pins(ADC_GPIO_PIN_STICK_LV | ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_STICK_RH |
|
configure_pins( ADC_GPIO_PIN_MOUSE1 | ADC_GPIO_PIN_MOUSE2, PIN_ANALOG | PIN_PORTF );
|
||||||
ADC_GPIO_PIN_POT_R1 | ADC_GPIO_SWITCHES_PIN_R3 | ADC_GPIO_SWITCHES_PIN_R4, PIN_ANALOG | PIN_PORTA);
|
|
||||||
|
ADC3->CR1 = ADC_CR1_SCAN;
|
||||||
configure_pins(ADC_GPIO_PIN_POT_R2 | ADC_GPIO_PIN_POT_L2, PIN_ANALOG | PIN_PORTB);
|
ADC3->CR2 = ADC_CR2_ADON | ADC_CR2_DMA | ADC_CR2_DDS;
|
||||||
|
ADC3->SQR1 = (2-1) << 20; // NUMBER_ANALOG Channels
|
||||||
configure_pins(ADC_GPIO_PIN_POT_L1 | ADC_GPIO_SWITCHES_PIN_L3 | ADC_GPIO_SWITCHES_PIN_L4 | ADC_GPIO_PIN_BATT, PIN_ANALOG | PIN_PORTC);
|
ADC3->SQR3 = ADC_IN_MOUSE1 + (ADC_IN_MOUSE2<<5);
|
||||||
|
ADC3->SMPR1 = SAMPTIME + (SAMPTIME<<3) + (SAMPTIME<<6) + (SAMPTIME<<9) + (SAMPTIME<<12)
|
||||||
ADC1->CR1 = ADC_CR1_SCAN;
|
+ (SAMPTIME<<15) + (SAMPTIME<<18) + (SAMPTIME<<21) + (SAMPTIME<<24);
|
||||||
ADC1->CR2 = ADC_CR2_ADON | ADC_CR2_DMA | ADC_CR2_DDS;
|
ADC3->SMPR2 = SAMPTIME + (SAMPTIME<<3) + (SAMPTIME<<6) + (SAMPTIME<<9) + (SAMPTIME<<12)
|
||||||
ADC1->SQR1 = (BATTERY<<0) + ((NUMBER_ANALOG_ADC1-1) << 20); // bits 23:20 = number of conversions
|
+ (SAMPTIME<<15) + (SAMPTIME<<18) + (SAMPTIME<<21) + (SAMPTIME<<24) + (SAMPTIME<<27);
|
||||||
ADC1->SQR2 = (SLIDE_L<<0) + (SLIDE_R<<5) + (SWITCHES1<<10) + (SWITCHES2<<15) + (SWITCHES3<<20) + (SWITCHES4<<25); // conversions 7 to 12
|
ADC->CCR = 0; // ADC_CCR_ADCPRE_0; Clock div 2
|
||||||
ADC1->SQR3 = (STICK_LH<<0) + (STICK_LV<<5) + (STICK_RV<<10) + (STICK_RH<<15) + (POT_L<<20) + (POT_R<<25); // conversions 1 to 6
|
|
||||||
ADC1->SMPR1 = SAMPTIME + (SAMPTIME<<3) + (SAMPTIME<<6) + (SAMPTIME<<9) + (SAMPTIME<<12) + (SAMPTIME<<15) + (SAMPTIME<<18) + (SAMPTIME<<21) + (SAMPTIME<<24);
|
// Enable the DMA channel here, DMA2 stream 1, channel 2
|
||||||
ADC1->SMPR2 = SAMPTIME + (SAMPTIME<<3) + (SAMPTIME<<6) + (SAMPTIME<<9) + (SAMPTIME<<12) + (SAMPTIME<<15) + (SAMPTIME<<18) + (SAMPTIME<<21) + (SAMPTIME<<24) + (SAMPTIME<<27) ;
|
DMA2_Stream1->CR = DMA_SxCR_PL | DMA_SxCR_CHSEL_1 | DMA_SxCR_MSIZE_0 | DMA_SxCR_PSIZE_0 | DMA_SxCR_MINC;
|
||||||
|
DMA2_Stream1->PAR = (uint32_t) &ADC3->DR;
|
||||||
ADC->CCR = 0 ; //ADC_CCR_ADCPRE_0 ; // Clock div 2
|
DMA2_Stream1->M0AR = (uint32_t) &Analog_values[MOUSE1];
|
||||||
|
DMA2_Stream1->FCR = DMA_SxFCR_DMDIS | DMA_SxFCR_FTH_0;
|
||||||
DMA2_Stream0->CR = DMA_SxCR_PL | DMA_SxCR_MSIZE_0 | DMA_SxCR_PSIZE_0 | DMA_SxCR_MINC;
|
|
||||||
DMA2_Stream0->PAR = CONVERT_PTR_UINT(&ADC1->DR);
|
|
||||||
DMA2_Stream0->M0AR = CONVERT_PTR_UINT(Analog_values);
|
|
||||||
DMA2_Stream0->NDTR = NUMBER_ANALOG_ADC1;
|
|
||||||
DMA2_Stream0->FCR = DMA_SxFCR_DMDIS | DMA_SxFCR_FTH_0 ;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define SPI_STICK1 0
|
||||||
|
#define SPI_STICK2 1
|
||||||
|
#define SPI_STICK3 2
|
||||||
|
#define SPI_STICK4 3
|
||||||
|
#define SPI_POT1 4
|
||||||
|
#define SPI_POT2 5
|
||||||
|
#define SPI_POT3 6
|
||||||
|
#define SPI_SLIDER1 7
|
||||||
|
#define SPI_SLIDER2 8
|
||||||
|
#define SPI_TX_VOLTAGE 9
|
||||||
|
#define SPI_SLIDER3 10
|
||||||
|
#define SPI_SLIDER4 11
|
||||||
|
|
||||||
|
const uint16_t adcCommands[MOUSE1+2] =
|
||||||
|
{
|
||||||
|
MANUAL_MODE | ( SPI_STICK1 << 7 ),
|
||||||
|
MANUAL_MODE | ( SPI_STICK2 << 7 ),
|
||||||
|
MANUAL_MODE | ( SPI_STICK3 << 7 ),
|
||||||
|
MANUAL_MODE | ( SPI_STICK4 << 7 ),
|
||||||
|
MANUAL_MODE | ( SPI_POT1 << 7 ),
|
||||||
|
MANUAL_MODE | ( SPI_POT2 << 7 ),
|
||||||
|
MANUAL_MODE | ( SPI_POT3 << 7 ),
|
||||||
|
MANUAL_MODE | ( SPI_SLIDER1 << 7 ),
|
||||||
|
MANUAL_MODE | ( SPI_SLIDER2 << 7 ),
|
||||||
|
MANUAL_MODE | ( SPI_SLIDER3 << 7 ),
|
||||||
|
MANUAL_MODE | ( SPI_SLIDER4 << 7 ),
|
||||||
|
MANUAL_MODE | ( SPI_TX_VOLTAGE << 7 ),
|
||||||
|
MANUAL_MODE | ( 0 << 7 ),
|
||||||
|
MANUAL_MODE | ( 0 << 7 )
|
||||||
|
};
|
||||||
|
|
||||||
void adcRead()
|
void adcRead()
|
||||||
{
|
{
|
||||||
return ;
|
const uint16_t * command = adcCommands;
|
||||||
|
|
||||||
DMA2_Stream0->CR &= ~DMA_SxCR_EN ; // Disable DMA
|
// Start on chip ADC read
|
||||||
ADC1->SR &= ~(uint32_t) ( ADC_SR_EOC | ADC_SR_STRT | ADC_SR_OVR ) ;
|
DMA2_Stream1->CR &= ~DMA_SxCR_EN; // Disable DMA
|
||||||
DMA2->LIFCR = DMA_LIFCR_CTCIF0 | DMA_LIFCR_CHTIF0 |DMA_LIFCR_CTEIF0 | DMA_LIFCR_CDMEIF0 | DMA_LIFCR_CFEIF0 ; // Write ones to clear bits
|
ADC3->SR &= ~(uint32_t) ( ADC_SR_EOC | ADC_SR_STRT | ADC_SR_OVR );
|
||||||
DMA2_Stream0->CR |= DMA_SxCR_EN ; // Enable DMA
|
DMA2->LIFCR = DMA_LIFCR_CTCIF1 | DMA_LIFCR_CHTIF1 |DMA_LIFCR_CTEIF1 | DMA_LIFCR_CDMEIF1 | DMA_LIFCR_CFEIF1; // Write ones to clear bits
|
||||||
ADC1->CR2 |= (uint32_t)ADC_CR2_SWSTART ;
|
DMA2_Stream1->M0AR = (uint32_t) &Analog_values[MOUSE1];
|
||||||
for (unsigned int i=0; i<10000; i++) {
|
DMA2_Stream1->NDTR = 2;
|
||||||
if (DMA2->LISR & DMA_LISR_TCIF0) {
|
DMA2_Stream1->CR |= DMA_SxCR_EN; // Enable DMA
|
||||||
|
ADC3->CR2 |= (uint32_t)ADC_CR2_SWSTART;
|
||||||
|
|
||||||
|
ADC_CS_LOW();
|
||||||
|
delay_01us(1);
|
||||||
|
SPIx_ReadWriteByte(*command++); // Discard
|
||||||
|
ADC_CS_HIGH();
|
||||||
|
delay_01us(1);
|
||||||
|
|
||||||
|
ADC_CS_LOW();
|
||||||
|
delay_01us(1);
|
||||||
|
SPIx_ReadWriteByte(*command++); // Discard
|
||||||
|
ADC_CS_HIGH();
|
||||||
|
delay_01us(1);
|
||||||
|
|
||||||
|
for (uint32_t adcIndex=0; adcIndex<MOUSE1; adcIndex++) {
|
||||||
|
ADC_CS_LOW();
|
||||||
|
delay_01us(1);
|
||||||
|
Analog_values[adcIndex] = (0x0fff & SPIx_ReadWriteByte(*command++));
|
||||||
|
ADC_CS_HIGH();
|
||||||
|
delay_01us(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (uint32_t i=0; i<20000; i++) {
|
||||||
|
if (DMA2->LISR & DMA_LISR_TCIF1) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
DMA2_Stream0->CR &= ~DMA_SxCR_EN ; // Disable DMA
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO
|
// On chip ADC read should have finished
|
||||||
void adcStop()
|
|
||||||
{
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t getAnalogValue(uint32_t value)
|
uint16_t getAnalogValue(uint32_t value)
|
||||||
{
|
{
|
||||||
// return Analog_values[ana_mapping[value]];
|
return Analog_values[value];
|
||||||
return 0; // Analog_values[value];
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -167,7 +167,7 @@ void boardInit()
|
||||||
TRACE("Horus started :)");
|
TRACE("Horus started :)");
|
||||||
|
|
||||||
keysInit();
|
keysInit();
|
||||||
// adcInit();
|
adcInit();
|
||||||
lcdInit();
|
lcdInit();
|
||||||
audioInit();
|
audioInit();
|
||||||
i2cInit();
|
i2cInit();
|
||||||
|
|
|
@ -77,39 +77,40 @@ extern "C" {
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define FLASHSIZE 0x80000
|
#define FLASHSIZE 0x80000
|
||||||
#define BOOTLOADER_SIZE 0x8000
|
#define BOOTLOADER_SIZE 0x8000
|
||||||
#define FIRMWARE_ADDRESS 0x08000000
|
#define FIRMWARE_ADDRESS 0x08000000
|
||||||
|
|
||||||
#define PERI1_FREQUENCY 45000000
|
#define PERI1_FREQUENCY 45000000
|
||||||
#define PERI2_FREQUENCY 90000000
|
#define PERI2_FREQUENCY 90000000
|
||||||
#define TIMER_MULT_APB1 4
|
#define TIMER_MULT_APB1 4
|
||||||
#define TIMER_MULT_APB2 2
|
#define TIMER_MULT_APB2 2
|
||||||
|
|
||||||
#define PIN_MODE_MASK 0x0003
|
#define PIN_MODE_MASK 0x0003
|
||||||
#define PIN_INPUT 0x0000
|
#define PIN_INPUT 0x0000
|
||||||
#define PIN_OUTPUT 0x0001
|
#define PIN_OUTPUT 0x0001
|
||||||
#define PIN_PERIPHERAL 0x0002
|
#define PIN_PERIPHERAL 0x0002
|
||||||
#define PIN_ANALOG 0x0003
|
#define PIN_ANALOG 0x0003
|
||||||
#define PIN_PULL_MASK 0x000C
|
#define PIN_PULL_MASK 0x000C
|
||||||
#define PIN_PULLUP 0x0004
|
#define PIN_PULLUP 0x0004
|
||||||
#define PIN_NO_PULLUP 0x0000
|
#define PIN_NO_PULLUP 0x0000
|
||||||
#define PIN_PULLDOWN 0x0008
|
#define PIN_PULLDOWN 0x0008
|
||||||
#define PIN_NO_PULLDOWN 0x0000
|
#define PIN_NO_PULLDOWN 0x0000
|
||||||
#define PIN_PERI_MASK 0x00F0
|
#define PIN_PERI_MASK 0x00F0
|
||||||
#define PIN_PUSHPULL 0x0000
|
#define PIN_PUSHPULL 0x0000
|
||||||
#define PIN_ODRAIN 0x8000
|
#define PIN_ODRAIN 0x8000
|
||||||
#define PIN_PORT_MASK 0x0700
|
#define PIN_PORT_MASK 0x0700
|
||||||
#define PIN_SPEED_MASK 0x6000
|
#define PIN_SPEED_MASK 0x6000
|
||||||
#define PIN_PORTA 0x0000
|
#define PIN_PORTA 0x0000
|
||||||
#define PIN_PORTB 0x0100
|
#define PIN_PORTB 0x0100
|
||||||
#define PIN_PORTC 0x0200
|
#define PIN_PORTC 0x0200
|
||||||
#define PIN_PER_1 0x0010
|
#define PIN_PORTF 0x0500
|
||||||
#define PIN_PER_2 0x0020
|
#define PIN_PER_1 0x0010
|
||||||
#define PIN_PER_3 0x0030
|
#define PIN_PER_2 0x0020
|
||||||
#define PIN_OS25 0x2000
|
#define PIN_PER_3 0x0030
|
||||||
#define PIN_OS50 0x4000
|
#define PIN_OS25 0x2000
|
||||||
#define PIN_OS100 0x6000
|
#define PIN_OS50 0x4000
|
||||||
|
#define PIN_OS100 0x6000
|
||||||
|
|
||||||
void configure_pins( uint32_t pins, uint16_t config );
|
void configure_pins( uint32_t pins, uint16_t config );
|
||||||
|
|
||||||
|
|
|
@ -90,30 +90,22 @@
|
||||||
#define KEYS_GPIOJ_PINS (SWITCHES_GPIO_PIN_D_H | TRIMS_GPIO_PIN_RVU | TRIMS_GPIO_PIN_LVD | TRIMS_GPIO_PIN_LVU | TRIMS_GPIO_PIN_RSD)
|
#define KEYS_GPIOJ_PINS (SWITCHES_GPIO_PIN_D_H | TRIMS_GPIO_PIN_RVU | TRIMS_GPIO_PIN_LVD | TRIMS_GPIO_PIN_LVU | TRIMS_GPIO_PIN_RSD)
|
||||||
|
|
||||||
// ADC
|
// ADC
|
||||||
#define ADC_RCC_AHB1Periph_GPIO (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC)
|
#define ADC_RCC_AHB1Periph (RCC_AHB1Periph_GPIOE | RCC_AHB1Periph_GPIOF | RCC_AHB1Periph_DMA2)
|
||||||
#define ADC_GPIO_STICKS GPIOA
|
#define ADC_RCC_APB2Periph (RCC_APB2Periph_SPI4 | RCC_APB2Periph_ADC3)
|
||||||
#define ADC_GPIO_PIN_STICK_LV GPIO_Pin_0 // PA.00
|
#define ADC_SPI SPI4
|
||||||
#define ADC_GPIO_PIN_STICK_LH GPIO_Pin_1 // PA.01
|
#define ADC_GPIO_AF GPIO_AF_SPI4
|
||||||
#define ADC_GPIO_PIN_STICK_RV GPIO_Pin_2 // PA.02
|
#define ADC_SPI_GPIO GPIOE
|
||||||
#define ADC_GPIO_PIN_STICK_RH GPIO_Pin_3 // PA.03
|
#define ADC_SPI_PIN_SCK GPIO_Pin_2
|
||||||
#define ADC_GPIO_POT_L1 GPIOC
|
#define ADC_SPI_PIN_CS GPIO_Pin_4
|
||||||
#define ADC_GPIO_PIN_POT_L1 GPIO_Pin_3 // PC.03
|
#define ADC_SPI_PIN_MOSI GPIO_Pin_6
|
||||||
#define ADC_GPIO_POT_R1 GPIOA
|
#define ADC_SPI_PIN_MISO GPIO_Pin_5
|
||||||
#define ADC_GPIO_PIN_POT_R1 GPIO_Pin_5 // PA.05
|
#define ADC_SPI_PinSource_SCK GPIO_PinSource2
|
||||||
#define ADC_GPIO_POT_L2 GPIOB
|
#define ADC_SPI_PinSource_MISO GPIO_PinSource5
|
||||||
#define ADC_GPIO_PIN_POT_L2 GPIO_Pin_1 // PB.01
|
#define ADC_SPI_PinSource_MOSI GPIO_PinSource6
|
||||||
#define ADC_GPIO_POT_R2 GPIOB
|
#define ADC_GPIO_PIN_MOUSE1 GPIO_Pin_8 // PF.8 ADC3_IN6 J5 MOUSE_X
|
||||||
#define ADC_GPIO_PIN_POT_R2 GPIO_Pin_0 // PB.00
|
#define ADC_GPIO_PIN_MOUSE2 GPIO_Pin_9 // PF.9 ADC3_IN7 J6 MOUSE_Y
|
||||||
#define ADC_GPIO_SWITCHES_L3 GPIOC
|
#define ADC_IN_MOUSE1 6
|
||||||
#define ADC_GPIO_SWITCHES_PIN_L3 GPIO_Pin_1 // PC.01
|
#define ADC_IN_MOUSE2 7
|
||||||
#define ADC_GPIO_SWITCHES_R3 GPIOA
|
|
||||||
#define ADC_GPIO_SWITCHES_PIN_R3 GPIO_Pin_7 // PA.07
|
|
||||||
#define ADC_GPIO_SWITCHES_L4 GPIOC
|
|
||||||
#define ADC_GPIO_SWITCHES_PIN_L4 GPIO_Pin_0 // PC.00
|
|
||||||
#define ADC_GPIO_SWITCHES_R4 GPIOA
|
|
||||||
#define ADC_GPIO_SWITCHES_PIN_R4 GPIO_Pin_6 // PA.06
|
|
||||||
#define ADC_GPIO_BATT GPIOC
|
|
||||||
#define ADC_GPIO_PIN_BATT GPIO_Pin_4 // PC.04
|
|
||||||
|
|
||||||
// Power
|
// Power
|
||||||
#define PWR_RCC_AHB1Periph_GPIO RCC_AHB1Periph_GPIOJ
|
#define PWR_RCC_AHB1Periph_GPIO RCC_AHB1Periph_GPIOJ
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue