IMX8 GPIO的上拉下拉如何配置

a1304662033 2020-04-27 05:31:13
本人从单片机转向LINUX驱动开发,在单片机平台,一般IO口存在上拉、下拉的输入功能,在linux平台下,arm芯片是否有此功能,我在linux/gpio.h下并未看到有相关配置API,想知道如果我要配置成上拉输入,是不是只能通过硬件去做上拉(MCU为imx8m)
...全文
3271 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
涵筱熙丶 2020-10-16
  • 打赏
  • 举报
回复
引用 5 楼 之子不知名 的回复:
[quote=引用 3 楼 a1304662033 的回复:] [quote=引用 2 楼 melo_fang的回复:]这个网上很多人写过了 1.gpio_set_value(unsigned gpio, int value)用来设置gpio寄存器的值 2.gpio_direction_output(unsigned gpio, int value)用来设置gpio为输出功能,同时设置gpio输出的值。 一般来说,设置一个GPIO口为输出,先执行一次gpio_direction_output,然后接下来只需执行gpio_set_value就行了。 3.gpio_direction_input(unsigned gpio)用来设置gpio为输入功能 4.gpio_get_value(unsigned gpio)用来获取gpio口的输入的值; 5.在使用gpio口之前,先用gpio_request(unsigned gpio, const char* label)申请gpio口的使用,若申请成功,则说明该gpio口未被使用。 6.在使用完gpio口之后,用gpio_free(unsigned gpio)释放gpio口。 当然,在引入设备树之后,一般会在设备树里对用到的gpio的初始状态进行设置
嗯 你这个只是设置输入输出和电平呀,还有上拉下拉 开漏 高阻这种io口的功能不知道在哪设置[/quote] 是在设备树(dts)中设置的。 比如查看 i.MX8QM 的 MIPI_CSI0_GPIO0_00 默认的上下拉配置: 1. 找到设备树中 iomux 的配置: arch/arm64/boot/dts/freescale/fsl-imx8qm-mek.dtsi &iomuxc { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_hog>; imx8qm-mek { ...... pinctrl_mipi_csi0_en_rst: mipi_csi0_en_rst { fsl,pins = < SC_P_MIPI_CSI0_GPIO0_00_LSIO_GPIO1_IO27 0x00000021 SC_P_MIPI_CSI0_GPIO0_01_LSIO_GPIO1_IO28 0x00000021 >; }; 宏 SC_P_MIPI_CSI0_GPIO0_00_LSIO_GPIO1_IO27 定义在: include\dt-bindings\pinctrl\pads-imx8qm.h 中。 32 位的数值 0x00000021 就是写入 iomux 寄存器的值。 2. 找到 i.MX8QM iomux 寄存器配置的说明,在 i.MX8QM 的 Reference Manual 中找到: Chapter 8 Chip IO - IOMUXD -- Memory Map and Register Definition --- register descriptions ---- 8.2.4.1.83 MIPI_CSI0_GPIO0_00 其中关于上下拉的配置是第 6、5 位: 6-5 Pull Down Pull Up 00b - bus-keeper 01b - pull-up 10b - pull-down 11b - no pull 由于前面写入寄存器的值是 0x00000021 ,所以对应的配置是上拉 pull-up。[/quote] 您好!可以给一份imx8qm的 reference manual 么!跪求一份!实在是找不到!237810399@qq.com 十分感谢!!!!
a1304662033 2020-04-28
  • 打赏
  • 举报
回复
引用 5 楼 之子不知名的回复:
[quote=引用 3 楼 a1304662033 的回复:] [quote=引用 2 楼 melo_fang的回复:]这个网上很多人写过了 1.gpio_set_value(unsigned gpio, int value)用来设置gpio寄存器的值 2.gpio_direction_output(unsigned gpio, int value)用来设置gpio为输出功能,同时设置gpio输出的值。 一般来说,设置一个GPIO口为输出,先执行一次gpio_direction_output,然后接下来只需执行gpio_set_value就行了。 3.gpio_direction_input(unsigned gpio)用来设置gpio为输入功能 4.gpio_get_value(unsigned gpio)用来获取gpio口的输入的值; 5.在使用gpio口之前,先用gpio_request(unsigned gpio, const char* label)申请gpio口的使用,若申请成功,则说明该gpio口未被使用。 6.在使用完gpio口之后,用gpio_free(unsigned gpio)释放gpio口。 当然,在引入设备树之后,一般会在设备树里对用到的gpio的初始状态进行设置
嗯 你这个只是设置输入输出和电平呀,还有上拉下拉 开漏 高阻这种io口的功能不知道在哪设置[/quote] 是在设备树(dts)中设置的。 比如查看 i.MX8QM 的 MIPI_CSI0_GPIO0_00 默认的上下拉配置: 1. 找到设备树中 iomux 的配置: arch/arm64/boot/dts/freescale/fsl-imx8qm-mek.dtsi &iomuxc { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_hog>; imx8qm-mek { ...... pinctrl_mipi_csi0_en_rst: mipi_csi0_en_rst { fsl,pins = < SC_P_MIPI_CSI0_GPIO0_00_LSIO_GPIO1_IO27 0x00000021 SC_P_MIPI_CSI0_GPIO0_01_LSIO_GPIO1_IO28 0x00000021 >; }; 宏 SC_P_MIPI_CSI0_GPIO0_00_LSIO_GPIO1_IO27 定义在: include\dt-bindings\pinctrl\pads-imx8qm.h 中。 32 位的数值 0x00000021 就是写入 iomux 寄存器的值。 2. 找到 i.MX8QM iomux 寄存器配置的说明,在 i.MX8QM 的 Reference Manual 中找到: Chapter 8 Chip IO - IOMUXD -- Memory Map and Register Definition --- register descriptions ---- 8.2.4.1.83 MIPI_CSI0_GPIO0_00 其中关于上下拉的配置是第 6、5 位: 6-5 Pull Down Pull Up 00b - bus-keeper 01b - pull-up 10b - pull-down 11b - no pull 由于前面写入寄存器的值是 0x00000021 ,所以对应的配置是上拉 pull-up。[/quote] 大佬牛逼!!(破音)
之子不知名 2020-04-28
  • 打赏
  • 举报
回复
引用 3 楼 a1304662033 的回复:
[quote=引用 2 楼 melo_fang的回复:]这个网上很多人写过了 1.gpio_set_value(unsigned gpio, int value)用来设置gpio寄存器的值 2.gpio_direction_output(unsigned gpio, int value)用来设置gpio为输出功能,同时设置gpio输出的值。 一般来说,设置一个GPIO口为输出,先执行一次gpio_direction_output,然后接下来只需执行gpio_set_value就行了。 3.gpio_direction_input(unsigned gpio)用来设置gpio为输入功能 4.gpio_get_value(unsigned gpio)用来获取gpio口的输入的值; 5.在使用gpio口之前,先用gpio_request(unsigned gpio, const char* label)申请gpio口的使用,若申请成功,则说明该gpio口未被使用。 6.在使用完gpio口之后,用gpio_free(unsigned gpio)释放gpio口。 当然,在引入设备树之后,一般会在设备树里对用到的gpio的初始状态进行设置
嗯 你这个只是设置输入输出和电平呀,还有上拉下拉 开漏 高阻这种io口的功能不知道在哪设置[/quote] 是在设备树(dts)中设置的。 比如查看 i.MX8QM 的 MIPI_CSI0_GPIO0_00 默认的上下拉配置: 1. 找到设备树中 iomux 的配置: arch/arm64/boot/dts/freescale/fsl-imx8qm-mek.dtsi &iomuxc { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_hog>; imx8qm-mek { ...... pinctrl_mipi_csi0_en_rst: mipi_csi0_en_rst { fsl,pins = < SC_P_MIPI_CSI0_GPIO0_00_LSIO_GPIO1_IO27 0x00000021 SC_P_MIPI_CSI0_GPIO0_01_LSIO_GPIO1_IO28 0x00000021 >; }; 宏 SC_P_MIPI_CSI0_GPIO0_00_LSIO_GPIO1_IO27 定义在: include\dt-bindings\pinctrl\pads-imx8qm.h 中。 32 位的数值 0x00000021 就是写入 iomux 寄存器的值。 2. 找到 i.MX8QM iomux 寄存器配置的说明,在 i.MX8QM 的 Reference Manual 中找到: Chapter 8 Chip IO - IOMUXD -- Memory Map and Register Definition --- register descriptions ---- 8.2.4.1.83 MIPI_CSI0_GPIO0_00 其中关于上下拉的配置是第 6、5 位: 6-5 Pull Down Pull Up 00b - bus-keeper 01b - pull-up 10b - pull-down 11b - no pull 由于前面写入寄存器的值是 0x00000021 ,所以对应的配置是上拉 pull-up。
a1304662033 2020-04-28
  • 打赏
  • 举报
回复
引用 2 楼 melo_fang的回复:
这个网上很多人写过了
1.gpio_set_value(unsigned gpio, int value)用来设置gpio寄存器的值
2.gpio_direction_output(unsigned gpio, int value)用来设置gpio为输出功能,同时设置gpio输出的值。
一般来说,设置一个GPIO口为输出,先执行一次gpio_direction_output,然后接下来只需执行gpio_set_value就行了。
3.gpio_direction_input(unsigned gpio)用来设置gpio为输入功能
4.gpio_get_value(unsigned gpio)用来获取gpio口的输入的值;
5.在使用gpio口之前,先用gpio_request(unsigned gpio, const char* label)申请gpio口的使用,若申请成功,则说明该gpio口未被使用。
6.在使用完gpio口之后,用gpio_free(unsigned gpio)释放gpio口。

当然,在引入设备树之后,一般会在设备树里对用到的gpio的初始状态进行设置
嗯 你这个只是设置输入输出和电平呀,还有上拉下拉 开漏 高阻这种io口的功能不知道在哪设置
melo_fang 2020-04-28
  • 打赏
  • 举报
回复
这个网上很多人写过了
1.gpio_set_value(unsigned gpio, int value)用来设置gpio寄存器的值
2.gpio_direction_output(unsigned gpio, int value)用来设置gpio为输出功能,同时设置gpio输出的值。
一般来说,设置一个GPIO口为输出,先执行一次gpio_direction_output,然后接下来只需执行gpio_set_value就行了。
3.gpio_direction_input(unsigned gpio)用来设置gpio为输入功能
4.gpio_get_value(unsigned gpio)用来获取gpio口的输入的值;
5.在使用gpio口之前,先用gpio_request(unsigned gpio, const char* label)申请gpio口的使用,若申请成功,则说明该gpio口未被使用。
6.在使用完gpio口之后,用gpio_free(unsigned gpio)释放gpio口。

当然,在引入设备树之后,一般会在设备树里对用到的gpio的初始状态进行设置
mouse_zhu 2020-04-28
  • 打赏
  • 举报
回复
我记得这东西都有芯片手册.每一个io口都有一个地址,通过给这个地址赋值就可以

1,324

社区成员

发帖
与我相关
我的任务
社区描述
主要是开发驱动技术
社区管理员
  • 驱动程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