我使用DA14585-00ATDEVKT-P Development Kit - Pro与DA14585_SDK 6.0.2.243和Keil uVersion V5.23.0.0。
我遵循支柱3(外设)的例子,连接温度传感器到ADC读取温度。
1)第63行user_peripher_setup .c
在这个函数的末尾,我添加了
adc_init(GP_ADC_SE, 0, GP_ADC_ATTN3X);
adc_enable_channel (0);
2) user_peripher_setup .c的第48行
在这个函数的末尾,我添加了
GPIO_ConfigurePin(GPIO_ADC_PORT, GPIO_ADC_PIN, INPUT, PID_ADC, false);
3)在user_peripher_setup .h的第142行之后
我添加了
/****************************************************************************************/
/* ADC配置*/
/****************************************************************************************/
#如果HW_CONFIG_BASIC_DK
#定义GPIO_ADC_PORT GPIO_PORT_0
#定义GPIO_ADC_PIN GPIO_PIN_0
# elif HW_CONFIG_PRO_DK
#定义GPIO_ADC_PORT GPIO_PORT_0
#定义GPIO_ADC_PIN GPIO_PIN_0
# elif HW_CONFIG_EXPERT_DK
#定义GPIO_ADC_PORT GPIO_PORT_0
#定义GPIO_ADC_PIN GPIO_PIN_0
#else //(其他配置)
# endif
4)在user_custs1_impl.c的第153行,我注释掉了
//sample = (sample <= 0xffff) ?(样本+ 1):0;并添加
示例= adc_get_sample ();
GPIO_ConfigurePin(GPIO_ADC_PORT, GPIO_ADC_PIN, INPUT, PID_ADC, false);
它停在gpio.c 201线:
#如果DEVELOPMENT_DEBUG
的ifndef GPIO_DRV_PIN_ALLOC_MON_DISABLED
如果(! (GPIO_status & (((uint64_t) 1 < <销)< <(港口* 16))))
__asm(“BKPT # 0 \ n”);//这个pin码以前没有被保留过!
# endif / / GPIO_DRV_PIN_ALLOC_MON_DISABLED
# endif / / DEVELOPMENT_DEBUG
请指导我如何使用ADC从真实设备读取数据,而不是从生成的数据。
谢谢
嗨advanchip,
你得到错误的原因是因为你没有保留pin在使用它。user_periph_setup.c文件之前set_pad_functions()实现有一个额外的函数命名GPIO_reservations(),这个函数应该保留每个销,您使用的是在实际使用之前,如果你不这样做,虽然你在开发模式您已经发布的断言将发生。因此,如果您只是添加RESEVE_GPIO(ADC_PIN, GPIO_ADC_PORT, GPIO_ADC_PIN, PID_ADC),您将不会得到断言。关于如何使用ADC函数,我建议遵循peripheral_examples\ ADC \bat_lvl中的示例,在读取实际值之前执行adc_init()和adc_enable_channel(),也请在给定的例子中应用相应的延迟(只有当你使用3 X衰减器时,你将需要在采样阶段额外的1us延迟)。请在使用ADC之前使用adc_calibrate(),如果使用睡眠模式,也应该重新校准。
由于MT_Dialog
谢谢。