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输出,由于屏蔽了硬件相关信息,其接口理解也更为方便,在此不再赘述。

  • 相关阅读:
    命令拷屏之网络工具
    PHP 设计模式 笔记与总结(1)命名空间 与 类的自动载入
    Java实现 计蒜客 1251 仙岛求药
    Java实现 计蒜客 1251 仙岛求药
    Java实现 计蒜客 1251 仙岛求药
    Java实现 蓝桥杯 算法训练 字符串合并
    Java实现 蓝桥杯 算法训练 字符串合并
    Java实现 蓝桥杯 算法训练 字符串合并
    Java实现 LeetCode 143 重排链表
    Java实现 LeetCode 143 重排链表
  • 原文地址:https://www.cnblogs.com/miaoxiong/p/10556072.html
Copyright © 2011-2022 走看看