zoukankan      html  css  js  c++  java
  • wiringPi库的pwm配置及使用说明

    本文介绍树莓派(raspberry pi)在linux c 环境下的硬件pwm配置及使用方法。

    1. 下载安装wiringPi

    此步骤建议参考官网指南,wiringPi提供了对树莓派的硬件IO访问,包括GPIO/I2C/PWM等,下载安装后本地会出现wiringPi文件夹,根目录下有/examples 可供参考。

    2. 树莓派PWM硬件

    以raspberry pi 3b 为例,尝试在命令行下输入 pinout,可查看当前pi的io映射图

    这是当前pi的gpio布局,却不是wiringPi的IO映射表,因此参考时需注意,好在搜索一番便找到一张raspberry 3b的wiringpi IO映射表

    图中的gpio1(pwm0) 及 gpio23(pwm1) 即为我们需要传输给wiringpi的硬件pwm输出脚

    3. wiringPi pwm 接口说明

    在examples/pwm.c 或 wiringPi/wiringPi.c中可查看pwm的相关接口,但却没有详细的调用说明,经过一番查阅,得出接口的使用方法为:

    • pwmSetClock():设置pwm的工作时钟。19.2MHz晶振为pwm提供时钟输入,wiringpi在初始化gpio时默认采用32倍分频(参考wiringPI.c 中的pinMode() 代码),因此不调用此函数,pwm的默认工作时钟为600KHz.
    • pwmSetRange():设置pwm的输出周期。以600KHz的工作时钟为例,假设pwm输出频率为freq,则range = 600000/freq.
    • pwmSetMode():设置pwm的工作模式,wiringPi.h头文件中包含此2种模式 PWM_MODE_MS/PWM_MODE_BAL,但并未做任何解释。。.那就看手册《BCM2837-ARM-Peripherals.pdf》吧

      从描述来看,MSEN=0似乎用来传输N/M数据, MSEN=1才是设置占空比输出,因此处的pwm输出模式选择PWM_MODE_MS
    • pwmWrite():设置pwm的输出占空比。因为一个周期长度为range,因此占空比的范围为0~range.

    此外,wiringPi也提供了软件PWM输出,由于屏蔽了硬件相关信息,其接口理解也更为方便,在此不再赘述。

  • 相关阅读:
    kafka学习(八)
    kafka学习(七)
    kafka学习(六)
    kafka学习(五)
    kafka学习(四)
    kafka学习(三)
    kafka学习(二)
    kafak学习(一)
    ssh远程登录
    pycharm
  • 原文地址:https://www.cnblogs.com/miaoxiong/p/10556072.html
Copyright © 2011-2022 走看看