ADC的校准
来源:互联网 发布:上海姑娘 知乎 编辑:程序博客网 时间:2024/04/29 22:12
在ADC使用的时候需要对AD进行校准,校准的代码是在数据手册的demo里面。
A.7.1 ADC Calibration code example
/* (1) Ensure that ADEN = 0 */
/* (2) Clear ADEN */
/* (3) Launch the calibration by setting ADCAL */
/* (4) Wait until ADCAL=0 */
if ((ADC1->CR & ADC_CR_ADEN) != 0) /* (1) */
{
ADC1->CR &= (uint32_t)(~ADC_CR_ADEN); /* (2) */
}
ADC1->CR |= ADC_CR_ADCAL; /* (3) */
while ((ADC1->CR & ADC_CR_ADCAL) != 0) /* (4) */
{
/* For robust implementation,
add here time-out management */
}
上面的例子相当于库里自带的函数如下:
HAL_StatusTypeDef HAL_ADCEx_Calibration_Start(ADC_HandleTypeDef* hadc)
{
HAL_StatusTypeDef tmp_hal_status = HAL_OK;
uint32_t tickstart=0;
/* Check the parameters */
assert_param(IS_ADC_ALL_INSTANCE(hadc->Instance));
/* Process locked */
__HAL_LOCK(hadc);
/* Calibration prerequisite: ADC must be disabled. */
if (ADC_IS_ENABLE(hadc) == RESET)
{
/* Set ADC state */
ADC_STATE_CLR_SET(hadc->State,
HAL_ADC_STATE_REG_BUSY,
HAL_ADC_STATE_BUSY_INTERNAL);
/* Start ADC calibration */
hadc->Instance->CR |= ADC_CR_ADCAL;
tickstart = HAL_GetTick();
/* Wait for calibration completion */
while(HAL_IS_BIT_SET(hadc->Instance->CR, ADC_CR_ADCAL))
{
if((HAL_GetTick() - tickstart) > ADC_CALIBRATION_TIMEOUT)
{
/* Update ADC state machine to error */
ADC_STATE_CLR_SET(hadc->State,
HAL_ADC_STATE_BUSY_INTERNAL,
HAL_ADC_STATE_ERROR_INTERNAL);
/* Process unlocked */
__HAL_UNLOCK(hadc);
return HAL_ERROR;
}
}
/* Set ADC state */
ADC_STATE_CLR_SET(hadc->State,
HAL_ADC_STATE_BUSY_INTERNAL,
HAL_ADC_STATE_READY);
}
else
{
/* Update ADC state machine to error */
SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG);
tmp_hal_status = HAL_ERROR;
}
/* Process unlocked */
__HAL_UNLOCK(hadc);
/* Return function status */
return tmp_hal_status;
}
测试结果显示有效果,但是效果不明显。
- ADC的校准
- ADC校准
- adc 采样 校准
- adc 采样 校准
- SYD8801 ADC使用说明【校准】
- 频谱仪的校准
- 触摸屏的校准
- 四轴电调的校准
- sensor的校准
- 网分的校准
- WinCE下的触摸屏校准
- 电阻触摸屏的校准算法
- 触摸屏的校准加入注册表
- 线性标定校准的实现
- 浅谈无线设备的校准
- WinCE 下触摸屏的校准
- 触摸屏的校准和应用
- wince下的触摸校准
- eclipse常用技巧
- 机器学习算法(分类算法)—支持向量机(3)
- ajax 的 async 的同步和 异步
- centos 6.6 + hadoop2.7.3+zookeeper-3.4.8+hbase-1.1.2
- c++多态性
- ADC的校准
- 数据库学习笔记和小练习(16)外键再理解
- PHP变量详解
- Integer Break
- 使用opencv做双目测距(相机标定+立体匹配+测距)
- wait() notify() notifyAll() 使用范例
- 拓扑排序方案数的求法
- Xcode真机调试运行时提示:could not find Developer Disk Image 解决方法
- [李景山php]每天TP5-20161224|thinkphp5-Console.php-1