3赞

31回答

2收藏

STM32下开发的TDC—GP2激光测距源代码

 

回答|共 31 个

倒序浏览

21#

zhong007

发表于 2016-6-7 18:11:17 | 只看该作者

分享到:
大家很给力,学习了
22#

阿甘童鞋

发表于 2016-6-27 16:53:42 | 只看该作者

朋友,我想请教你一下,关于GP2读结果寄存器的问题,在测量范围2中,结果寄存器数值是基准时钟周期的倍数,但是32位的结果寄存器,高16位表示整数,低16位表示小数部分,它这个倍数不是指的整数倍吗?
23#

s14040380

发表于 2016-6-29 09:18:19 | 只看该作者

谢谢楼主
24#

sdwjy1998

发表于 2016-9-8 11:13:06 | 只看该作者

谢谢分享,学习了
25#

yigehaorens

发表于 2016-9-29 09:29:48 | 只看该作者

学习下。。。
26#

yigehaorens

发表于 2016-11-7 12:12:01 | 只看该作者

问下为啥我用程序控制TDC-GP21,读出来的结果始终不变的哇?
27#

黄叔朗

发表于 2016-12-15 22:57:53 | 只看该作者

这个我是要来支持一下的
28#

章鱼龙

发表于 2017-1-13 16:54:26 | 只看该作者

楼主很厉害啊,现在还在做激光测距吗?
29#

Altium-381237

发表于 2017-4-26 08:33:03 | 只看该作者

问一下你用的是什么激光传感器呢?
30#

flushbonading

发表于 2018-11-28 15:41:26 | 只看该作者

你好,我在调试GP21,SPI通信测试一直通不过。目前我只初始化了IO口,复位,测试(给寄存器1写入数据、写入操作码0xb5,读取8位数据)

#include "gp21.h"

void DelayNS(unsigned long dly)
{
         unsigned int  i;
                 for(i=0;i<dly;i++);
}

void SPI2_TDC_INIT(void)
{
         GPIO_InitTypeDef  GPIO_Initure;
         __HAL_RCC_GPIOE_CLK_ENABLE();

         GPIO_Initure.Pin=GPIO_PIN_12|GPIO_PIN_14;
     GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP;          //推挽输出
    GPIO_Initure.Pull=GPIO_PULLUP;                  //上拉
    GPIO_Initure.Speed=GPIO_SPEED_HIGH;                     //高速
    HAL_GPIO_Init(GPIOE,&GPIO_Initure);

         GPIO_Initure.Pin=GPIO_PIN_13;
     GPIO_Initure.Mode=GPIO_MODE_INPUT;                  //输入
    GPIO_Initure.Pull=GPIO_PULLUP;                  //上拉
    HAL_GPIO_Init(GPIOE,&GPIO_Initure);
}

void TDC_Configuration(void)
{
         GPIO_InitTypeDef GPIO_Initure;
         
        __HAL_RCC_GPIOD_CLK_ENABLE();
        __HAL_RCC_GPIOG_CLK_ENABLE();
         
         GPIO_Initure.Pin=GPIO_PIN_11;//GPIO_PIN_9|GPIO_PIN_10|
     GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP;          //推挽输出
    GPIO_Initure.Pull=GPIO_PULLUP;                  //上拉
    GPIO_Initure.Speed=GPIO_SPEED_HIGH;                     //高速
    HAL_GPIO_Init(GPIOD,&GPIO_Initure);

         GPIO_Initure.Pin=GPIO_PIN_5;//|GPIO_PIN_7
     GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP;          //推挽输出
    GPIO_Initure.Pull=GPIO_PULLUP;                  //上拉
    GPIO_Initure.Speed=GPIO_SPEED_HIGH;                     //高速
    HAL_GPIO_Init(GPIOG,&GPIO_Initure);
}

void TDC_RESET(void)
{
         SET_TDC_RESET();
         DelayNS(100);
         CLR_TDC_RESET();
         DelayNS(100);
         SET_TDC_RESET();
         DelayNS(100);
}

unsigned char Test_SPI_Communicate(void)
{

         int register1 = 0x81ffffff;

        unsigned char test_reg=0xb4; //读结果寄存器5,反映寄存器1 的高8 位
        unsigned char test_reg0=0x00;
//         unsigned char test_reg1=0x81; //读结果寄存器5,反映寄存器1 的高8 位

        DelayNS(500);
        CLR_TDC_NSS();
        DelayNS(5);
         for (int i=0;i<32;i++)
         {
                 SET_TDC_SCK();
                 DelayNS(5);
                 if (register1&0x80000000)
                 {
                         SET_TDC_SI();
         }
                 else
                         CLR_TDC_SI();
                 DelayNS(5);
                 CLR_TDC_SCK();
                 DelayNS(5);
                 register1=register1<<1;
         }
         DelayNS(5);
        SET_TDC_NSS();


        DelayNS(500);
        CLR_TDC_NSS();
        DelayNS(5);
         for (int i=0;i<8;i++)
         {
                 SET_TDC_SCK();
                 DelayNS(5);
                 if (test_reg&0x80)
                         SET_TDC_SI();
                 else
                         CLR_TDC_SI();
                 DelayNS(5);
                 CLR_TDC_SCK();
                 DelayNS(5);
                 test_reg=test_reg<<1;
         }

         for(int j=0;j<8;j++)
         {
                 SET_TDC_SCK();
                 DelayNS(5);
                 test_reg0=test_reg0<<1;
                 if (HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_13) ==0)
                 {
                         test_reg0 &=0x01;
                 }
                 else
                 {
                         test_reg0 |=0x01;
                 }
                 CLR_TDC_SCK();
                 DelayNS(5);
         }
        SET_TDC_NSS();
      return test_reg0;
}

可以帮我分析以下问题在哪吗
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条