智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2298|回复: 5
打印 上一主题 下一主题

求助帖,拉普兰德固件库的正交解码

[复制链接]

1

主题

8

帖子

0

精华

高级会员

Rank: 4

积分
880
威望
417
贡献
261
兑换币
273
注册时间
2015-12-14
在线时间
101 小时
毕业学校
罗江中学
跳转到指定楼层
1#
发表于 2016-6-4 11:05:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式




编码器龙邱512迷你编码器,像图中那样初始化,正交解码读出来的值是正负1或者65535,怎么回事,求大腿

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

1

主题

8

帖子

0

精华

高级会员

Rank: 4

积分
880
威望
417
贡献
261
兑换币
273
注册时间
2015-12-14
在线时间
101 小时
毕业学校
罗江中学
2#
 楼主| 发表于 2016-6-4 11:06:26 | 只看该作者
/**
* --------------基于"拉普兰德K60底层库V3"的工程(LPLD_QuadratureDecoder)-----------------
* @file LPLD_QuadratureDecoder.c
* @version 0.1
* @date 2013-9-29
* @BRIEF 利用FTM模块的正交解码功能,实现编码器的正反转测速。
*
* 版权所有:北京拉普兰德电子技术有限公司
* http://www.lpld.cn
* mail:support@lpld.cn
* 硬件平台:  LPLD K60 Card / LPLD K60 Nano
*
* 本工程基于"拉普兰德K60底层库V3"开发,
* 所有开源代码均在"lib"文件夹下,用户不必更改该目录下代码,
* 所有用户工程需保存在"project"文件夹下,以工程名定义文件夹名,
* 底层库使用方法见相关文档。
*
*/
#include "common.h"

/****************************************
说明:
   *分别将编码器的AB相信号接入PTB0、PTB1引脚
   *将MiniUSB线插入RUSH Kinetis开发板的USB
    插座,并连接至电脑USB接口。
   *使用串口调试助手波特率设置为115200
   *使用串口调试助手查看运行结果。
   *使编码器产生正反转,查看运行结果。
****************************************/

//函数声明
void qd_init(void);
void pit_init(void);
void pit_isr(void);
void delay(uint16);
void uart_init(void);
//变量定义
FTM_InitTypeDef ftm_init_struct;
PIT_InitTypeDef pit_init_struct;
UART_InitTypeDef uart5_init_struct;
int32 qd_result=0;

void main (void)
{
  
  //初始化正交解码功能
  uart_init();
  qd_init();
  //初始化PIT定时中断
  //用来定时读取正交解码的计数结果
  pit_init();

  while(1)
  {
    //printf("QD Counter = %d\r\n", qd_result);
    LPLD_UART_PutChar(UART3,(int8)qd_result);
    delay(1000);
  }
}

/*
* 初始化FTM1的正交解码功能
*
*/
void qd_init(void)
{
  //配置正交解码功能参数
  ftm_init_struct.FTM_Ftmx = FTM1;              //只有FTM1和FTM2有正交解码功能
  ftm_init_struct.FTM_Mode = FTM_MODE_QD;       //正交解码功能
  ftm_init_struct.FTM_QdMode = QD_MODE_PHAB;    //AB相输入模式
  //初始化FTM
//ftm_init_struct.FTM_ClkDiv = FTM_CLK_DIV1 ;
  LPLD_FTM_Init(ftm_init_struct);
  //使能AB相输入通道
  //PTB0引脚接A相输入、PTB1引脚接B相输入
  LPLD_FTM_QD_Enable(FTM1, PTB0, PTB1);
}

/*
* 初始化PIT定时器
*
*/
void pit_init(void)
{
  //配置定时周期中断参数
  pit_init_struct.PIT_Pitx = PIT0;
  pit_init_struct.PIT_PeriodMs = 20;    //20毫秒产生一起中断
  pit_init_struct.PIT_Isr = pit_isr;
  //初始化PIT
  LPLD_PIT_Init(pit_init_struct);
  //使能PIT定时中断
  LPLD_PIT_EnableIrq(pit_init_struct);
}

/*
* PIT中断函数
*/
void pit_isr(void)
{
  //获取FTM1的正交解码计数值
  qd_result = LPLD_FTM_GetCounter(FTM1);
  //清空计数器
  LPLD_FTM_ClearCounter(FTM1);
}

/*
* 延时函数
*/
void delay(uint16 n)
{
  uint16 i;
  while(n--)
  {
    for(i=0; i<5000; i++)
    {
      asm("nop");
    }
  }
}


void uart_init(void)
{
  uart5_init_struct.UART_Uartx = UART3; //使用UART5
  uart5_init_struct.UART_BaudRate =115200; //设置波特率9600
  uart5_init_struct.UART_TxPin = PTE4;  //接收引脚为PTE9
  uart5_init_struct.UART_RxPin = PTE5;  //发送引脚为PTE8
  //初始化UART
  LPLD_UART_Init(uart5_init_struct);
}
回复 支持 反对

使用道具 举报

1

主题

8

帖子

0

精华

高级会员

Rank: 4

积分
880
威望
417
贡献
261
兑换币
273
注册时间
2015-12-14
在线时间
101 小时
毕业学校
罗江中学
3#
 楼主| 发表于 2016-6-4 11:06:40 | 只看该作者
/**
* --------------基于"拉普兰德K60底层库V3"的工程(LPLD_QuadratureDecoder)-----------------
* @file LPLD_QuadratureDecoder.c
* @version 0.1
* @date 2013-9-29
* @BRIEF 利用FTM模块的正交解码功能,实现编码器的正反转测速。
*
* 版权所有:北京拉普兰德电子技术有限公司
* http://www.lpld.cn
* mail:support@lpld.cn
* 硬件平台:  LPLD K60 Card / LPLD K60 Nano
*
* 本工程基于"拉普兰德K60底层库V3"开发,
* 所有开源代码均在"lib"文件夹下,用户不必更改该目录下代码,
* 所有用户工程需保存在"project"文件夹下,以工程名定义文件夹名,
* 底层库使用方法见相关文档。
*
*/
#include "common.h"

/****************************************
说明:
   *分别将编码器的AB相信号接入PTB0、PTB1引脚
   *将MiniUSB线插入RUSH Kinetis开发板的USB
    插座,并连接至电脑USB接口。
   *使用串口调试助手波特率设置为115200
   *使用串口调试助手查看运行结果。
   *使编码器产生正反转,查看运行结果。
****************************************/

//函数声明
void qd_init(void);
void pit_init(void);
void pit_isr(void);
void delay(uint16);
void uart_init(void);
//变量定义
FTM_InitTypeDef ftm_init_struct;
PIT_InitTypeDef pit_init_struct;
UART_InitTypeDef uart5_init_struct;
int32 qd_result=0;

void main (void)
{
  
  //初始化正交解码功能
  uart_init();
  qd_init();
  //初始化PIT定时中断
  //用来定时读取正交解码的计数结果
  pit_init();

  while(1)
  {
    //printf("QD Counter = %d\r\n", qd_result);
    LPLD_UART_PutChar(UART3,(int8)qd_result);
    delay(1000);
  }
}

/*
* 初始化FTM1的正交解码功能
*
*/
void qd_init(void)
{
  //配置正交解码功能参数
  ftm_init_struct.FTM_Ftmx = FTM1;              //只有FTM1和FTM2有正交解码功能
  ftm_init_struct.FTM_Mode = FTM_MODE_QD;       //正交解码功能
  ftm_init_struct.FTM_QdMode = QD_MODE_PHAB;    //AB相输入模式
  //初始化FTM
//ftm_init_struct.FTM_ClkDiv = FTM_CLK_DIV1 ;
  LPLD_FTM_Init(ftm_init_struct);
  //使能AB相输入通道
  //PTB0引脚接A相输入、PTB1引脚接B相输入
  LPLD_FTM_QD_Enable(FTM1, PTB0, PTB1);
}

/*
* 初始化PIT定时器
*
*/
void pit_init(void)
{
  //配置定时周期中断参数
  pit_init_struct.PIT_Pitx = PIT0;
  pit_init_struct.PIT_PeriodMs = 20;    //20毫秒产生一起中断
  pit_init_struct.PIT_Isr = pit_isr;
  //初始化PIT
  LPLD_PIT_Init(pit_init_struct);
  //使能PIT定时中断
  LPLD_PIT_EnableIrq(pit_init_struct);
}

/*
* PIT中断函数
*/
void pit_isr(void)
{
  //获取FTM1的正交解码计数值
  qd_result = LPLD_FTM_GetCounter(FTM1);
  //清空计数器
  LPLD_FTM_ClearCounter(FTM1);
}

/*
* 延时函数
*/
void delay(uint16 n)
{
  uint16 i;
  while(n--)
  {
    for(i=0; i<5000; i++)
    {
      asm("nop");
    }
  }
}


void uart_init(void)
{
  uart5_init_struct.UART_Uartx = UART3; //使用UART5
  uart5_init_struct.UART_BaudRate =115200; //设置波特率9600
  uart5_init_struct.UART_TxPin = PTE4;  //接收引脚为PTE9
  uart5_init_struct.UART_RxPin = PTE5;  //发送引脚为PTE8
  //初始化UART
  LPLD_UART_Init(uart5_init_struct);
}
回复 支持 反对

使用道具 举报

5

主题

171

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6976
QQ
威望
3288
贡献
2130
兑换币
2100
注册时间
2015-4-27
在线时间
779 小时
4#
发表于 2016-6-4 13:03:29 | 只看该作者
选用计数模式

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

20

主题

572

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3501

优秀会员奖章活跃会员奖章论坛元老奖章在线王奖章

威望
1767
贡献
1086
兑换币
1086
注册时间
2014-5-3
在线时间
324 小时
毕业学校
江苏科技大学
5#
发表于 2016-6-4 13:19:52 | 只看该作者
楼上应该正解
回复 支持 反对

使用道具 举报

1

主题

8

帖子

0

精华

高级会员

Rank: 4

积分
880
威望
417
贡献
261
兑换币
273
注册时间
2015-12-14
在线时间
101 小时
毕业学校
罗江中学
6#
 楼主| 发表于 2016-6-5 00:27:18 | 只看该作者
谢谢!!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-24 11:33 , Processed in 0.046561 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表