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:
Tjeerd 2020-04-18 00:04:03 +02:00 committed by GitHub
parent 127bc1585a
commit fae9ab5a6b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 89 additions and 80 deletions

View File

@ -28,7 +28,7 @@ platform=teensy
board=teensy35
framework=arduino
lib_deps = EEPROM, FlexCAN, SD
build_flags = -DUSE_MC33810 ;-DUSE_SPI_EEPROM
build_flags = -DUSE_MC33810 ;-DUSE_SPI_EEPROM=6
[env:teensy40]
platform=teensy
@ -66,11 +66,11 @@ platform = ststm32
framework = arduino
;board = genericSTM32F407VET6
board = black_f407ve
lib_deps = EEPROM
;lib_deps = EEPROM
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 -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
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
upload_protocol = stlink
debug_tool = stlink
[env:bluepill_f103c8]
platform = ststm32

View File

@ -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()
#if defined(SRAM_AS_EEPROM)
#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"
#elif defined(FRAM_AS_EEPROM) //https://github.com/VitorBoss/FRAM
#define EEPROM_LIB_H <Fram.h>

View File

@ -5,9 +5,11 @@
#include "idle.h"
#include "scheduler.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()
{

View File

@ -17,6 +17,7 @@
#include BOARD_H //Note that this is not a real file, it is defined in globals.h.
#include EEPROM_LIB_H
void initialiseAll()
{
fpPrimed = false;
@ -1297,21 +1298,21 @@ void setPinMapping(byte boardID)
pinCoil3 = 30;
pinO2 = A22;
#elif defined(ARDUINO_BLACK_F407VE)
//Pin definitions for experimental board Tjeerd
//Pin definitions for experimental board Tjeerd
//Black F407VE wiki.stm32duino.com/index.php?title=STM32F407
//******************************************
//******** PORTA CONNECTIONS ***************
//******************************************
/* = PA0 */ //Wakeup ADC123
pinTPS = PA1; //ADC123
pinMAP = PA2; //ADC123
pinIAT = PA3; //ADC123
pinCLT = PA4; //ADC12
pinO2 = PA5; //ADC12
/* = PA6; */ //ADC12 LED_BUILTIN_1
pinFuelPump = PA7; //ADC12 LED_BUILTIN_2
pinIdle1 = PA8; //
// = PA1;
// = PA2;
// = PA3;
// = PA4;
/* = PA5; */ //ADC12
pinFuelPump = PA6; //ADC12 LED_BUILTIN_1
/* = PA7; */ //ADC12 LED_BUILTIN_2
pinCoil3 = PA8;
/* = PA9 */ //TXD1
/* = PA10 */ //RXD1
/* = PA11 */ //(DO NOT USE FOR SPEEDUINO) USB
@ -1332,10 +1333,12 @@ void setPinMapping(byte boardID)
/* = PB6; */ //NRF_CE
/* = PB7; */ //NRF_CS
/* = PB8; */ //NRF_IRQ
pinIdle2 = PB9; //
/* = PB10; */ //TXD3
/* = PB11; */ //RXD3
pinBoost = PB12; //
pinCoil2 = PB9; //
/* = PB9; */ //
pinCoil4 = PB10; //TXD3
pinIdle1 = PB11; //RXD3
pinIdle2 = PB12; //
/* pinBoost = PB12; */ //
/* = PB13; */ //SPI2_SCK
/* = PB14; */ //SPI2_MISO
/* = PB15; */ //SPI2_MOSI
@ -1343,13 +1346,14 @@ void setPinMapping(byte boardID)
//******************************************
//******** PORTC CONNECTIONS ***************
//******************************************
/* = PC0; */ //ADC123
pinBat = PC1; //ADC123
/* = PC2; */ //ADC123
/* = PC3; */ //ADC123
/* = PC4; */ //ADC12
pinMAP = PC0; //ADC123
pinTPS = PC1; //ADC123
pinIAT = PC2; //ADC123
pinCLT = PC3; //ADC123
pinO2 = PC4; //ADC12
/* = PC5; */ //ADC12
pinVVT_1 = PC6; //
/*pinVVT_1 = PC6; */ //
pinBat = PC6; //
pinDisplayReset = PC7; //
/* = PC8; */ //(DO NOT USE FOR SPEEDUINO) - SDIO_D0
/* = PC9; */ //(DO NOT USE FOR SPEEDUINO) - SDIO_D1
@ -1366,39 +1370,42 @@ void setPinMapping(byte boardID)
/* = PD0; */ //CANRX
/* = PD1; */ //CANTX
/* = PD2; */ //(DO NOT USE FOR SPEEDUINO) - SDIO_CMD
pinCoil1 = PD3; //
pinCoil2 = PD4; //
/* = PD3; */ //
/* = PD4; */ //
pinFlex = PD4;
/* = PD5;*/ //TXD2
/* = PD6; */ //RXD2
pinCoil3 = PD7; //
pinCoil4 = PD8; //
pinCoil1 = PD7; //
/* = PD7; */ //
/* = PD8; */ //
pinCoil5 = PD9;//
pinFan = PD10; //
/* = PD10; */ //
/* = PD11; */ //
/* = PD12; */ //
/* = PD13; */ //
/* = PD14; */ //
/* = PD15; */ //
pinInjector1 = PD12; //
pinInjector2 = PD13; //
pinInjector3 = PD14; //
pinInjector4 = PD15; //
//******************************************
//******** PORTE CONNECTIONS ***************
//******************************************
pinStepperDir = PE0; //
pinStepperStep = PE1; //
pinTrigger = PE0; //
pinTrigger2 = PE1; //
pinStepperEnable = PE2; //
/* = PE3; */ //ONBOARD KEY1
/* = PE4; */ //ONBOARD KEY2
pinFlex = PE5; //
pinTrigger = PE6; //
pinInjector1 = PE7; //
pinInjector2 = PE8; //
pinInjector3 = PE9; //
pinInjector4 = PE10; //
pinStepperStep = PE5; //
pinFan = PE6; //
pinStepperDir = PE7; //
/* = PE8; */ //
/* = PE9; */ //
/* = PE10; */ //
pinInjector5 = PE11; //
pinInjector6 = PE12; //
pinTrigger2 = PE13; //
/* = PE13; */ //
/* = PE14; */ //
/* = PE15; */ //
#elif defined(CORE_STM32)
//blue pill wiki.stm32duino.com/index.php?title=Blue_Pill
//Maple mini wiki.stm32duino.com/index.php?title=Maple_Mini
@ -1996,9 +2003,10 @@ void setPinMapping(byte boardID)
MC33810_BIT_IGN8 = 7;
#endif
#ifdef USE_SPI_EEPROM
pinSPIFlash_CS = 6;
#endif
//CS pin number is now set in a compile flag.
// #ifdef USE_SPI_EEPROM
// pinSPIFlash_CS = 6;
// #endif
#endif
break;
@ -2012,11 +2020,10 @@ void setPinMapping(byte boardID)
//******** PORTA CONNECTIONS ***************
//******************************************
/* = PA0 */ //Wakeup ADC123
pinInjector1 = PA1;
pinInjector2 = PA2;
pinInjector3 = PA3;
pinInjector4 = PA4;
// = PA1;
// = PA2;
// = PA3;
// = PA4;
/* = PA5; */ //ADC12
pinFuelPump = PA6; //ADC12 LED_BUILTIN_1
/* = PA7; */ //ADC12 LED_BUILTIN_2
@ -2089,16 +2096,16 @@ void setPinMapping(byte boardID)
pinCoil5 = PD9;//
/* = PD10; */ //
/* = PD11; */ //
/* = PD12; */ //
pinTrigger = PD13; //
pinTrigger2 = PD14; //
/* = PD15; */ //
pinInjector1 = PD12; //
pinInjector2 = PD13; //
pinInjector3 = PD14; //
pinInjector4 = PD15; //
//******************************************
//******** PORTE CONNECTIONS ***************
//******************************************
/* = PE0; */ //
/* = PE1; */ //
pinTrigger = PE0; //
pinTrigger2 = PE1; //
pinStepperEnable = PE2; //
/* = PE3; */ //ONBOARD KEY1
/* = PE4; */ //ONBOARD KEY2
@ -2113,7 +2120,7 @@ void setPinMapping(byte boardID)
/* = PE13; */ //
/* = PE14; */ //
/* = PE15; */ //
#elif defined(CORE_STM32)
//blue pill wiki.stm32duino.com/index.php?title=Blue_Pill
//Maple mini wiki.stm32duino.com/index.php?title=Maple_Mini
@ -2154,20 +2161,19 @@ void setPinMapping(byte boardID)
break;
default:
#if defined(ARDUINO_BLACK_F407VE)
//Pin definitions for experimental board Tjeerd
//Pin definitions for experimental board Tjeerd
//Black F407VE wiki.stm32duino.com/index.php?title=STM32F407
//******************************************
//******** PORTA CONNECTIONS ***************
//******************************************
/* = PA0 */ //Wakeup ADC123
pinInjector1 = PA1;
pinInjector2 = PA2;
pinInjector3 = PA3;
pinInjector4 = PA4;
pinFuelPump = PA5; //ADC12
/* = PA6; */ //ADC12 LED_BUILTIN_1
// = PA1;
// = PA2;
// = PA3;
// = PA4;
/* = PA5; */ //ADC12
pinFuelPump = PA6; //ADC12 LED_BUILTIN_1
/* = PA7; */ //ADC12 LED_BUILTIN_2
pinCoil3 = PA8;
/* = PA9 */ //TXD1
@ -2238,16 +2244,16 @@ void setPinMapping(byte boardID)
pinCoil5 = PD9;//
/* = PD10; */ //
/* = PD11; */ //
/* = PD12; */ //
pinTrigger = PD13; //
pinTrigger2 = PD14; //
/* = PD15; */ //
pinInjector1 = PD12; //
pinInjector2 = PD13; //
pinInjector3 = PD14; //
pinInjector4 = PD15; //
//******************************************
//******** PORTE CONNECTIONS ***************
//******************************************
/* = PE0; */ //
/* = PE1; */ //
pinTrigger = PE0; //
pinTrigger2 = PE1; //
pinStepperEnable = PE2; //
/* = PE3; */ //ONBOARD KEY1
/* = PE4; */ //ONBOARD KEY2
@ -2404,10 +2410,11 @@ void setPinMapping(byte boardID)
initMC33810();
#endif
#ifdef USE_SPI_EEPROM
//We need to send the flash CS (SS) pin if we're using SPI flash. It cannot read from globals.h
EEPROM.begin(pinSPIFlash_CS);
#endif
//CS pin number is now set in a compile flag.
// #ifdef USE_SPI_EEPROM
// //We need to send the flash CS (SS) pin if we're using SPI flash. It cannot read from globals.
// EEPROM.begin(USE_SPI_EEPROM);
// #endif
tach_pin_port = portOutputRegister(digitalPinToPort(pinTachOut));
tach_pin_mask = digitalPinToBitMask(pinTachOut);

View File

@ -178,7 +178,7 @@ uint8_t SPIAsEEPROM::read(uint16_t addressEEPROM){
//The first 4 bytes of each page must have the magic number
//version 0.1 does not check magic number
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;
}
SPIAsEEPROM EEPROM;
//SPIAsEEPROM EEPROM;
#endif