Configurable CS pin flash chip (#345)
* fix building with spi flash as config storage * Fixing build with spi flash as EEPROM. Changed some pin numbers to match the board i am designing and testing now. * Now cs pin for spi eeprom is settable by flag in build enviroment. * Correct overflow for 32bit timers * fix pins PA0-PA5 on some f407 boards * Enable access to SRAM Backup domain at boot * Add missing callback functions * Change timer resolutions. Corrects idle/aux timer frequencies * 32 bit overflow only for STM32F4 * Update platformio.ini debug tool added as default * fix building with spi flash as config storage * Fixing build with spi flash as EEPROM. Changed some pin numbers to match the board i am designing and testing now. * Now cs pin for spi eeprom is settable by flag in build enviroment. * Update platformio.ini debug tool added as default * Update cancomms.ino Removed CAN build on black_F407VE for now. It needs fixing the build fails otherwise. Co-authored-by: hoogendijkta <tjeerdie@users.noreply.github.com> Co-authored-by: iLeeeZi <ilari.vehniainen@hotmail.fi>
This commit is contained in:
parent
127bc1585a
commit
fae9ab5a6b
|
@ -28,7 +28,7 @@ platform=teensy
|
||||||
board=teensy35
|
board=teensy35
|
||||||
framework=arduino
|
framework=arduino
|
||||||
lib_deps = EEPROM, FlexCAN, SD
|
lib_deps = EEPROM, FlexCAN, SD
|
||||||
build_flags = -DUSE_MC33810 ;-DUSE_SPI_EEPROM
|
build_flags = -DUSE_MC33810 ;-DUSE_SPI_EEPROM=6
|
||||||
|
|
||||||
[env:teensy40]
|
[env:teensy40]
|
||||||
platform=teensy
|
platform=teensy
|
||||||
|
@ -66,11 +66,11 @@ platform = ststm32
|
||||||
framework = arduino
|
framework = arduino
|
||||||
;board = genericSTM32F407VET6
|
;board = genericSTM32F407VET6
|
||||||
board = black_f407ve
|
board = black_f407ve
|
||||||
lib_deps = EEPROM
|
;lib_deps = EEPROM
|
||||||
board_build.core = stm32
|
board_build.core = stm32
|
||||||
;build_flags = -fpermissive -std=gnu++11 -UBOARD_NR_GPIO_PINS -DCORE_STM32_OFFICIAL -DSRAM_AS_EEPROM
|
build_flags = -fpermissive -std=gnu++11 -UBOARD_NR_GPIO_PINS -DARDUINO_BLACK_F407VE -DCORE_STM32_OFFICIAL -DUSE_SPI_EEPROM=56 -DUSBCON -DUSBD_VID=0x0483 "-DUSB_MANUFACTURER=\"Unknown\"" "-DUSB_PRODUCT=\"BLACK_F407VE\"" -DHAL_PCD_MODULE_ENABLED -DUSBD_USE_CDC -DHAL_UART_MODULE_ENABLED
|
||||||
build_flags = -fpermissive -std=gnu++11 -UBOARD_NR_GPIO_PINS -DCORE_STM32_OFFICIAL -DSPIFLASH_AS_EEPROM -DUSBCON -DUSBD_VID=0x0483 "-DUSB_MANUFACTURER=\"Unknown\"" "-DUSB_PRODUCT=\"BLACK_F407VE\"" -DHAL_PCD_MODULE_ENABLED -DUSBD_USE_CDC -DHAL_UART_MODULE_ENABLED
|
|
||||||
upload_protocol = stlink
|
upload_protocol = stlink
|
||||||
|
debug_tool = stlink
|
||||||
|
|
||||||
[env:bluepill_f103c8]
|
[env:bluepill_f103c8]
|
||||||
platform = ststm32
|
platform = ststm32
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
#define micros_safe() micros() //timer5 method is not used on anything but AVR, the micros_safe() macro is simply an alias for the normal micros()
|
#define micros_safe() micros() //timer5 method is not used on anything but AVR, the micros_safe() macro is simply an alias for the normal micros()
|
||||||
#if defined(SRAM_AS_EEPROM)
|
#if defined(SRAM_AS_EEPROM)
|
||||||
#define EEPROM_LIB_H "src/BackupSram/BackupSramAsEEPROM.h"
|
#define EEPROM_LIB_H "src/BackupSram/BackupSramAsEEPROM.h"
|
||||||
#elif defined(USE_SPI_FLASH)
|
#elif defined(USE_SPI_EEPROM)
|
||||||
#define EEPROM_LIB_H "src/SPIAsEEPROM/SPIAsEEPROM.h"
|
#define EEPROM_LIB_H "src/SPIAsEEPROM/SPIAsEEPROM.h"
|
||||||
#elif defined(FRAM_AS_EEPROM) //https://github.com/VitorBoss/FRAM
|
#elif defined(FRAM_AS_EEPROM) //https://github.com/VitorBoss/FRAM
|
||||||
#define EEPROM_LIB_H <Fram.h>
|
#define EEPROM_LIB_H <Fram.h>
|
||||||
|
|
|
@ -5,9 +5,11 @@
|
||||||
#include "idle.h"
|
#include "idle.h"
|
||||||
#include "scheduler.h"
|
#include "scheduler.h"
|
||||||
#include "HardwareTimer.h"
|
#include "HardwareTimer.h"
|
||||||
|
#ifdef USE_SPI_EEPROM
|
||||||
|
//We need to include and make a instance of the SPI flash EEPROM emulation if flag is set.
|
||||||
|
#include "src/SPIAsEEPROM/SPIAsEEPROM.h"
|
||||||
|
SPIAsEEPROM EEPROM;
|
||||||
|
#endif
|
||||||
|
|
||||||
void initBoard()
|
void initBoard()
|
||||||
{
|
{
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
#include BOARD_H //Note that this is not a real file, it is defined in globals.h.
|
#include BOARD_H //Note that this is not a real file, it is defined in globals.h.
|
||||||
#include EEPROM_LIB_H
|
#include EEPROM_LIB_H
|
||||||
|
|
||||||
|
|
||||||
void initialiseAll()
|
void initialiseAll()
|
||||||
{
|
{
|
||||||
fpPrimed = false;
|
fpPrimed = false;
|
||||||
|
@ -1304,14 +1305,14 @@ void setPinMapping(byte boardID)
|
||||||
//******** PORTA CONNECTIONS ***************
|
//******** PORTA CONNECTIONS ***************
|
||||||
//******************************************
|
//******************************************
|
||||||
/* = PA0 */ //Wakeup ADC123
|
/* = PA0 */ //Wakeup ADC123
|
||||||
pinTPS = PA1; //ADC123
|
// = PA1;
|
||||||
pinMAP = PA2; //ADC123
|
// = PA2;
|
||||||
pinIAT = PA3; //ADC123
|
// = PA3;
|
||||||
pinCLT = PA4; //ADC12
|
// = PA4;
|
||||||
pinO2 = PA5; //ADC12
|
/* = PA5; */ //ADC12
|
||||||
/* = PA6; */ //ADC12 LED_BUILTIN_1
|
pinFuelPump = PA6; //ADC12 LED_BUILTIN_1
|
||||||
pinFuelPump = PA7; //ADC12 LED_BUILTIN_2
|
/* = PA7; */ //ADC12 LED_BUILTIN_2
|
||||||
pinIdle1 = PA8; //
|
pinCoil3 = PA8;
|
||||||
/* = PA9 */ //TXD1
|
/* = PA9 */ //TXD1
|
||||||
/* = PA10 */ //RXD1
|
/* = PA10 */ //RXD1
|
||||||
/* = PA11 */ //(DO NOT USE FOR SPEEDUINO) USB
|
/* = PA11 */ //(DO NOT USE FOR SPEEDUINO) USB
|
||||||
|
@ -1332,10 +1333,12 @@ void setPinMapping(byte boardID)
|
||||||
/* = PB6; */ //NRF_CE
|
/* = PB6; */ //NRF_CE
|
||||||
/* = PB7; */ //NRF_CS
|
/* = PB7; */ //NRF_CS
|
||||||
/* = PB8; */ //NRF_IRQ
|
/* = PB8; */ //NRF_IRQ
|
||||||
pinIdle2 = PB9; //
|
pinCoil2 = PB9; //
|
||||||
/* = PB10; */ //TXD3
|
/* = PB9; */ //
|
||||||
/* = PB11; */ //RXD3
|
pinCoil4 = PB10; //TXD3
|
||||||
pinBoost = PB12; //
|
pinIdle1 = PB11; //RXD3
|
||||||
|
pinIdle2 = PB12; //
|
||||||
|
/* pinBoost = PB12; */ //
|
||||||
/* = PB13; */ //SPI2_SCK
|
/* = PB13; */ //SPI2_SCK
|
||||||
/* = PB14; */ //SPI2_MISO
|
/* = PB14; */ //SPI2_MISO
|
||||||
/* = PB15; */ //SPI2_MOSI
|
/* = PB15; */ //SPI2_MOSI
|
||||||
|
@ -1343,13 +1346,14 @@ void setPinMapping(byte boardID)
|
||||||
//******************************************
|
//******************************************
|
||||||
//******** PORTC CONNECTIONS ***************
|
//******** PORTC CONNECTIONS ***************
|
||||||
//******************************************
|
//******************************************
|
||||||
/* = PC0; */ //ADC123
|
pinMAP = PC0; //ADC123
|
||||||
pinBat = PC1; //ADC123
|
pinTPS = PC1; //ADC123
|
||||||
/* = PC2; */ //ADC123
|
pinIAT = PC2; //ADC123
|
||||||
/* = PC3; */ //ADC123
|
pinCLT = PC3; //ADC123
|
||||||
/* = PC4; */ //ADC12
|
pinO2 = PC4; //ADC12
|
||||||
/* = PC5; */ //ADC12
|
/* = PC5; */ //ADC12
|
||||||
pinVVT_1 = PC6; //
|
/*pinVVT_1 = PC6; */ //
|
||||||
|
pinBat = PC6; //
|
||||||
pinDisplayReset = PC7; //
|
pinDisplayReset = PC7; //
|
||||||
/* = PC8; */ //(DO NOT USE FOR SPEEDUINO) - SDIO_D0
|
/* = PC8; */ //(DO NOT USE FOR SPEEDUINO) - SDIO_D0
|
||||||
/* = PC9; */ //(DO NOT USE FOR SPEEDUINO) - SDIO_D1
|
/* = PC9; */ //(DO NOT USE FOR SPEEDUINO) - SDIO_D1
|
||||||
|
@ -1366,39 +1370,42 @@ void setPinMapping(byte boardID)
|
||||||
/* = PD0; */ //CANRX
|
/* = PD0; */ //CANRX
|
||||||
/* = PD1; */ //CANTX
|
/* = PD1; */ //CANTX
|
||||||
/* = PD2; */ //(DO NOT USE FOR SPEEDUINO) - SDIO_CMD
|
/* = PD2; */ //(DO NOT USE FOR SPEEDUINO) - SDIO_CMD
|
||||||
pinCoil1 = PD3; //
|
/* = PD3; */ //
|
||||||
pinCoil2 = PD4; //
|
/* = PD4; */ //
|
||||||
|
pinFlex = PD4;
|
||||||
/* = PD5;*/ //TXD2
|
/* = PD5;*/ //TXD2
|
||||||
/* = PD6; */ //RXD2
|
/* = PD6; */ //RXD2
|
||||||
pinCoil3 = PD7; //
|
pinCoil1 = PD7; //
|
||||||
pinCoil4 = PD8; //
|
/* = PD7; */ //
|
||||||
|
/* = PD8; */ //
|
||||||
pinCoil5 = PD9;//
|
pinCoil5 = PD9;//
|
||||||
pinFan = PD10; //
|
/* = PD10; */ //
|
||||||
/* = PD11; */ //
|
/* = PD11; */ //
|
||||||
/* = PD12; */ //
|
pinInjector1 = PD12; //
|
||||||
/* = PD13; */ //
|
pinInjector2 = PD13; //
|
||||||
/* = PD14; */ //
|
pinInjector3 = PD14; //
|
||||||
/* = PD15; */ //
|
pinInjector4 = PD15; //
|
||||||
|
|
||||||
//******************************************
|
//******************************************
|
||||||
//******** PORTE CONNECTIONS ***************
|
//******** PORTE CONNECTIONS ***************
|
||||||
//******************************************
|
//******************************************
|
||||||
pinStepperDir = PE0; //
|
pinTrigger = PE0; //
|
||||||
pinStepperStep = PE1; //
|
pinTrigger2 = PE1; //
|
||||||
pinStepperEnable = PE2; //
|
pinStepperEnable = PE2; //
|
||||||
/* = PE3; */ //ONBOARD KEY1
|
/* = PE3; */ //ONBOARD KEY1
|
||||||
/* = PE4; */ //ONBOARD KEY2
|
/* = PE4; */ //ONBOARD KEY2
|
||||||
pinFlex = PE5; //
|
pinStepperStep = PE5; //
|
||||||
pinTrigger = PE6; //
|
pinFan = PE6; //
|
||||||
pinInjector1 = PE7; //
|
pinStepperDir = PE7; //
|
||||||
pinInjector2 = PE8; //
|
/* = PE8; */ //
|
||||||
pinInjector3 = PE9; //
|
/* = PE9; */ //
|
||||||
pinInjector4 = PE10; //
|
/* = PE10; */ //
|
||||||
pinInjector5 = PE11; //
|
pinInjector5 = PE11; //
|
||||||
pinInjector6 = PE12; //
|
pinInjector6 = PE12; //
|
||||||
pinTrigger2 = PE13; //
|
/* = PE13; */ //
|
||||||
/* = PE14; */ //
|
/* = PE14; */ //
|
||||||
/* = PE15; */ //
|
/* = PE15; */ //
|
||||||
|
|
||||||
#elif defined(CORE_STM32)
|
#elif defined(CORE_STM32)
|
||||||
//blue pill wiki.stm32duino.com/index.php?title=Blue_Pill
|
//blue pill wiki.stm32duino.com/index.php?title=Blue_Pill
|
||||||
//Maple mini wiki.stm32duino.com/index.php?title=Maple_Mini
|
//Maple mini wiki.stm32duino.com/index.php?title=Maple_Mini
|
||||||
|
@ -1996,9 +2003,10 @@ void setPinMapping(byte boardID)
|
||||||
MC33810_BIT_IGN8 = 7;
|
MC33810_BIT_IGN8 = 7;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef USE_SPI_EEPROM
|
//CS pin number is now set in a compile flag.
|
||||||
pinSPIFlash_CS = 6;
|
// #ifdef USE_SPI_EEPROM
|
||||||
#endif
|
// pinSPIFlash_CS = 6;
|
||||||
|
// #endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
|
@ -2012,11 +2020,10 @@ void setPinMapping(byte boardID)
|
||||||
//******** PORTA CONNECTIONS ***************
|
//******** PORTA CONNECTIONS ***************
|
||||||
//******************************************
|
//******************************************
|
||||||
/* = PA0 */ //Wakeup ADC123
|
/* = PA0 */ //Wakeup ADC123
|
||||||
pinInjector1 = PA1;
|
// = PA1;
|
||||||
pinInjector2 = PA2;
|
// = PA2;
|
||||||
pinInjector3 = PA3;
|
// = PA3;
|
||||||
pinInjector4 = PA4;
|
// = PA4;
|
||||||
|
|
||||||
/* = PA5; */ //ADC12
|
/* = PA5; */ //ADC12
|
||||||
pinFuelPump = PA6; //ADC12 LED_BUILTIN_1
|
pinFuelPump = PA6; //ADC12 LED_BUILTIN_1
|
||||||
/* = PA7; */ //ADC12 LED_BUILTIN_2
|
/* = PA7; */ //ADC12 LED_BUILTIN_2
|
||||||
|
@ -2089,16 +2096,16 @@ void setPinMapping(byte boardID)
|
||||||
pinCoil5 = PD9;//
|
pinCoil5 = PD9;//
|
||||||
/* = PD10; */ //
|
/* = PD10; */ //
|
||||||
/* = PD11; */ //
|
/* = PD11; */ //
|
||||||
/* = PD12; */ //
|
pinInjector1 = PD12; //
|
||||||
pinTrigger = PD13; //
|
pinInjector2 = PD13; //
|
||||||
pinTrigger2 = PD14; //
|
pinInjector3 = PD14; //
|
||||||
/* = PD15; */ //
|
pinInjector4 = PD15; //
|
||||||
|
|
||||||
//******************************************
|
//******************************************
|
||||||
//******** PORTE CONNECTIONS ***************
|
//******** PORTE CONNECTIONS ***************
|
||||||
//******************************************
|
//******************************************
|
||||||
/* = PE0; */ //
|
pinTrigger = PE0; //
|
||||||
/* = PE1; */ //
|
pinTrigger2 = PE1; //
|
||||||
pinStepperEnable = PE2; //
|
pinStepperEnable = PE2; //
|
||||||
/* = PE3; */ //ONBOARD KEY1
|
/* = PE3; */ //ONBOARD KEY1
|
||||||
/* = PE4; */ //ONBOARD KEY2
|
/* = PE4; */ //ONBOARD KEY2
|
||||||
|
@ -2161,13 +2168,12 @@ void setPinMapping(byte boardID)
|
||||||
//******** PORTA CONNECTIONS ***************
|
//******** PORTA CONNECTIONS ***************
|
||||||
//******************************************
|
//******************************************
|
||||||
/* = PA0 */ //Wakeup ADC123
|
/* = PA0 */ //Wakeup ADC123
|
||||||
pinInjector1 = PA1;
|
// = PA1;
|
||||||
pinInjector2 = PA2;
|
// = PA2;
|
||||||
pinInjector3 = PA3;
|
// = PA3;
|
||||||
pinInjector4 = PA4;
|
// = PA4;
|
||||||
|
/* = PA5; */ //ADC12
|
||||||
pinFuelPump = PA5; //ADC12
|
pinFuelPump = PA6; //ADC12 LED_BUILTIN_1
|
||||||
/* = PA6; */ //ADC12 LED_BUILTIN_1
|
|
||||||
/* = PA7; */ //ADC12 LED_BUILTIN_2
|
/* = PA7; */ //ADC12 LED_BUILTIN_2
|
||||||
pinCoil3 = PA8;
|
pinCoil3 = PA8;
|
||||||
/* = PA9 */ //TXD1
|
/* = PA9 */ //TXD1
|
||||||
|
@ -2238,16 +2244,16 @@ void setPinMapping(byte boardID)
|
||||||
pinCoil5 = PD9;//
|
pinCoil5 = PD9;//
|
||||||
/* = PD10; */ //
|
/* = PD10; */ //
|
||||||
/* = PD11; */ //
|
/* = PD11; */ //
|
||||||
/* = PD12; */ //
|
pinInjector1 = PD12; //
|
||||||
pinTrigger = PD13; //
|
pinInjector2 = PD13; //
|
||||||
pinTrigger2 = PD14; //
|
pinInjector3 = PD14; //
|
||||||
/* = PD15; */ //
|
pinInjector4 = PD15; //
|
||||||
|
|
||||||
//******************************************
|
//******************************************
|
||||||
//******** PORTE CONNECTIONS ***************
|
//******** PORTE CONNECTIONS ***************
|
||||||
//******************************************
|
//******************************************
|
||||||
/* = PE0; */ //
|
pinTrigger = PE0; //
|
||||||
/* = PE1; */ //
|
pinTrigger2 = PE1; //
|
||||||
pinStepperEnable = PE2; //
|
pinStepperEnable = PE2; //
|
||||||
/* = PE3; */ //ONBOARD KEY1
|
/* = PE3; */ //ONBOARD KEY1
|
||||||
/* = PE4; */ //ONBOARD KEY2
|
/* = PE4; */ //ONBOARD KEY2
|
||||||
|
@ -2404,10 +2410,11 @@ void setPinMapping(byte boardID)
|
||||||
initMC33810();
|
initMC33810();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef USE_SPI_EEPROM
|
//CS pin number is now set in a compile flag.
|
||||||
//We need to send the flash CS (SS) pin if we're using SPI flash. It cannot read from globals.h
|
// #ifdef USE_SPI_EEPROM
|
||||||
EEPROM.begin(pinSPIFlash_CS);
|
// //We need to send the flash CS (SS) pin if we're using SPI flash. It cannot read from globals.
|
||||||
#endif
|
// EEPROM.begin(USE_SPI_EEPROM);
|
||||||
|
// #endif
|
||||||
|
|
||||||
tach_pin_port = portOutputRegister(digitalPinToPort(pinTachOut));
|
tach_pin_port = portOutputRegister(digitalPinToPort(pinTachOut));
|
||||||
tach_pin_mask = digitalPinToBitMask(pinTachOut);
|
tach_pin_mask = digitalPinToBitMask(pinTachOut);
|
||||||
|
|
|
@ -178,7 +178,7 @@ uint8_t SPIAsEEPROM::read(uint16_t addressEEPROM){
|
||||||
//The first 4 bytes of each page must have the magic number
|
//The first 4 bytes of each page must have the magic number
|
||||||
//version 0.1 does not check magic number
|
//version 0.1 does not check magic number
|
||||||
if(!SpiFlashAvialable){
|
if(!SpiFlashAvialable){
|
||||||
begin();
|
begin(USE_SPI_EEPROM);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -229,6 +229,6 @@ uint16_t SPIAsEEPROM::count(uint8_t buf[FLASH_PAGESIZE/BITS_PER_BYTE]){
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
SPIAsEEPROM EEPROM;
|
//SPIAsEEPROM EEPROM;
|
||||||
|
|
||||||
#endif
|
#endif
|
Loading…
Reference in New Issue