Обновление
This commit is contained in:
parent
8f7be6a303
commit
078b520278
|
|
@ -43,12 +43,10 @@ void ADC_Initial(
|
||||||
env->num_aChannels = num_aChannels;
|
env->num_aChannels = num_aChannels;
|
||||||
env->txAccessQueue = osMessageQueueNew(1, 1, NULL);
|
env->txAccessQueue = osMessageQueueNew(1, 1, NULL);
|
||||||
|
|
||||||
|
|
||||||
env->s_tAdcInitCfg.eResolution = ADC_RESOLUTION_12_BIT, //!< 12 bit resolution
|
env->s_tAdcInitCfg.eResolution = ADC_RESOLUTION_12_BIT, //!< 12 bit resolution
|
||||||
env->s_tAdcInitCfg.eAlign = ADC_ALIGN_RIGHT, //!< Align right
|
env->s_tAdcInitCfg.eAlign = ADC_ALIGN_RIGHT, //!< Align right
|
||||||
env->s_tAdcInitCfg.eTriggerMode = ADC_TRIGMODE_SW, //!< Software trigger
|
env->s_tAdcInitCfg.eTriggerMode = ADC_TRIGMODE_SW, //!< Software trigger
|
||||||
env->s_tAdcInitCfg.bWaitEnable = false; //!< Disable wait conversion mode
|
env->s_tAdcInitCfg.bWaitEnable = false; //!< Disable wait conversion mode
|
||||||
|
|
||||||
env->s_tAdcInitCfg.bCalEnable = false;
|
env->s_tAdcInitCfg.bCalEnable = false;
|
||||||
env->s_tAdcInitCfg.s32CalOffset = 0U;
|
env->s_tAdcInitCfg.s32CalOffset = 0U;
|
||||||
env->s_tAdcInitCfg.s32CalGain = 0U;
|
env->s_tAdcInitCfg.s32CalGain = 0U;
|
||||||
|
|
@ -57,7 +55,6 @@ void ADC_Initial(
|
||||||
env->s_tAdcInitCfg.eClockDivider = ADC_CLOCK_DIV_1; //!< Adc clock divided by 1
|
env->s_tAdcInitCfg.eClockDivider = ADC_CLOCK_DIV_1; //!< Adc clock divided by 1
|
||||||
env->s_tAdcInitCfg.eSequenceMode = ADC_SEQMODE_SINGLE; //!< Single sequence mode
|
env->s_tAdcInitCfg.eSequenceMode = ADC_SEQMODE_SINGLE; //!< Single sequence mode
|
||||||
env->s_tAdcInitCfg.eOverrunMode = ADC_OVERRUN_MODE_PRESERVE; //!< When overrun occurred, the old conversion data are preserved
|
env->s_tAdcInitCfg.eOverrunMode = ADC_OVERRUN_MODE_PRESERVE; //!< When overrun occurred, the old conversion data are preserved
|
||||||
|
|
||||||
env->s_tAdcInitCfg.eVoltageRef = ADC_REF_INTERNAL; //!< Use internal reference
|
env->s_tAdcInitCfg.eVoltageRef = ADC_REF_INTERNAL; //!< Use internal reference
|
||||||
env->s_tAdcInitCfg.bHwAvgEnable = false; //!< Disable averaging functionality
|
env->s_tAdcInitCfg.bHwAvgEnable = false; //!< Disable averaging functionality
|
||||||
env->s_tAdcInitCfg.eHwAverage = ADC_AVERAGE_4; //!< Selection for number of samples used for averaging
|
env->s_tAdcInitCfg.eHwAverage = ADC_AVERAGE_4; //!< Selection for number of samples used for averaging
|
||||||
|
|
@ -66,6 +63,12 @@ void ADC_Initial(
|
||||||
env->s_tAdcInitCfg.aSampleTimes[2] = 40U;
|
env->s_tAdcInitCfg.aSampleTimes[2] = 40U;
|
||||||
env->s_tAdcInitCfg.aSampleTimes[3] = 80U;
|
env->s_tAdcInitCfg.aSampleTimes[3] = 80U;
|
||||||
|
|
||||||
|
ADC_Init(ADCx, &env->s_tAdcInitCfg);
|
||||||
|
ADC_InitChannel(ADCx, s_aChannels, num_aChannels);
|
||||||
|
|
||||||
|
//начало-----------------------------------DMA-RX-------------------------------------------------------------------
|
||||||
|
//начало-----------------------------------DMA-RX-------------------------------------------------------------------
|
||||||
|
//начало-----------------------------------DMA-RX-------------------------------------------------------------------
|
||||||
|
|
||||||
env->s_tAdcDmaCfg.bDmaEnable = true;
|
env->s_tAdcDmaCfg.bDmaEnable = true;
|
||||||
env->s_tAdcDmaCfg.eSeqGroupIndex = ADC_SEQUENCE_GROUP_0;
|
env->s_tAdcDmaCfg.eSeqGroupIndex = ADC_SEQUENCE_GROUP_0;
|
||||||
|
|
@ -75,25 +78,24 @@ void ADC_Initial(
|
||||||
env->s_tAdcDmaCfg.pResultBuffer = (void *) ((uint32_t) DMA_BUF);
|
env->s_tAdcDmaCfg.pResultBuffer = (void *) ((uint32_t) DMA_BUF);
|
||||||
env->s_tAdcDmaCfg.pConvCompleteNotify = Bsp_ADC_HandleResult;
|
env->s_tAdcDmaCfg.pConvCompleteNotify = Bsp_ADC_HandleResult;
|
||||||
|
|
||||||
|
|
||||||
ADC_Init(ADCx, &env->s_tAdcInitCfg);
|
|
||||||
|
|
||||||
|
|
||||||
ADC_InitChannel(ADCx, s_aChannels, num_aChannels);
|
|
||||||
|
|
||||||
|
|
||||||
ADC_InitDmaChannel(ADCx, &env->s_tAdcDmaCfg);
|
ADC_InitDmaChannel(ADCx, &env->s_tAdcDmaCfg);
|
||||||
ADC_Enable(ADC_INSTANCE_0);
|
ADC_Enable(ADC_INSTANCE_0);
|
||||||
|
|
||||||
//NVIC_SetPriorityGrouping(NVIC_PRIORITY_GROUP_4);
|
|
||||||
|
|
||||||
NVIC_EnableIRQ(IRQ_DMA);
|
|
||||||
NVIC_SetPriority(DMA_Error_IRQn, IRQ_DMA_PRIORITY);
|
NVIC_SetPriority(DMA_Error_IRQn, IRQ_DMA_PRIORITY);
|
||||||
NVIC_SetPriority(IRQ_DMA, IRQ_DMA_PRIORITY);
|
NVIC_SetPriority(IRQ_DMA, IRQ_DMA_PRIORITY);
|
||||||
|
NVIC_EnableIRQ(IRQ_DMA);
|
||||||
|
|
||||||
|
DMA_StartChannel(DMA_INSTANCE_0, ADC_DMA_CHANNEL);
|
||||||
|
// ADC_Start(ADC_INSTANCE_0);
|
||||||
|
|
||||||
|
//конец-----------------------------------DMA-RX-------------------------------------------------------------------
|
||||||
|
//конец-----------------------------------DMA-RX-------------------------------------------------------------------
|
||||||
|
//конец-----------------------------------DMA-RX-------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static float *vAdcGet(tAdcFlagchip *env, uint32_t timeout) {
|
static uint32_t vAdcGet(tAdcFlagchip *env, uint32_t *buf, uint32_t timeout) {
|
||||||
|
|
||||||
ADC_Start(env->ADCx);
|
ADC_Start(env->ADCx);
|
||||||
|
|
||||||
|
|
@ -101,18 +103,30 @@ static float *vAdcGet(tAdcFlagchip *env, uint32_t timeout) {
|
||||||
|
|
||||||
uint16_t sent = osMessageQueueGet(env->txAccessQueue, &res, 0, timeout);
|
uint16_t sent = osMessageQueueGet(env->txAccessQueue, &res, 0, timeout);
|
||||||
|
|
||||||
|
// if (sent == osOK) {
|
||||||
|
// for (uint8_t i = 0; i < env->num_aChannels; ++i) {
|
||||||
|
// env->pVoltageBuffer[i] = (float) env->DMA_BUF[i] / ((1U << 12U) - 1U) * VREF;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// return env->pVoltageBuffer;
|
||||||
|
*buf = (uint32_t) env->DMA_BUF;
|
||||||
|
|
||||||
if (sent == osOK) {
|
if (sent == osOK) {
|
||||||
for (uint8_t i = 0; i < env->num_aChannels; ++i) {
|
return env->num_aChannels;
|
||||||
env->pVoltageBuffer[i] = (float) env->DMA_BUF[i] / ((1U << 12U) - 1U) * VREF;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return env->pVoltageBuffer;
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void vAdcStart(tAdcFlagchip *env) {
|
||||||
|
ADC_Start(env->ADCx);
|
||||||
}
|
}
|
||||||
|
|
||||||
tAdcIO vAdcGetIo(tAdcFlagchip *env) {
|
tAdcIO vAdcGetIo(tAdcFlagchip *env) {
|
||||||
tAdcIO io = {
|
tAdcIO io = {
|
||||||
.env = env,
|
.env = env,
|
||||||
|
.start = (AdcIOStartTransaction) vAdcStart,
|
||||||
.get = (AdcIOTransaction) vAdcGet,
|
.get = (AdcIOTransaction) vAdcGet,
|
||||||
};
|
};
|
||||||
return io;
|
return io;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue