嗨对话专家,
我使用的是自己定制的DA14580物联网板。我想修改鼠标示例项目,这样鼠标就可以随着面板上两个引脚上电压水平的变化而移动(这两个引脚连接到摇杆上,就像你在游戏手柄上看到的那样)。
我已经测试了这两个引脚的电压水平,同时触摸在另一个项目文件中的摇杆开关。它工作得很好。但是当我将相同的代码移动到鼠标项目时,只有两个大头针中的一个可以工作!
P0[0]是X轴,P0[1]是Y轴。我的代码如下所示。
bool app_mouse_send_motion_report(空白)
{
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 - >类型=出版社;
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);
返回true;
}
返回错误;
}
我已经完成了GPIO配置和引脚预留:
#定义MOUSE_XADC_PORT GPIO_PORT_0
#定义MOUSE_XADC_PIN GPIO_PIN_0
#定义MOUSE_YADC_PORT GPIO_PORT_0
#定义MOUSE_YADC_PIN GPIO_PIN_1
GPIO_ConfigurePin(MOUSE_XADC_PORT, MOUSE_XADC_PIN, INPUT, PID_ADC, false);
GPIO_ConfigurePin(MOUSE_YADC_PORT, MOUSE_YADC_PIN, INPUT, PID_ADC, false);
Reserve_gpio (gpio, gpio_port_0, gpio_pin_1, pid_adc);
Reserve_gpio (gpio, gpio_port_0, gpio_pin_0, pid_adc);
Y轴没问题。但是从X轴读取的数据比我之前在另一个项目中测试的数据要大得多,而且它不会随着摇杆的移动而改变很多。
你有什么建议吗?非常感谢!
快乐
你好快乐,
您正在根据功能选择差分模式ADCadc_init (GP_ADC_SE, 0),这意味着每个ADC通道需要两个相应的输入引脚才能正常工作。见下表:
所以我不知道你是怎么安排的。你可能想要查看DA14580数据表的通用用途ADC章节,以更深入地了解这个模块如何工作