Fixed ADC functionality
This commit is contained in:
@@ -110,6 +110,8 @@ static inline void SHAL_set_register_value_16(volatile uint16_t* reg, uint16_t v
|
||||
*reg = value;
|
||||
}
|
||||
|
||||
void SHAL_print_register(const volatile uint32_t* reg);
|
||||
|
||||
//---------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
@@ -32,9 +32,11 @@ enum class SHAL_ADC_Channel : uint32_t {
|
||||
CH13,
|
||||
CH14,
|
||||
CH15,
|
||||
CH16,
|
||||
CHTemp,
|
||||
CHRef,
|
||||
CHBat
|
||||
CHBat,
|
||||
NO_ADC_MAPPING
|
||||
};
|
||||
|
||||
enum class ADC_Key : uint8_t{
|
||||
@@ -116,10 +118,10 @@ static inline SHAL_ADC_Channel_Sampling_Time_Reg getADCChannelSamplingTimeRegist
|
||||
auto channelNum = static_cast<uint8_t>(channel);
|
||||
|
||||
if (channelNum <= 9) {
|
||||
SMPReg = &ADCReg->SQR1;
|
||||
SMPReg = &ADCReg->SMPR1;
|
||||
pos = (channelNum * 3);
|
||||
} else {
|
||||
SMPReg = &ADCReg->SQR2;
|
||||
SMPReg = &ADCReg->SMPR2;
|
||||
pos = ((channelNum - 10) * 3);
|
||||
}
|
||||
|
||||
@@ -144,11 +146,11 @@ static inline SHAL_ADC_Sequence_Reg getADCSequenceRegisters(ADC_Key key){
|
||||
&adc_reg->SQR4,
|
||||
nullptr,
|
||||
nullptr},
|
||||
{1UL << 0,
|
||||
1UL << 6,
|
||||
1UL << 12,
|
||||
1UL << 18,
|
||||
1UL << 24}
|
||||
{0,
|
||||
6,
|
||||
12,
|
||||
18,
|
||||
24}
|
||||
};
|
||||
|
||||
return res;
|
||||
|
||||
@@ -169,47 +169,54 @@ constexpr uint32_t getGPIOPortNumber(const GPIO_Key g){
|
||||
constexpr SHAL_GPIO_Port_Info getGPIOPortInfo(GPIO_Key key){
|
||||
switch(key){
|
||||
case GPIO_Key::A0:
|
||||
return {0, SHAL_ADC_Channel::CH5};
|
||||
case GPIO_Key::B0:
|
||||
return {0, SHAL_ADC_Channel::CH0};
|
||||
return {0, SHAL_ADC_Channel::CH15};
|
||||
case GPIO_Key::A1:
|
||||
return {1, SHAL_ADC_Channel::CH6};
|
||||
case GPIO_Key::B1:
|
||||
return {1, SHAL_ADC_Channel::CH1};
|
||||
return {1, SHAL_ADC_Channel::CH16};
|
||||
case GPIO_Key::A2:
|
||||
return {2, SHAL_ADC_Channel::CH2};
|
||||
return {2, SHAL_ADC_Channel::CH7};
|
||||
case GPIO_Key::A3:
|
||||
return {3, SHAL_ADC_Channel::CH8};
|
||||
case GPIO_Key::B3:
|
||||
return {3, SHAL_ADC_Channel::CH3};
|
||||
return {3, SHAL_ADC_Channel::NO_ADC_MAPPING};
|
||||
case GPIO_Key::A4:
|
||||
return {4, SHAL_ADC_Channel::CH9};
|
||||
case GPIO_Key::B4:
|
||||
return {4, SHAL_ADC_Channel::CH4};
|
||||
return {4, SHAL_ADC_Channel::NO_ADC_MAPPING};
|
||||
case GPIO_Key::A5:
|
||||
return {5, SHAL_ADC_Channel::CH10};
|
||||
case GPIO_Key::B5:
|
||||
return {5, SHAL_ADC_Channel::CH5};
|
||||
return {5, SHAL_ADC_Channel::NO_ADC_MAPPING};
|
||||
case GPIO_Key::A6:
|
||||
return {6, SHAL_ADC_Channel::CH11};
|
||||
case GPIO_Key::B6:
|
||||
return {6, SHAL_ADC_Channel::CH6};
|
||||
return {6, SHAL_ADC_Channel::NO_ADC_MAPPING};
|
||||
case GPIO_Key::A7:
|
||||
return {7, SHAL_ADC_Channel::CH12};
|
||||
case GPIO_Key::B7:
|
||||
return {7, SHAL_ADC_Channel::CH7};
|
||||
return {7, SHAL_ADC_Channel::NO_ADC_MAPPING};
|
||||
case GPIO_Key::A8:
|
||||
return {8, SHAL_ADC_Channel::CH8};
|
||||
return {8, SHAL_ADC_Channel::NO_ADC_MAPPING};
|
||||
case GPIO_Key::A9:
|
||||
return {9, SHAL_ADC_Channel::CH9};
|
||||
return {9, SHAL_ADC_Channel::NO_ADC_MAPPING};
|
||||
case GPIO_Key::A10:
|
||||
return {10, SHAL_ADC_Channel::CH10};
|
||||
return {10, SHAL_ADC_Channel::NO_ADC_MAPPING};
|
||||
case GPIO_Key::A11:
|
||||
return {11, SHAL_ADC_Channel::CH11};
|
||||
return {11, SHAL_ADC_Channel::NO_ADC_MAPPING};
|
||||
case GPIO_Key::A12:
|
||||
return {12, SHAL_ADC_Channel::CH12};
|
||||
return {12, SHAL_ADC_Channel::NO_ADC_MAPPING};
|
||||
case GPIO_Key::A13:
|
||||
return {13, SHAL_ADC_Channel::CH13};
|
||||
return {13, SHAL_ADC_Channel::NO_ADC_MAPPING};
|
||||
case GPIO_Key::A14:
|
||||
return {14, SHAL_ADC_Channel::CH14};
|
||||
return {14, SHAL_ADC_Channel::NO_ADC_MAPPING};
|
||||
case GPIO_Key::A15:
|
||||
return {15, SHAL_ADC_Channel::CH15};
|
||||
return {15, SHAL_ADC_Channel::NO_ADC_MAPPING};
|
||||
case GPIO_Key::NUM_GPIO:
|
||||
case GPIO_Key::INVALID:
|
||||
return {0, SHAL_ADC_Channel::CH0};
|
||||
return {0, SHAL_ADC_Channel::NO_ADC_MAPPING};
|
||||
}
|
||||
__builtin_unreachable();
|
||||
}
|
||||
|
||||
@@ -29,7 +29,6 @@ public:
|
||||
/// \return ADC result
|
||||
uint16_t analogRead(SHAL_ADC_SampleTime sampleTime = SHAL_ADC_SampleTime::C8);
|
||||
|
||||
void setPinMode(PinMode mode) volatile;
|
||||
|
||||
void setAlternateFunction(GPIO_Alternate_Function AF) volatile;
|
||||
|
||||
@@ -42,7 +41,7 @@ public:
|
||||
|
||||
void useAsExternalInterrupt(TriggerMode mode, EXTICallback callback);
|
||||
|
||||
|
||||
SHAL_Result setPinMode(PinMode mode) volatile;
|
||||
|
||||
private:
|
||||
|
||||
@@ -67,6 +66,7 @@ private:
|
||||
|
||||
#define SET_ANALOGREAD_ADC(x) GPIOManager::setGPIOADC(x)
|
||||
|
||||
|
||||
//Manages instances of SHAL_GPIO objects
|
||||
class GPIOManager{
|
||||
|
||||
|
||||
Reference in New Issue
Block a user