关注分享主机优惠活动
国内外VPS云服务器

Linux驱动开发:组装LED照明实验(I.MX6UL芯片)(linux x86组装)

总结:转换速率是电平跳跃所需的时间。 例如,从 到 所需的时间。 时间越短,波形越陡,转换速率越高。 相反,增加时间会减慢波形速度。 转换速率会更低。

文章目录 Linux驱动开发:组装LED灯实验(I.MX6UL芯片) 1. I.MX6UL GPIO原理 1.1 I.MX6UL IO命名 1.2 I.MX6UL IO复用 1.3 I. MX6UL IO 配置 1.4 I.MX6UL GPIO 配置 1.5 I.MX6UL 时钟使能 2. 开发板原理图 3. 程序创建 4. 编译下载 5. 实验现象

Linux 驱动开发:组装 LED 灯实验(一) .MX6UL芯片) 1. I.MX6UL的GPIO原理

在学习IMX6UL GPIO原理之前,首先回忆一下STM32GPIO的配置过程。 这分为四个主要步骤。

启用指定 GPIO 的时钟。 初始化GPIO,包括输出功能、上拉、速度等。 是否启用IO复用,并将IO作为其他外设引脚来设置初始输出的电平

接下来按照IMX6UL的GPIO原理以及这个流程。

1.1 I.MX6UL IO命名

在学习之前,先了解一下IMX是如何命名的。 以前学习STM32的时候,它的IO口是按照分组来命名的。 例如,PA是一个组,Group是一个组。 共有 16 个 IO 口,即 PA0-PA15。 IMX6UL 具有完全不同的命名方案。 I.MX6UL的IO主要分为两大类:SNVS域IO和普通IO

SNVC域IO命名:IOMUXC_SNVC_SW_MUX_CTL_PAD_XX_XX,后面加XX_XX 是 GPIO 的名称(例如 BOOT_MODE0)。

通用IO名称:IOMUXC_SW_MUX_CTL_PAD_XX_XX,其中接下来的XX_XX是GPIO名称(例如GPIO1_IO01、UART1_TX_DATA、JTAG_MOD等)。

具体IO文档请参考IMX6UL官方文档。

1.2 I.MX6UL IO 复用

IO 复用是通过寄存器控制的。 这里我们以 IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO00 为例。 查看手册,我看到一个名为 IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO01 的 32 位寄存器。 寄存器是:

可以看到寄存器的地址是20E_005CH。 低5位用于模式控制,分为SION和MUX_MODE。 其他位是保留位。

MUX_MODE 位 0-3 对应于特定模式:

MUX_MODE 复用模式0000ALT0复用为IIC2_SCL0001ALT1,复用为GPT1_CAPTURE10010ALT2,复用为ANATOP_OTG1_ID0011ALT3。 复用为 ENET1_REF_CLK10100ALT4,MQS_RIGHT0101AL T5 复用为 GPIO1_IO000110ALT6 ENET1_1588_Ent0111alt7 的控制功能重用为 WDOG3_WDOG_B

SION 为 src_system_reset1000ALT8。

以上是iOMUXC_SW_MUX_CTL_PAD_GPIO1_IO00复用寄存器,简单介绍了各种IO复用寄存器并不完全相同。 具体需要根据说明书进行检查。

I.MX6U中有五组GPIO:GPIO1、GPIO2、GPIO3、GPIO4、GPIO5,其中GPIO1有32个IO,GPIO2有32个IO。 22 IO,GPIO3 上 29 IO,GPIO4 上 29 IO,GPIO5 上 12 IO,总共 124 个 GPIO

1.3 I.MX6UL IO 配置

1.2 描述了 IO 端口寄存器的复用配置,但具体操作 IO 配置为由另一个寄存器控制,我们继续以GPIO1组的IO00为例。 某些IO操作配置寄存器由IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO00控制。 寄存器为:

由于不同位控制的IO配置功能不同,所以IO工作原理图。 上图IO原理图:

寄存器分析:

HYS(bit16):对应图中的HYS,使能所使用的迟滞比较器。 。 IO 输入时有效,可用于处理输入波形。 有关磁滞比较器的更多信息,请参阅以下文章: 磁滞比较器。 当HYS为0时,磁滞比较器被禁止;当HYS为1时,磁滞比较器被使能。

