Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
STM32
设备驱动
STM32 设备驱动 脉冲编码器过零点问题
发布于 2022-09-08 11:46:47 浏览:866
订阅该版
硬件:STM32F429IGT6核心板 操作系统:RTT V4.1.5 使用设备驱动运行脉冲编码器。 运行情况:定时器10ms采集一次脉冲编码器的脉冲值并与上一次脉冲值做差,来得出速度 代码如下:【代码中的所有变量皆为int32_t 类型】 ```c /** * @brief 编码器计数,速度计算 * @param None * @retval None * @note https://blog.csdn.net/csol1607408930/article/details/112793292 M法 */ rt_int32_t walk_count; rt_int32_t walk_last_count; static void Motor_Encoder_Calculation(void) { /* 读取脉冲编码器计数值 */ rt_device_read(pulse_encoder_dev, 0, & walk_count, 1); walk.motor.get_freq = ( walk_count - walk_last_count) * 10; walk.motor.get_speed = 60 * ( walk_count - walk_last_count) * 10 / RESOLUTION; walk_last_count = walk_count; } ``` 问题点:脉冲编码器过零点问题 使用设备框架运行脉冲编码器,读取的值只有正数。那么在过零点的时候,将会变为一个较大的整数。例如32755等等。这就要去处理过零点问题。很麻烦。 过零时断点截图如下  解决办法:将drv_pulse_encoder.c中的宏定义 `#define AUTO_RELOAD_VALUE 0x7FFF` 改为 `#define AUTO_RELOAD_VALUE 0xFFFF` 这样在过零点时,自动溢出,将变量值变成负数。这样做出来的速度就是正确的了。 应该有个设置,速度模式或者位置模式。速度模式用0XFFFF.角度模式用0X7FFF。这样就比较合适
查看更多
StackYuan
认证专家
2022-09-09
这家伙很懒,什么也没写!
对于过零问题,处理不好会引入相当大的误差,除了引入超大差值的判断并自动纠正,也可以根据自己counter支持的模式,设置watermark,程序上可以是read and clear。
1
个回答
默认排序
按发布时间排序
撰写答案
登录
注册新账号
关注者
0
被浏览
866
关于作者
用户名由3_15位
代码总在「分分钟搞定」的狂喜与「必有暗坑」的隐忧间往复
提问
66
回答
257
被采纳
34
关注TA
发私信
相关问题
1
裸机工程移植 RT-Thread
2
Keil MDK 移植 RT-Thread Nano
3
移植 Nano,rt_thread_mdelay()延迟时间不对
4
裸机工程移植 RT-Thread内核
5
关于利用0x68000000作为扩展sram?
6
STM32F413 SD 卡写入速度提升方法
7
STM32 RTC 闹钟
8
http_ota 提示no memory
9
studio中怎么把PB3 和PA15引脚设置为普通IO口使用?
10
求一份基于RTT系统封装好的STM32F1系列的FLASH操作程序
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
Wireshark抓包EtherCAT报文
2
RISC-V hardfault分析工具,RTTHREAD-RVBACKTRACE 原理讲解
3
基于RT-Thread的STM32G4开发第二讲第二篇——ADC
4
基于RT-Thread的STM32F4开发第二讲第一篇——ADC
5
RT-Thread studio的驱动5.1.0报错修改
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
I2C_IIC
cubemx
UART
ESP8266
WIZnet_W5500
BSP
ota在线升级
PWM
flash
packages_软件包
freemodbus
潘多拉开发板_Pandora
ADC
GD32
定时器
编译报错
flashDB
keil_MDK
socket
中断
rt_mq_消息队列_msg_queue
Debug
ulog
SFUD
msh
C++_cpp
at_device
本月问答贡献
出出啊
1524
个答案
343
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
818
个答案
179
次被采纳
crystal266
555
个答案
162
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
出出啊
1
篇文章
1
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
1
次点赞
crystal266
2
篇文章
1
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部