一般在U-boot上就设置电平值,适用于电源的复位,MIPI、LVDS、GVI之类的屏幕控制上电时序,当然,也适用任何模块以及任何引脚。
注意:如果该区域的引脚存在电源域的保护机制,需要先解除保护。
通常情况下, 在 u-boot/common/board_f.c 文件上,都能设置GPIO引脚的电平值。今天讲一下不一样的设置方式。在rk3288_7.1/u-boot/board/rockchip/rk32xx/rk32xx.c的文件中,这个文件是板子初始化的文件,其中 board_late_init 函数是进行一些硬件初始化。代码如下
//自己写的函数
void set_down_up_GPIO(void)
{
printf("set_down_up GPIO5C2 GPIO7A3 \n");
gpio_direction_output(GPIO_BANK5|GPIO_C2, 0); // 设置GPIO5_C2 引脚的电平值为 0
gpio_direction_output(GPIO_BANK7|GPIO_A3, 0); // 设置GPIO7_A3 引脚的电平值为 0
msleep(500);
msleep(500);
gpio_direction_output(GPIO_BANK5|GPIO_C2, 1); // 设置GPIO5_C2 引脚的电平值为 1
gpio_direction_output(GPIO_BANK7|GPIO_A3, 1); // 设置GPIO7_A3 引脚的电平值为 1
}
//初始化函数
int board_late_init(void)
{
debug("board_late_init\n");
board_init_adjust_env(); //调整环境
load_disk_partitions(); //加载分区磁盘 也就