157***568
需要miso2 口采集电压,需要 miso4采集 温度 ,查看datasheet发现只有一路adc 。读取数据的时候如何切换 采集的通道保证采集的是对应通道的数据
Ping
1. GR551X支持8通道ADC,其中5通道开放给外部使用;
2. 建议升级到最新的1.7.0版本SDK,已经集成多通道功能接口;
uint16_t app_adc_multi_channel_conversion_async(app_adc_samle_node_t *p_begin_node, uint32_t total_nodes);-------非RTOS和RTOS下都可以用
uint16_t app_adc_multi_channel_conversion_sem_sync(app_adc_samle_node_t *p_begin_node, uint32_t total_nodes);----仅RTOS下可用
入参1:指定采集的通道节点链表(里面包含通道号、通道数据buf、该通道采集数据长度);
入参2:指定一共采集多少个通道;
接口只是启动了采集功能,退出后MCU资源会释放出来;当设定的所有通道采集完毕,初始化时指定的回调函数会被调用,从而告知应用层全部采集完毕,此时应用层就可以从每个通道指定的buf里面访问数据。
Ping
该部分代码实现在app_adc.c文件中是开源,可以直接移植到旧版本的SDK上应用,回调函数只是通知ADC采样完成,应用示例代码如下:
回调函数:
void app_adc_evt_handler(app_adc_evt_t * p_evt)
{
if (p_evt->type == APP_ADC_EVT_CONV_CPLT)
{
covn_done = 1;
printf("DMA conversion is done.\r\n");
}
}
多通道采集示例:
void adc_multi_sample_case(void)
{
double voltage[TEST_CONV_LENGTH];
app_adc_params_t params_t = DEFAULT_PARAM_CONFIG;
app_adc_deinit();
app_adc_init(¶ms_t, app_adc_evt_handler);
app_adc_samle_node_t sample_node0;
sample_node0.channel = ADC_INPUT_SRC_IO0;
sample_node0.p_buf = &adc_channel0_buf[0];
sample_node0.len = TEST_CONV_LENGTH;
app_adc_samle_node_t sample_node1;
sample_node1.channel = ADC_INPUT_SRC_IO1;
sample_node1.p_buf = &adc_channel1_buf[0];
sample_node1.len = TEST_CONV_LENGTH;
sample_node0.next = &sample_node1;
memset(adc_channel0_buf, 0, sizeof(adc_channel0_buf));
memset(adc_channel1_buf, 0, sizeof(adc_channel1_buf));
covn_done = 0;
app_adc_multi_channel_conversion_async(&sample_node0, 2);
while(covn_done == 0);
app_adc_voltage_intern(adc_channel0_buf, voltage, TEST_CONV_LENGTH);
printf("Channel 0 value:\r\n");
for(uint32_t i = 3; i < TEST_CONV_LENGTH; i++)//ignore the first 3 abnormal values
{
printf("%0.3fV ", voltage[i]);
delay_us(1000);
}
printf("\r\n\r\n");
app_adc_voltage_intern(adc_channel1_buf, voltage, TEST_CONV_LENGTH);
printf("Channel 1 value:\r\n");
for(uint32_t i = 3; i < TEST_CONV_LENGTH; i++)//ignore the first 3 abnormal values
{
printf("%0.3fV ", voltage[i]);
delay_us(1000);
}
printf("\r\n\r\n");
}
打开微信,使用“扫一扫”即可关注