树莓派GPIO学习和LCD时钟设置

USB 转 TTL 中的四根线这一端是需要链接到树莓派 GPIO 上面的。(如下图)
在这里插入图片描述
红线(VCC)接排针外面一排,靠近显示灯一端的第一针
黑线(GND)接排针外面一排,靠近显示灯一端的第三针
白线(TXD)接排针外面一排,靠近显示灯一端的第四针
绿线(RTX)接排针外面一排,靠近显示灯一端的第五针
重要提示!(切记注意,GIPIO 的第二根针是不需要接的。千万不能接错,否则短路烧毁板子)

1,GPIO编程
s3c2410_gpio_cfgpin //配置端口的GPIO的功能
s3c2410_gpio_getcfg //读取功能配置
s3c2410_gpio_pullup //配置上拉电阻
s3c2410_modify_misccr //杂项配置
s3c2410_gpio_getirq //给定端口,转换出IRQ号
s3c2410_gpio_irqfilter //配置IRQ过滤使能与否
s3c2410_gpio_setpin //写数据到端口
s3c2410_gpio_getpin //从端口读数据
ldr r0, 0x3ff意思是把以0x3ff为地址的存储单元中的数据赋值给r0,相当于r0=[0x3ff]
而ldr r0, =0x3ff,它是一条为指令,意思是把0x3fff直接赋值给r0,相当于r0=0x3ff.

STR R1,[R0] ;将R1中的内容传输到R0中的数所指定的地址的内存中去
LDR R1,[R0] ;将R0中的数所指定的地址的内容传输到R1

  1. bic BIC指令的格式为: BIC{条件}{S} 目的寄存器,操作数1,操作数2
    BIC指令用于清除操作数1的某些位,并把结果放置到目的寄存器中。
    操作数1应是一个寄存器, 操作数2可以是一个寄存器、被移位的寄存器、或一个立即数。
    操作数2为32位的掩码,如果在 掩码中置了某一位1,则清除这一位。未设置的掩码位保持不变。
    GPIO驱动开发
    s5p6818 GPIO驱动
    enum {
    PAD_GPIO_A = (0 * 32),
    PAD_GPIO_B = (1 * 32),
    PAD_GPIO_C = (2 * 32),
    PAD_GPIO_D = (3 * 32),
    PAD_GPIO_E = (4 * 32),
    PAD_GPIO_ALV = (5 * 32),
    };
    sp56818中驱动程序使用NX_GPIO_PADFUNC_0、NX_GPIO_PADFUNC_1、NX_GPIO_PADFUNC_2、NX_GPIO_PADFUNC_3这三个宏,可能某个引脚输入功能是NX_GPIO_PADFUNC_2,而输出功能是NX_GPIO_PADFUNC_1。
    linux驱动(helloword)
    1,基于linux内核的驱动开发(Ubuntu14.04系统)
    1, Makefile(注意 table建)
    ifneq ($(KERNELRELEASE),)
    CROSS_COMPILE =
    CC =gcc //选择编译器
    obj-m :=hello.o //根据hello.c
    else
    KDIR:= /lib/modules/3.2.0-61-generic-pae/build //内核的目录
    PWD:= /home/shiyan/4-1-2 //自己的目录
    all:
    make -C ( K D I R ) M = (KDIR) M= (PWD) modules
    clean:
    rm -f *.ko *.o *.mod.o *.mod.c .symvers
    endif
    2,首先make,生成.ko
    insmod(加载) insmod hello.ko
    rmmod(卸载) rmmmod hello.ko
    lsmod(查看) lsmod | grep hello.ko

