在前例采样通道0的处理中,数据偏移比较厉害,本次改用内部温度常感器数据作为采样对象,看看是什么情况。
代码为:
#include "CH58x_common.h"
uint16_t adcBuff[40];
volatile uint8_t adclen;
volatile uint8_t DMA_end = 0;
/*********************************************************************
* @fn DebugInit
*
* @brief 调试初始化
*
* @return none
*/
void DebugInit(void)
{
GPIOA_SetBits(GPIO_Pin_9);
GPIOA_ModeCfg(GPIO_Pin_8, GPIO_ModeIN_PU);
GPIOA_ModeCfg(GPIO_Pin_9, GPIO_ModeOut_PP_5mA);
UART1_DefInit();
}
/*********************************************************************
* @fn main
*
* @brief 主函数
*
* @return none
*/
int main()
{
uint8_t i;
signed short RoughCalib_Value = 0; // ADC粗调偏差值
SetSysClock(CLK_SOURCE_PLL_60MHz);
/* 配置串口调试 */
DebugInit();
/* 采样内部温度 */
ADC_InterTSSampInit();
DelayMs(200); // 等待IO稳定
while(1) {
adcBuff[1] = ADC_ExcutSingleConver();;
PRINT("%d \n", adc_to_temperature_celsius(adcBuff[1]));
DelayMs(100);
}
}输出结果同样用串口绘制曲线的形式:

温度数据在21~25之间跳跃,感觉偏移范围稍微有点儿大。
我要赚赏金
