嗨对话专家,
我正在使用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轴读取的数据远远大于之前在另一个项目中测试的数据远远大得多,并且它不会随着摇杆的运动而改变很多。
你有什么建议吗?非常感谢!
喜悦
喜悦,
您正在通过功能选择差分模式ADCADC_INIT(GP_ADC_SE,0),这意味着每个ADC通道需要两个相应的输入引脚正常工作。请参阅下表:
所以我无法弄清楚你的设置方式。您可能想查看DA14580数据表的通用ADC章节,了解更深入地了解该模块如何工作方式