找回密码
 立即注册
楼主: 科学妞妞

【分享】VL53L0X激光测距 (STC32G) + ST7735显示 完整代码与分析

[复制链接]
  • 打卡等级:以坛为家III
  • 打卡总天数:763
  • 最近打卡:2026-05-01 06:00:34

5

主题

520

回帖

2774

积分

金牌会员

积分
2774
发表于 2026-3-24 06:53:32 来自手机 | 显示全部楼层
nekdyldm 发表于 2026-3-23 10:14
芯片是stc15w408as

我手上没有同款芯片,不然,倒也方便帮忙移植一下。不过,别急。问一下Ai,有原32G程序做参考,移植到15w,问一下就行。不用自己烦恼的。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:538
  • 最近打卡:2026-05-01 00:16:12
已绑定手机

14

主题

235

回帖

2904

积分

金牌会员

积分
2904
发表于 2026-4-19 23:41:51 | 显示全部楼层
摄像头不需要初始化和校正环节么,上电直接读数据?
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:763
  • 最近打卡:2026-05-01 06:00:34

5

主题

520

回帖

2774

积分

金牌会员

积分
2774
发表于 2026-4-20 09:13:09 来自手机 | 显示全部楼层
C_wolf 发表于 2026-4-19 23:41
摄像头不需要初始化和校正环节么,上电直接读数据?

看一下,程序中有初始化部分,任何外设,都要初始化的。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:538
  • 最近打卡:2026-05-01 00:16:12
已绑定手机

14

主题

235

回帖

2904

积分

金牌会员

积分
2904
发表于 2026-4-20 11:17:57 | 显示全部楼层
科学*** 发表于 2026-4-20 09:13
看一下,程序中有初始化部分,任何外设,都要初始化的。

不好意思,我只看到了单片机初始化和显示屏初始化,请问摄像头参数初始化是哪个?
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:607
  • 最近打卡:2026-05-01 05:59:49

0

主题

196

回帖

2857

积分

金牌会员

积分
2857
发表于 2026-4-22 15:54:21 | 显示全部楼层
C_w*** 发表于 2026-4-20 11:17
不好意思,我只看到了单片机初始化和显示屏初始化,请问摄像头参数初始化是哪个? ...

// 软件 I2C 函数(VL53L0X)- 标准协议,含ACK检查
void I2C_Start(void)
{
    SDA = 1; SCL = 1; delay_us(5);
    SDA = 0; delay_us(5);
    SCL = 0; delay_us(5);
}

void I2C_Stop(void)
{
    SDA = 0; SCL = 1; delay_us(5);
    SDA = 1; delay_us(5);
}

void I2C_SendByte(u8 dat)
{
    u8 i;
    for (i = 0; i < 8; i++) {
        if (dat & 0x80) SDA = 1;
        else            SDA = 0;
        dat <<= 1;
        delay_us(2);
        SCL = 1; delay_us(2);
        SCL = 0; delay_us(2);
    }
    SDA = 1; delay_us(2);
    SCL = 1; delay_us(2);
}

u8 I2C_CheckAck(void)
{
    u8 ack = 0;
    if (SDA == 0) ack = 1;
    SCL = 0; delay_us(2);
    return ack;
}

// ... I2C读写函数完整版见附件

//==========================================================================
// VL53L0X 寄存器定义
#define VL53L0X_ADDR     0x29
#define REG_IDENTIFICATION_MODEL_ID         0xC0
#define REG_SYSRANGE_START                  0x00
#define REG_RESULT_RANGE_STATUS              0x14

u8 gbuf[16];

// 块读取函数(一次性读取12字节距离数据)
void read_block_data_at(u8 reg, u8 len, u8 *buf)
{
    u8 i;
    I2C_Start();
    I2C_SendByte((VL53L0X_ADDR << 1) | 0);
    I2C_CheckAck();
    I2C_SendByte(reg);
    I2C_CheckAck();
    I2C_Stop();

    I2C_Start();
    I2C_SendByte((VL53L0X_ADDR << 1) | 1);
    I2C_CheckAck();
    for (i = 0; i < len; i++) {
        buf = I2C_ReadByte();
        if (i == len - 1) I2C_SendNak();
        else I2C_SendAck();
    }
    I2C_Stop();
}
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:538
  • 最近打卡:2026-05-01 00:16:12
已绑定手机

14

主题

235

回帖

2904

积分

金牌会员

积分
2904
发表于 2026-4-22 21:36:42 | 显示全部楼层
大*** 发表于 2026-4-22 15:54
// 软件 I2C 函数(VL53L0X)- 标准协议,含ACK检查
void I2C_Start(void)
{

你说的是I2C外设初始化,我问的是VL53L0X的初始化。

就像SPI液晶屏一样,先初始化SPI,在通过SPI初始化液晶void LCD_Init(void)

void VL53L0X_Init(void)不需要么???
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:607
  • 最近打卡:2026-05-01 05:59:49

0

主题

196

回帖

2857

积分

金牌会员

积分
2857
发表于 6 天前 | 显示全部楼层
C_w*** 发表于 2026-4-22 21:36
你说的是I2C外设初始化,我问的是VL53L0X的初始化。

就像SPI液晶屏一样,先初始化SPI,在通过SPI初始化 ...

你说对了,VL53L0X是I2C外设,就像SPI液晶屏一样,先初始化SPI
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:538
  • 最近打卡:2026-05-01 00:16:12
已绑定手机

14

主题

235

回帖

2904

积分

金牌会员

积分
2904
发表于 4 天前 | 显示全部楼层
大*** 发表于 2026-4-25 23:04
你说对了,VL53L0X是I2C外设,就像SPI液晶屏一样,先初始化SPI

服了!
你是听不懂,我在问什么吗?
还是你不知道怎么初始化VL53L0X的寄存器,这个程序只是照搬来的。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:763
  • 最近打卡:2026-05-01 06:00:34

5

主题

520

回帖

2774

积分

金牌会员

积分
2774
发表于 3 天前 | 显示全部楼层
C_w*** 发表于 2026-4-27 21:26
服了!
你是听不懂,我在问什么吗?
还是你不知道怎么初始化VL53L0X的寄存器,这个程序只是照搬来的。 ...

默认连续测量模式。如果需要初始化设置并调整VL53L0X的寄存器,可以改默认设置,使其功能强大,可以实现许多功能。但是,要查官方寄存器,需要重新整理测试,需要时间深入研究。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:538
  • 最近打卡:2026-05-01 00:16:12
已绑定手机

14

主题

235

回帖

2904

积分

金牌会员

积分
2904
发表于 3 天前 | 显示全部楼层
科学*** 发表于 2026-4-28 12:55
默认连续测量模式。如果需要初始化设置并调整VL53L0X的寄存器,可以改默认设置,使其功能强大,可以实现许 ...

嗯嗯,是的。
感谢明白人的回复。
回复

使用道具 举报 送花

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

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-5-1 08:33 , Processed in 0.123270 second(s), 101 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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