PUS(bit15:14):图中的PUS是上拉电阻和下拉电阻:

位功能 00100k 下拉 0147k 上拉 10100k 上拉 1122k pull-up

PUE(bit13):如果IO用作输入(上图中未显示),则该位用于设置IO是否使用上拉和下拉或状态保持器。 0 使用状态保持器,1 使用上拉和下拉。

Status Keeper 仅在使用 IO 作为输入时才有用。 如果外部电路断电,IO口仍能保持之前的状态。

PKE(bit12):对应。PKE,该位用于启用或禁用下拉或状态保持器功能。 如果为 0,则禁用下拉/状态保持器;如果为 1,则启用下拉/状态保持器。

ODE(bit11):对应图中的ODE,如果IO作为输出,该位用于禁止或使能开路输出。 如果该位为 0,则禁止打开输出。 当该位 = 1 时,开路输出功能启用。

SPEED(bit7:6):对应图中的SPEED。 当使用IO作为输出时,该位用于设置IO速度。

位设定速度 00 低速 50M01 中速 100M10 中速 100M11 最高速度 200M

DSE(bit5:3):对应 DSE。 该图用于设置IO作为输出时的驱动强度。 共有8个可选选项如表所示:

(R0在3.3V时为260Ω,1.8V时为150Ω,连接DDR时为240Ω)

位设置速度000输出驱动器关闭 001R0 ****010R0/2011R0/3100R0/4101R0/ 5110R0/6111R0/7

SRE(bit0):对应图中的 SRE,设置转换速率。 该位中的 0 表示低转换速率,1 表示高转换速率。

转换速率是IO电平转换所需的时间(例如从0到1所需的时间)。 时间越小,波形越陡,直通度越高。 速率;反之,时间越长,波形越陡。 波形越平滑,转换速率越低。 高速信号具有高转换速率并且必须很快。 如果考虑电磁兼容性,则压摆率必须较低。

转换速率参考:运算放大器转换速率

1.4 I.MX6UL GPIO 配置

1.2 和 1.3 讨论 IO 复用。 和功能寄存器设置。 1.4节分析了众多复用IO之一的GPIO的具体配置。

首先我们看一下GPIO结构图。

p>

IOM在结构中可见UXC 有两个寄存器 SW_MUX_CTL_PAD_* 和 SW_PAD_CTL_PAD__* 用于配置 IO。 另一方面,多频段 GPIO 配置由其他八个 GPIO 特定寄存器组成。

这8个寄存器介绍如下。

首先看GPIOx_DR数据寄存器。 从翻译中可以看出,IO模式设置为GPIO并且确定了GPIO的输入输出方向后,输出状态在DR寄存器中。 该位可以控制GPIO输出值。 输入后,将存储输入的状态值。 通过读取可以获取GPIO状态。 例如,如果GPIO1_IO00引脚接地,则GPIO1.DR的bit0为0。

GPIOx_IR方向寄存器的结构为:

GPIO_GDIR用作方向控制。 每个位指定信号的方向。 该寄存器用于设置特定IO的操作方向为输入或输出。 同样,每个IO对应一个bit。 要将 GPIO 配置为输入,请将相应位设置为 0。 如果要将其设置为输出,请设置为 1。

PSR寄存器:GPIO状态寄存器

PSR寄存器也是对应一个bit的GPIO。 通过读取对应的位,可以获取对应GPIO的状态,即GPIO的高低电平值、功能、输入状态。 DR 寄存器是相同的。

ICR1和ICR2是中断控制寄存器。 ICR1 用于配置底部 16 个 GPIO,ICR2 用于配置顶部 16 个 GPIO。 以ICR1为例,寄存器结构如下。

两组位控制GPIO中断,与STM32中断类似。 每组的可配置线路选择为:

位设定速度 00 低电平触发 01 高电平触发 10 上升沿触发 11 下降沿触发

例如配置GPIO1_IO15在上升沿触发中断并使用GPIO1.ICR1=2。

未经允许不得转载:主机频道 » Linux驱动开发:组装LED照明实验(I.MX6UL芯片)(linux x86组装)

评论 抢沙发

评论前必须登录!