2 基于arm 开发板的驱动开发
ifneq ($(KERNELRELEASE),)
obj-m :=1_gpio.o
CROSS_COMPILE =
CC =arm-linux-gnueabihf-gcc //这里必须是arm的编译器
else
KDIR:= /home/tangtao/linux-3.4.y
PWD:= /home/tangtao/driver/1_day/1_gpio
all:
make -C ( K D I R ) M = (KDIR) M= (PWD) modules
clean:
rm -f *.ko *.o *.mod.o *.mod.c .symvers
endif
生成的1_gpio.ko需要移植到开发板上进行安装,命令和上面一样
S5p4818-gpio了解:
1、功能
J60这组GPIO有20个引脚,最常用的有8个引脚(J60-1~J60-8),这个8个引脚有普通I/O功能,也可以配置成SPI功能。电路原理图:
在这里插入图片描述
2、引脚名字、功能配置
在对引脚进行操作之前,我们要先找到相应的引脚在驱动中的名字,这点很重要,如果引脚找错了,无论代码如何写也无法配置出需要的功能。
那么如何找到引脚在驱动的名字呢?以J60-1引脚为例
a) J60-1在开发板电路原理图的名字是MCU_SPICLK0,如图1所示。
b) MCU_SPICLK0在核心板电路原理图对应的是GPIOC29/SPICLK0,如图2所示。
c) GPIOC29在驱动中的命名是PAD_GPIO_C + 29(参考RP4418-4G android开发板说明文档.pdf),我们对PAD_GPIO_C + 29进行操作就可以实现对引脚MCU_SPICLK0操作。表1是各个引脚的名字与功能配置使用的宏(参考arch/arm/plat-s5p4418/drone2/include/cfg_gpio.h)。
在这里插入图片描述
3、功能配置(以J60-1引脚为例)
配置引脚功能要使用到函数NX_GPIO_SetPadFunction(index, bit, func);参数index表示GPIO组:PAD_GPIO_C,参数bit表示具体哪个GPIO引脚:29,参数func表示功能选择宏:PAD_FUNC_ALT0/ PAD_FUNC_ALT1。
如要将J60-1配置成SPI功能:NX_GPIO_SetPadFunction(PAD_GPIO_C, 29, PAD_FUNC_ALT1);
4、J60 中的GPIO与上下、左右四个按键(即K11、K20、K19、K15)共用相同的引脚,在按键驱动(参考:nxp_io_key.c)中,这几个引脚是中断功能的,如果在J60 GPIO控制驱动(参考:rp_gpio_ctrl.c),对这几个引脚进行操作,将会破坏其中断功能。如不需要使用这四个按键,可以不编译nxp_io_key.c,在 rp_gpio_ctrl.c修改代码可以实现对这几个引脚的控制。如需要使用到这四个按键,那么就不允许在rp_gpio_ctrl.c对这四个按键的引脚进行操作。在rp_gpio_ctrl.c中,只要控制J60_NUM这个宏的值就可以实现切换控制。
//如果J60_NUM == 0,那么驱动控制j60-1~j60-8,
//如果J60_NUM == 4,那么驱动控制j60-5~j60-8
#define J60_NUM 4 //35行
2,lcd驱动笔记
在这里插入图片描述
__u32 pixclock; /像素时钟(皮秒)/
  __u32 left_margin; /行切换,从同步到绘图之间的延迟/
  __u32 right_margin; /行切换,从绘图到同步之间的延迟/
  __u32 upper_margin; /帧切换,从同步到绘图之间的延迟/
  __u32 lower_margin; /帧切换,从绘图到同步之间的延迟/
  __u32 hsync_len; /水平同步的长度/
  __u32 vsync_len; /垂直同步的长度/
VBP(vertical back porch):表示在一帧图像开始时,垂直同步信号以后的无效的行数,对应驱动中的upper_margin;
  VFB(vertical front porch):表示在一帧图像结束后,垂直同步信号以前的无效的行数,对应驱动中的lower_margin;
  VSPW(vertical sync pulse width):表示垂直同步脉冲的宽度,用行数计算,对应驱动中的vsync_len;
  HBP(horizontal back porch):表示从水平同步信号开始到一行的有效数据开始之间的VCLK的个数,对应驱动中的left_margin;
 HFP(horizontal front porth):表示一行的有效数据结束到下一个水平同步信号开始之间的VCLK的个数,对应驱动中的right_margin;
HSPW(horizontal sync pulse width):表示水平同步信号的宽度,用VCLK计算,对应驱动中的hsync_len;
pixclock的计算:
DOTCLK = fframe × (X + HBP + HFP+HSPW) × (Y + VBP + VFP+VSPW) (单位:MHz)
pixclock = 1012/ DOTCLK=1012/ (fframe × (X + HBP + HFP+HSPW) × (Y + VBP + VFP+VSPW)) (单位:皮秒)

猜你喜欢

转载自blog.csdn.net/qq_40008325/article/details/86321828
今日推荐