阅读:2849回复:0

GPIO高低电平开机

楼主#
更多 发布于:2021-06-30 23:18
AML支持的开机方式很多种:CEC,BT, WIFI, HRTC, IR REMOTE, SAR ADC, GPIO等


BT开机有点一言难尽,明明可以做的,模组厂说为了推广新芯片,旧的模组不再提供技术支持.
GPIO用得比较少,但这几天正好遇到了。
需求:
GPIOC_6为高电平时开机(两种情形:上电时就是高电平/上电初始化后外部拉高)
修改:
pwr_ctrl.c:
void get_wakeup_source(void *response, unsigned int suspend_from)

 if (1) {
 struct wakeup_gpio_info *gpio;
 gpio = &(p->gpio_info);
 gpio->wakeup_id = POWER_KEY_WAKEUP;
 gpio->gpio_in_idx = GPIOC_6;
 gpio->gpio_in_ao = 0;
 gpio->gpio_out_idx = -1;
 gpio->gpio_out_ao = 0;
 gpio->irq = IRQ_GPIO2_NUM;
 gpio->trig_type = GPIO_IRQ_RISING_EDGE;
 p->gpio_info_count = ++i;
 }
static unsigned int detect_key(unsigned int suspend_from)
do-while:

 if (readl(PREG_PAD_GPIO3_I) & (0x01 << 6)) {
 uart_puts("GPIO WAKE UP\n");
 exit_reason = POWER_KEY_WAKEUP;
 }


关键2点:
1. GPIO_IRQ_RISING_EDGE,发出中断的条件
2. 寄存器读取:PREG_PAD_GPIO3_I,查阅datasheet,有些GPIO的高低电平可能是反的:高0低1


本质来说,HRTC、BT、HRTC都是GPIO方式来开机的。

最新喜欢:

thomas_2022thomas... zhaoyf13zhaoyf...
游客

返回顶部