imx6ul之gpio与iomux

上拉电阻:

上拉电阻就是起上拉作用的电阻,就是将一个不确定值的引脚通过一个电阻接到高电平上,使该引脚呈现高电平。

iomux

32位软件多路复用控制寄存器

GPIO编程

gpio读模式

读取输入信号的编程顺序如下

1.配置IOMUX选择GPIO模式

2.配置GPIO方向寄存器为输入(GPIO_GDIR[GDIR] set to 0b)

3,从数据寄存器和板级状态寄存器读取值。

//设置GPIO口输入模式

write sw_mux_ctl____, 32'h00000000

//设置GDIR为输入

write GDIR[31:4,input3_bit, input2_bit, input1_bit, input0_bit,] 32'hxxxxxxx0

//从DR读取输入值

read DR

//从PSR读取输入值

read PSR

需要注意的是当GPIO方向设置为输入时(GPIO_GDIR = 0),对GPIO_DR的读访问不返回GPIO_DR数据,相反,它返回GPIO_PSR数据,这是相应的输入信号值。

gpio写模式

驱动输出信号的编程顺序如下:

1.配置IOMUX选择GPIO模式(Via IOMUXC),如果需要通过PSR读取loopback pad value还可以开启SION

2,配置GPIO方向寄存器为输出(GPIO_GDIR[GDIR] set to 1b)

3.写一个值进数据寄存器

// SET PADS TO GPIO MODE VIA IOMUX.

write sw_mux_ctl_pad_.mux_mode,

// Enable loopback so we can capture pad value into PSR in output mode

write sw_mux_ctl_pad_.sion, 1

// SET GDIR=1 TO OUTPUT BITS.

write GDIR[31:4,output3_bit,output2_bit, output1_bit, output0_bit,] 32'hxxxxxxxF

// WRITE OUTPUT VALUE=4’b0101 TO DR.

write DR, 32'hxxxxxxx5

// READ OUTPUT VALUE FROM PSR ONLY.

read_cmp PSR, 32'hxxxxxxx5

 

复用模式 (muxmode)选择字段表

示例:

如CSI_MCLK

0000 ALT0 — Select mux mode: ALT0 mux port: CSI_MCLK of instance: csi

0001 ALT1 — Select mux mode: ALT1 mux port: USDHC2_CD_B of instance: usdhc2

0010 ALT2 — Select mux mode: ALT2 mux port: RAWNAND_CE2_B of instance: rawnand

0011 ALT3 — Select mux mode: ALT3 mux port: I2C1_SDA of instance: i2c1

0100 ALT4 — Select mux mode: ALT4 mux port: EIM_CS0_B of instance: eim

0101 ALT5 — Select mux mode: ALT5 mux port: GPIO4_IO17 of instance: gpio4

0110 ALT6 — Select mux mode: ALT6 mux port: SNVS_HP_VIO_5_CTL of instance: snvs_hp

1000 ALT8 — Select mux mode: ALT8 mux port: UART6_TX of instance: uart6

 

在imx6ul设备树对gpio的配置中

#define MX6UL_PAD_BOOT_MODE0__GPIO5_IO10 0x0014 0x02A0 0x0000 0x5 0x0

0x0014是复用寄存器,0x02A0是配置寄存器,0x0000是输入寄存器,0x5复用模式( mux mode)表示ALT5,0x0是输入值。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(imx6ul)