linux内核模拟舵机pwm,linux舵机硬件环境搭建成功--Apple的学习笔记

一,前言

我之前找出了我很多10年前(单片机+2440开发板)以及5年前(智能避障小车)自学项目时候买的元器件及模组。所以我才最近就趁着重新开始学习linux内核驱动的机会,把这些保存很久的资源进行利用。

二,PWM设备驱动,SG90舵机硬件环境搭建

1)SG90舵机连线,三条线是红的、黑色、棕色,接法如下:

棕 : GND

红 : VCC(3.5v-6v)

黄: 信号线

2)看spec及原理图,找到将要连接的引脚,并且通过document中pwm的介绍搜索关键字,找到ehrpwm。

f73b7eae5e0c

image.png

3)实物图连接,之前的eeprom还没有拆。

f73b7eae5e0c

image.png

三,验证硬件环境

1)Kernel中配置ehrpwm

f73b7eae5e0c

image.png

2)am335x-bone-common.dtsi设备树修改

pwm_pins: pinmux_pwm_pins {

pinctrl-single,pins = <

AM33XX_PADCONF(AM335X_PIN_GPMC_A2, PIN_OUTPUT_PULLDOWN, MUX_MODE6) /* EHRPWM1A */

>;

};

/* start add by apple */

&epwmss1{

status = "okay";

};

&ehrpwm1{

pinctrl-names = "default";

pinctrl-0 = ;

status = "okay";

}

/* end add by apple */

最后调试通过,SG90舵机会转。

echo 0 >/sys/class/pwm/pwmchip0/export

echo 20000000 > /sys/class/pwm/pwmchip0/pwm0/period

echo 1000000 > /sys/class/pwm/pwmchip0/pwm0/duty_cycle

echo 1 > /sys/class/pwm/pwmchip0/pwm0/enable

四,遇到的问题

1,一开始舵机不动,所以用示波器看波形,无波形。

检查设备树功能硬件配置正确,打印寄存器查看与预期相符。检查硬件连接到J9的P14。结果我连接到了P16,修改后有波形出现。

devmem 0x44E10848 32

0x00000006

2,有输出,但是波形不正确。

查看echo命令,仅设置了period,忘记设置duty_cycle了。设置了duty_cycle后,20ms周期,占空比高电平维持1ms。波形正确。

f73b7eae5e0c

image.png

3,确认pwm正确后,将引脚连接到SG90舵机,结果舵机不转。

检查舵机引脚连线正确,于是运行过程中用示波器查看波形的电压幅度值约3v。原来是电流小了,驱动不了了。所以将usb电源改成了power电源后,通过pwm命令能控制舵机能运行,只是运行一会就停了,估计是pwm一直输出,太快了,之后会自制驱动代码来控制。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值