перенесла переключение ноги spi в платозависимый файл variants.c

This commit is contained in:
klassents committed 2024-09-09 10:57:21 +07:00
1 parent 4ecc7f948b
commit 39ee35f88d
5 files changed
+52 -67

No files matched your search

-1
View File
@@ -1,6 +1,5 @@
#include "SPI.h"
#include "mik32_hal_spi.h"
#include "utility/spiElbear.h"
SPI_HandleTypeDef hspi;
bool newConfig = false;
-53
View File
@@ -1,53 +0,0 @@
#include "Arduino.h"
#include "spiElbear.h"
#include "mik32_hal_gpio.h"
#include "xprintf.h"
// pins shift in registers
#define PIN_3_SHIFT 3
#define PIN_4_SHIFT 4
#define PORT1_GET_PAD_CONFIG(pinShift) ((PAD_CONFIG->PORT_1_CFG >> (pinShift<<1)) & 0b11)
#define PORT1_GET_PAD_PUPD(pinShift) ((PAD_CONFIG->PORT_1_PUPD >> (pinShift<<1)) & 0b11)
#define PORT1_GET_GPIO_STATE(pinShift) ((GPIO_1->OUTPUT_ >> pinShift) & 0b1)
void spi_onBegin(void)
{
// there is a seller on pin 1.6 which replace D10 from spi NSS pin 1.3 to pin 1.4,
// because spi needs pin 1.3 for correct work
// replace config from 1.3 to 1.4
uint8_t config = PORT1_GET_PAD_CONFIG(PIN_3_SHIFT);
if (config == 0) // common gpio
{
// get info from pin gpio1.3 and set config to gpio1.4
HAL_GPIO_PinConfig(GPIO_1, GPIO_PIN_4, HAL_GPIO_GetPinDirection(GPIO_1, GPIO_PIN_3),
(HAL_GPIO_PullTypeDef)PORT1_GET_PAD_PUPD(PIN_3_SHIFT), HAL_GPIO_DS_2MA);
HAL_GPIO_WritePin(GPIO_1, GPIO_PIN_4, (GPIO_PinState)PORT1_GET_GPIO_STATE(PIN_3_SHIFT));
// pin D10 was switched to different gpio and can be used further
}
else if(config == 2) // timer for pwm
{
// if D10 (spi NSS pin) was used as pwm, we need to stop timer,
// because 1.4 don't support timer
analogWriteStop(10);
ErrorMsgHandler("analogWrite(): D10 cannot be used as PWM pin while SPI is running");
}
// switch seller to pin 1.4
HAL_GPIO_PinConfig(GPIO_1, GPIO_PIN_6, HAL_GPIO_MODE_GPIO_OUTPUT, HAL_GPIO_PULL_NONE, HAL_GPIO_DS_2MA);
HAL_GPIO_WritePin(GPIO_1, GPIO_PIN_6, GPIO_PIN_HIGH);
blockSpiPin();
}
void spi_onEnd(void)
{
// get info from pin gpio1.4 and set config to gpio1.3
HAL_GPIO_PinConfig(GPIO_1, GPIO_PIN_3, HAL_GPIO_GetPinDirection(GPIO_1, GPIO_PIN_4),
(HAL_GPIO_PullTypeDef)PORT1_GET_PAD_PUPD(PIN_4_SHIFT), HAL_GPIO_DS_2MA);
HAL_GPIO_WritePin(GPIO_1, GPIO_PIN_3, (GPIO_PinState)PORT1_GET_GPIO_STATE(PIN_4_SHIFT));
// switch seller back to pin 1.3
HAL_GPIO_WritePin(GPIO_1, GPIO_PIN_6, GPIO_PIN_LOW);
unblockSpiPin();
}
-3
View File
@@ -1,3 +0,0 @@
void spi_onBegin(void);
void spi_onEnd(void);