2个帖子/ 0新
最后一篇
Joyyqy.
离线
最后一次露面:3年6个月前
加入:2017-05-21 11:58
DA 14580 ADC读错了结果

嗨对话专家,

我正在使用DA14580 IOT板,我自己的定制。我想修改鼠标示例项目,以便鼠标可以随着电路板两个引脚的电压电平的变化而移动(这两个引脚连接到像游戏手套或其他东西上的摇杆一样)。

我在这两个引脚上测试了电压电平,同时在另一个项目文件中触摸摇杆开关。它效果很好。但是当我向鼠标项目移动相同的代码时,只有两个引脚中的一个工作!

p0 [0]是我的x轴,p0 [1]是我的y轴。我的代码如下所示。

BOOL APP_MOUES_SEND_MOTION_REPORT(void)
{
kbd_rep_info * preportinfo;
int axisx = 0;
int axisy = 0;
adc_init(gp_adc_se,0);

//添加报告
preportinfo = kbd_pull_from_list(&kbd_free_list);
assert_warning(preportinfo);

//将重新加载不活动计数器(如果已启用)
sync_key_press_evt = true;//将呼叫同步到app_state_update(key_press_evt);

如果(preportinfo)
{
preportinfo-> type = mound;
preportinfo-> modifier_report = false;
preportinfo-> char_id = normal_report;
Preportinfo-> Len = 2;

ADC_ENABLE_CHANNEL(ADC_CHANNEL_P00);
Axisx =(adc_get_sample());

adc_enable_channel(adc_channel_p01);
Axisy =(adc_get_sample());

normal_key_report_st [0] = Axisx;
normal_key_report_st [1] = Axisy;

mouse_quad_decoder_interrupt_has_triggered = false;

memcpy(preportinfo-> pbuf,normal_key_report_st,2);
kbd_push_to_list(&kbd_trm_list,preportinfo);

返回真;
}

返回false;
}

我已经完成了GPIO配置和引脚预留:

#define mouse_xadc_port gpio_port_0.
#define mouse_xadc_pin gpio_pin_0.

#define mouse_yadc_port gpio_port_0.
#define mouse_yadc_pin gpio_pin_1.

gpio_configurepin(mouse_xadc_port,mouse_xadc_pin,输入,pid_adc,false);
gpio_configurepin(mouse_yadc_port,mouse_yadc_pin,输入,pid_adc,false);

保留_GPIO(GPIO,GPIO_PORT_0,GPIO_PIN_1,PID_ADC);
保留_GPIO(GPIO,GPIO_PORT_0,GPIO_PIN_0,PID_ADC);

事情是y轴的工作正常。但是从X轴读取的数据远远大于之前在另一个项目中测试的数据远远大得多,并且它不会随着摇杆的运动而改变很多。

你有什么建议吗?太感谢了!
喜悦

关键词:
ADC
设备:
qinjiny_dialog
离线
最后一次露面:1天1小时前
职员
加入:2016-11-01 05:47
喜悦,

喜悦,

您正在通过功能选择差分模式ADCADC_INIT(GP_ADC_SE,0),这意味着每个ADC通道需要两个相应的输入引脚正常工作。请参阅下表:

所以我无法弄清楚你的设置方式。您可能想查看DA14580数据表的通用ADC章节,了解更深入地了解该模块如何工作方式