USB-OTG:2、SDX7X-OTG硬件GPIO测试

目录

🍅点击这里查看所有博文

  随着自己工作的进行,接触到的技术栈也越来越多。给我一个很直观的感受就是,某一项技术/经验在刚开始接触的时候都记得很清楚。往往过了几个月都会忘记的差不多了,只有经常会用到的东西才有可能真正记下来。存在很多在特殊情况下有一点用处的技巧,用的不多的技巧可能一个星期就忘了。

  想了很久想通过一些手段把这些事情记录下来。也尝试过在书上记笔记,这也只是一时的,书不在手边的时候那些笔记就和没记一样,不是很方便。

  很多时候我们遇到了问题,一般情况下都是选择在搜索引擎检索相关内容,这样来的也更快一点,除非真的找不到才会去选择翻书。后来就想到了写博客,博客作为自己的一个笔记平台倒是挺合适的。随时可以查阅,不用随身携带。

  同时由于写博客是对外的,既然是对外的就不能随便写,任何人都可以看到。经验对于我来说那就只是经验而已,公布出来说不一定我的一些经验可以帮助到其他的人。遇到和我相同问题时可以少走一些弯路。

  既然决定了要写博客,那就只能认真去写。不管写的好不好,尽力就行。千里之行始于足下,一步一个脚印,慢慢来 ,写的多了慢慢也会变好的。权当是记录自己的成长的一个过程,等到以后再往回看时,就会发现自己以前原来这么菜😂。

  本系列博客所述资料均来自互联网,并不是本人原创(只有博客是自己写的)。出于热心,本人将自己的所学笔记整理并推出相对应的使用教程,方面其他人学习。为国内的物联网事业发展尽自己的一份绵薄之力,没有为自己谋取私利的想法。若出现侵权现象,请告知本人,本人会立即停止更新,并删除相应的文章和代码。

  常规与OTG相关的引脚有两个,分别是USB_IDOTG_PWR_EN,其中USB_ID用于检测是否是DEVICE设备接入,OTG_PWR_EN用于控制外部电路从而给USB_VBUS供电。

  SDX7X平台的GPIO分为三个CHIP,分别是SDX、PMU/PMX、PMK。USB_ID对应的GPIO是SDX_GPIO_50OTG_PWR_EN对应的GPIO是PMX_GPIO_16
输入图片说明
输入图片说明

  查看GPIO的状态可得知。gpiochip2: GPIOs 357-372是pmx75的引脚。gpiochip1: GPIOs 373-378是pmk8550的引脚。gpiochip0: GPIOs 379-511是pinctrl也就是SDX模块本身的引脚。

root@OpenWrt:/# cat /sys/kernel/debug/gpio
gpiochip2: GPIOs 357-372, parent: platform/c42d000.qcom,spmi:qcom,pmx75@1:pinctrl@8800, c42d000.qcom,spmi:qcom,pmx75@1:pinctrl@8800:
xxxxxx
gpiochip1: GPIOs 373-378, parent: platform/c42d000.qcom,spmi:qcom,pmk8550@0:pinctrl@b800, c42d000.qcom,spmi:qcom,pmk8550@0:pinctrl@b800:
xxxxxx
gpiochip0: GPIOs 379-511, parent: platform/f000000.pinctrl, f000000.pinctrl:
xxxxxx

  前面说到,pmx75对应的gpiochip是gpiochip357 。那么PMX_GPIO_16(OTG_PWR_EN)所对应的GPIO序号就是357+ 16-1=372。我们这边可以直接通过下面的指令修改OTG_PWR_EN的状态。

root@OpenWrt:/# ls /sys/class/gpio/
export       gpiochip357  gpiochip373  gpiochip379  unexport
# 使能OTG_PWR_EN
root@OpenWrt:/# echo 372 > /sys/class/gpio/export
root@OpenWrt:/# cat /sys/class/gpio/gpio372/direction
in
root@OpenWrt:/# cat /sys/class/gpio/gpio372/value
0
# 配置为输出
root@OpenWrt:/# echo out > /sys/class/gpio/gpio372/direction
# 输出高电平
root@OpenWrt:/# echo 1 > /sys/class/gpio/gpio372/value

  然后飞线测量EVB板上的OTG_PWR_EN测试点的电平变化。

输入图片说明

  对于SDX_GPIO_50(USB_ID)相对就比较简单。GPIO默认被配置为下拉输入,我们这边可以直接通过下面的指令将USB_ID的配置成上拉输入。配置完成后接入USB设备查询状态,可以看到当USB设备接入时,SDX_GPIO_50(USB_ID)引脚电平被拉低。

# 默认为下拉输入
root@OpenWrt:/# cat /sys/kernel/debug/gpio | grep gpio50
 gpio50  : in low  func0 2mA pull down

# 配置为上拉输入
root@OpenWrt:/# cat /dev/smd7 &
root@OpenWrt:/# echo -e "AT+QGPIOCFG=50,0,0,3,0\r\n" > /dev/smd7
root@OpenWrt:/# AT+QGPIOCFG=50,0,0,3,0
OK

# 未接入设备时,查询状态为high
root@OpenWrt:/# cat /sys/kernel/debug/gpio | grep gpio50
 gpio50  : in high func0 2mA pull up
 
# 接入设备时,查询状态为low
root@OpenWrt:/# cat /sys/kernel/debug/gpio | grep gpio50
 gpio50  : in low func0 2mA pull up

  那么本篇博客就到此结束了,这里只是记录了一些我个人的学习笔记,其中存在大量我自己的理解。文中所述不一定是完全正确的,可能有的地方我自己也理解错了。如果有些错的地方,欢迎大家批评指正。如有问题直接在对应的博客评论区指出即可,不需要私聊我。我们交流的内容留下来也有助于其他人查看,说不一定也有其他人遇到了同样的问题呢😂。

  • 16
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

becase@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值