alienwalker 3 лет назад
Родитель
Сommit
9cc77f47a9

+ 3 - 0
application/src/luat_adc_air105.c

@@ -56,6 +56,9 @@ int luat_adc_open(int ch, void *args)
         GPIO_Iomux(GPIOC_05, 2);
         GPIO_PullConfig(GPIOC_05, 0, 0);
         break;
+    case ADC_SET_GLOBAL_RANGE:
+    	ADC_IntelResistance((int)args);
+    	return 0;
     default:
         return -1;
     }

+ 22 - 5
bsp/air105/hal/core_adc.c

@@ -210,10 +210,10 @@ void ADC_ChannelOnOff(uint8_t Channel, uint8_t OnOff)
 uint32_t ADC_GetChannelValue(uint8_t Channel, uint32_t *Vol)
 {
 
-	uint32_t total= 0;
+//	uint32_t total= 0;
 	uint32_t value = 0;
-	uint32_t max = 0;
-	uint32_t min = 0x0fff;
+//	uint32_t max = 0;
+//	uint32_t min = 0x0fff;
 	uint32_t i;
 	ADC0->ADC_FIFO = 3;
 	while(ADC0->ADC_FIFO & (BIT(1))) {;}
@@ -248,13 +248,30 @@ uint32_t ADC_GetChannelValue(uint8_t Channel, uint32_t *Vol)
 	ADC0->ADC_CR1 = Channel;
 //	value = ((total - max) -min)/(SAMPLE_PER_CH-8);
 	value = prvADC.Data[SAMPLE_PER_CH - 1];
+
 	if (!Channel)
 	{
-		*Vol = (value * 5264 / 4095);
+		*Vol = (value * 1880 * 14 / 5) >> 12;
 	}
 	else
 	{
-		*Vol = (value * 1880 / 4095);
+		if (ADC0->ADC_CR2 & (1 << 13))
+		{
+			if (Channel != 6)
+			{
+				*Vol = (value * 3760) >> 12;
+			}
+			else
+			{
+				*Vol = (value * 470 * 1511 / 279) >> 11;
+			}
+
+		}
+		else
+		{
+			*Vol = (value * 1880 / 4095);
+		}
+
 	}
 	return value;
 }

+ 1 - 1
bsp/air105/include/FreeRTOSConfig.h

@@ -66,7 +66,7 @@
  extern uint32_t SystemCoreClock;
 #endif
 #ifdef __AIR105_BSP__
-#include "../chip/include/air105.h"
+#include "air105.h"
 #endif
 /*  CMSIS-RTOSv2 defines 56 levels of priorities. To be able to use them
  *  all and avoid application misbehavior, configUSE_PORT_OPTIMISED_TASK_SELECTION