Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
PWM
给RT-Thread添加PWM驱动框架
发布于 2018-05-07 22:22:16 浏览:7745
订阅该版
[tocm] # PWM驱动框架 PWM(脉冲宽度调制) 简单的 PWM 主要两个参数: * 频率 * 占空比 一般用在背光灯等要求不高的地方。 高级特性不太适合通用框架 * 同步模式 * 死区控制 # RT-Thread的PWM实现 1. 为省空间,所以的PWM通道合并为一个设备: RT_Device_Class_Miscellaneous 2. 使用pos参数作为通道号 3. 支持以纳秒为单位设置周期(频率)和占空比。 ## 配置 ```c struct rt_pwm_configuration { rt_uint32_t period; /* unit:ns 1ns~4.29s:1Ghz~0.23hz */ rt_uint32_t pulse; /* unit:ns (pulse<=period) */ }; ``` 之所以单位没有使用赫兹,是因为占空比尽可能不使用浮点数。 所以统一使用纳秒比较好。 ## write ```c rt_size_t rt_device_write(rt_device_t dev, rt_off_t pos, const void *buffer, rt_size_t size); ``` 使用通用的 rt_device_write 来配置PWM。 pos参数为通道编号,每次只能配置一个通道。 传入的size单位为字节,大小为 sizeof(struct rt_pwm_configuration) ## read ```c rt_size_t rt_device_read (rt_device_t dev, rt_off_t pos, void *buffer, rt_size_t size); ``` 使用通用的 rt_device_write 来获取当前的PWM配置。 pos参数为通道编号,每次只能获取一个通道。 传入的size单位为字节,大小为`sizeof(struct rt_pwm_configuration)`
查看更多
12
个回答
默认排序
按发布时间排序
aozima
2018-05-07
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
驱动示例与测试 ```c dev = rt_device_find("pwm"); rt_device_open(dev, RT_DEVICE_FLAG_RDWR); configuration.period = 1000*1000; /* 1ms ==> 1Khz */ configuration.pulse = configuration.period / 2; /* 50% duty */ rt_device_write(dev, channel, &configuration, sizeof(struct rt_pwm_configuration)); ```
bernard
2018-05-09
这家伙很懒,什么也没写!
这个是否也包含一份contrl接口,上层应用可以更容易理解,或使用?
bernard
2018-05-09
这家伙很懒,什么也没写!
另外也需要一份规范的底层驱动接口。
aozima
2018-06-06
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
[i=s] 本帖最后由 aozima 于 2018-6-6 10:59 编辑 [/i] 一些更新: 1。 添加 control 接口,定义3条control命令。 [md] ``` #define PWM_CMD_ENABLE (128 + 0) //使能PWM #define PWM_CMD_SET (128 + 1) //设置PWM参数 #define PWM_CMD_GET (128 + 2) //获取PWM参数 ``` [/md] 2. 原来的write/read接口修改为仅配置 pulse (占空比) 相应的,在驱动实现中,write时需要先读取出原来的配置,然后更新pulse后再写入到设备中去。
Hubert_Xie
2018-06-06
这家伙很懒,什么也没写!
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=35150&ptid=7060][color=#999999]aozima 发表于 2018-6-6 10:57[/color][/url][/size] 一些更新: 1。 添加 control 接口,定义3条control命令。 [/quote] 更新后的源码在哪里下载呢?
aozima
2018-06-06
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=35152&ptid=7060][color=#999999]Hubert_Xie 发表于 2018-6-6 14:30[/color][/url][/size] 更新后的源码在哪里下载呢?[/quote] 这是更新后的代码,也可以在 [url]https://github.com/aozima/rt-thread/tree/adc_pwm_dev[/url] 这个分支中获取。 正在整理中,欢迎拍砖。 [attach]4027[/attach]
Hubert_Xie
2018-06-07
这家伙很懒,什么也没写!
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=35153&ptid=7060][color=#999999]aozima 发表于 2018-6-6 14:48[/color][/url][/size] 这是更新后的代码,也可以在 https://github.com/aozima/rt-thread/tree/adc_pwm_dev 这个分支中获取。 ...[/quote] 这个框架为什么不合并到主分支呢?
aozima
2018-06-07
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=35164&ptid=7060][color=#999999]Hubert_Xie 发表于 2018-6-7 09:37[/color][/url][/size] 这个框架为什么不合并到主分支呢?[/quote] 这不正在发出来供review一下嘛,没太大问题就去发PR。 所以敬请吐槽!
Kevin_EE
2018-06-09
这家伙很懒,什么也没写!
刚接触RTT PWM 请问这个PWM的输出端口是哪些,比如要把PWM通道对应到IO口上,需要怎么设置呢
rt_gouzi
2019-04-30
这家伙很懒,什么也没写!
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=35203&ptid=7060][color=#999999]Kevin_EE 发表于 2018-6-9 15:08[/color][/url][/size] 刚接触RTT PWM 请问这个PWM的输出端口是哪些,比如要把PWM通道对应到IO口上,需要怎么设置呢 ...[/quote] 在PWM的驱动文件中可以配置引脚
撰写答案
登录
注册新账号
关注者
0
被浏览
7.7k
关于作者
aozima
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
提问
92
回答
4449
被采纳
371
关注TA
发私信
相关问题
1
玩iot camera笔记之3测试试用3路pwm
2
[已解决]PWM输出异常分析
3
关于rt-thread-3.1.0 pwm
4
关于rt-thread的PWM框架在stm32f103vf应用的疑问
5
rt-thread stm32 bsp adc pwm 外设适配好了吗
6
stm32f103ze 添加pwm 设备失败
7
【正点原子】潘多拉IoT-STM32L475开发板 用menuconfig 看不到PWM....
8
关于rtthread 4.0.0版本中pwm的初始化定时器寄存器读写问题
9
RT-Thread正点原子战舰V3使用PWM设备驱动没有输出
10
定时器3通道2输出不了以20ms为周期的PWM波???
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
机器人操作系统 (ROS2) 和 RT-Thread 通信
4
五分钟玩转RT-Thread新社区
5
国产MCU移植系列教程汇总,欢迎查看!
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
github高阶加速,速度可达带宽峰值,测试到146Mbit/s
2
英飞凌携手RT-Thread举办嵌入式网络应用开发沙龙,带你从0到1搭建智能数据网关
3
BL808 RT-Thread Wi-Fi 驱动适配
4
rt-thread 系统运行期改变网卡配置
5
简单的步进电机驱动调试
热门标签
RT-Thread Studio
串口
LWIP
Env
AT
SPI
Bootloader
FinSH
ART-Pi
CAN总线
Hardfault
USB
文件系统
RT-Thread
DMA
SCons
线程
MQTT
RT-Thread Nano
STM32
RTC
ESP8266
rt-smart
flash
ota在线升级
WIZnet_W5500
FAL
I2C
packages_软件包
UART
cubemx
freemodbus
潘多拉开发板_Pandora
定时器
BSP
PWM
ADC
socket
中断
rt_mq_消息队列_msg_queue
keil_MDK
SDIO
Debug
AB32VG1
MicroPython
C++_cpp
编译报错
msh
QEMU
ulog
本月问答贡献
出出啊
1500
个答案
338
次被采纳
小小李sunny
1389
个答案
276
次被采纳
张世争
714
个答案
157
次被采纳
crystal266
522
个答案
153
次被采纳
whj467467222
1216
个答案
146
次被采纳
本月文章贡献
出出啊
1
篇文章
12
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
2
篇文章
1
次点赞
crystal266
2
篇文章
5
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部