diff --git a/documents/images/Card-2.jpg b/documents/images/Card-2.jpg new file mode 100644 index 000000000..2ff30bb9c Binary files /dev/null and b/documents/images/Card-2.jpg differ diff --git a/documents/images/Card-3.jpg b/documents/images/Card-3.jpg new file mode 100644 index 000000000..4e49747e1 Binary files /dev/null and b/documents/images/Card-3.jpg differ diff --git a/documents/images/Card-4.jpg b/documents/images/Card-4.jpg new file mode 100644 index 000000000..6ce0c5147 Binary files /dev/null and b/documents/images/Card-4.jpg differ diff --git a/documents/images/Card-5.jpg b/documents/images/Card-5.jpg new file mode 100644 index 000000000..14176ae7c Binary files /dev/null and b/documents/images/Card-5.jpg differ diff --git a/software/firmware/source/SoftRF/src/platform/CH32.cpp b/software/firmware/source/SoftRF/src/platform/CH32.cpp index 9e5324585..c1f8f0e7e 100644 --- a/software/firmware/source/SoftRF/src/platform/CH32.cpp +++ b/software/firmware/source/SoftRF/src/platform/CH32.cpp @@ -163,13 +163,14 @@ static void CH32_msc_flush_cb (void) #if defined(ENABLE_RECORDER) #include -#if defined(USE_SOFTSPI) -SoftSPI uSD_SPI(SOC_GPIO_YD_SD_CMD, SOC_GPIO_YD_SD_D0, SOC_GPIO_YD_SD_CLK); -#else -SPIClass uSD_SPI; -#endif /* USE_SOFTSPI */ +SoftSpiDriver uSD_SPI; +// Speed argument is ignored for software SPI. +#if ENABLE_DEDICATED_SPI +#define SD_CONFIG SdSpiConfig(uSD_SS_pin, DEDICATED_SPI, SD_SCK_MHZ(8), &uSD_SPI) +#else // ENABLE_DEDICATED_SPI #define SD_CONFIG SdSpiConfig(uSD_SS_pin, SHARED_SPI, SD_SCK_MHZ(8), &uSD_SPI) +#endif // ENABLE_DEDICATED_SPI SdFat uSD; @@ -251,7 +252,7 @@ static void CH32_setup() { int uSD_SS_pin = SOC_GPIO_YD_SD_D3; -#if !defined(USE_SOFTSPI) +#if !defined(USE_SOFTSPI) && SPI_DRIVER_SELECT != 2 uSD_SPI.setMISO(SOC_GPIO_YD_SD_D0); uSD_SPI.setMOSI(SOC_GPIO_YD_SD_CMD); uSD_SPI.setSCLK(SOC_GPIO_YD_SD_CLK); @@ -790,7 +791,7 @@ static void CH32_Button_setup() int button_pin = SOC_GPIO_PIN_BUTTON; // Button(s) uses external pull up resistor. - pinMode(button_pin, INPUT); + pinMode(button_pin, CH32_board == CH32_YD_V307VCT6 ? INPUT_PULLUP : INPUT); button_1.init(button_pin); @@ -830,7 +831,7 @@ static void CH32_Button_fini() if (hw_info.model == SOFTRF_MODEL_ACADEMY) { // detachInterrupt(digitalPinToInterrupt(SOC_GPIO_PIN_BUTTON)); while (digitalRead(SOC_GPIO_PIN_BUTTON) == LOW); - pinMode(SOC_GPIO_PIN_BUTTON, ANALOG); + pinMode(SOC_GPIO_PIN_BUTTON, INPUT); } #endif /* SOC_GPIO_PIN_BUTTON != SOC_UNUSED_PIN */ } diff --git a/software/firmware/source/SoftRF/src/platform/CH32.h b/software/firmware/source/SoftRF/src/platform/CH32.h index 5dd0638eb..faf1824c6 100644 --- a/software/firmware/source/SoftRF/src/platform/CH32.h +++ b/software/firmware/source/SoftRF/src/platform/CH32.h @@ -94,7 +94,11 @@ struct rst_info { #define SOC_GPIO_PIN_GNSS_RX PA10 #define SOC_GPIO_PIN_GNSS_TX PA9 +#if defined(PB4) #define SOC_GPIO_PIN_STATUS SOC_UNUSED_PIN /* PA15 PB4 */ +#else +#define SOC_GPIO_PIN_STATUS PB4 +#endif #define SOC_GPIO_PIN_BUZZER SOC_UNUSED_PIN #define SOC_GPIO_PIN_RX3 SOC_UNUSED_PIN @@ -143,18 +147,44 @@ struct rst_info { #define SOC_GPIO_PIN_LED SOC_UNUSED_PIN #define SOC_GPIO_PIN_GNSS_PPS PA3 #define SOC_GPIO_PIN_BATTERY SOC_UNUSED_PIN /* PA0 TBD */ +#if defined(PB3) +#define SOC_GPIO_PIN_BUTTON PB3 +#else #define SOC_GPIO_PIN_BUTTON SOC_UNUSED_PIN +#endif #define SOC_GPIO_RADIO_LED_RX SOC_UNUSED_PIN #define SOC_GPIO_RADIO_LED_TX SOC_UNUSED_PIN +/* SPI3 */ +#if defined(PB5) +#define SOC_GPIO_PIN_MOSI3 PB5 +#else +#define SOC_GPIO_PIN_MOSI3 PB_5 +#endif +#if defined(PB4) +#define SOC_GPIO_PIN_MISO3 PB4 +#else +#define SOC_GPIO_PIN_MISO3 PB_4 +#endif +#if defined(PB3) +#define SOC_GPIO_PIN_SCK3 PB3 +#else +#define SOC_GPIO_PIN_SCK3 PB_3 +#endif +#if defined(PA15) +#define SOC_GPIO_PIN_SS3 PA15 +#else +#define SOC_GPIO_PIN_SS3 PA_15 +#endif + /* YD-CH32V307VCT6 */ #define SOC_GPIO_YD_LED_BLUE PB_4 #define SOC_GPIO_YD_LED_RED PA_15 #define SOC_GPIO_YD_BUTTON PB_3 -// uSD +// SDIO #if defined(PC8) #define SOC_GPIO_YD_SD_D0 PC8 #else diff --git a/software/firmware/source/libraries/SdFat/src/SdFatConfig.h b/software/firmware/source/libraries/SdFat/src/SdFatConfig.h index 19b881938..b4f700d9e 100644 --- a/software/firmware/source/libraries/SdFat/src/SdFatConfig.h +++ b/software/firmware/source/libraries/SdFat/src/SdFatConfig.h @@ -44,6 +44,10 @@ #define USE_UTF8_LONG_NAMES 1 #endif +#if defined(ARDUINO_ARCH_CH32) +#define SPI_DRIVER_SELECT 2 +#endif // ARDUINO_ARCH_CH32 + // Backward-compatible define #define ENABLE_EXTENDED_TRANSFER_CLASS USE_BLOCK_DEVICE_INTERFACE #define BaseBlockDriver FsBlockDeviceInterface