模块学习(三)——激光测距模块(TOF10120)

该款激光测距模块集成了芯片,能够十分方便的直接传回数据,最近备赛,分享一下该模块的使用,以及需要注意的问题。此次是在MSP430F5529上进行开发的,其他MCU可自行移植。

1.硬件接线

在这里插入图片描述
上图是我从TOF10120技术手册上截取下来的,可以知道,该模块支持IIC和UART两种通讯模式,可根据MCU资源选择合适的方式,此次直接利用串口进行开发。

绿线 ——SCL 蓝线 ——SDA
白线 ——TXD 黄线—— RXD
红线 ——VCC 黑线 ——GND
对应于串口的话,
(tof)SCL-SDA(430);
(tof)SDA-SCL(430)即可

2.配置

可以直接利用USB转TTL模块先进行配置,配置好之后直接使用即可。其中对于IIC和UART方式有各种配置的指令,我这里贴出部分配置指令,具体各位可以自行去看文档进行配置,过程十分简单。文档资源可以找淘宝店家要或者直接上半岛小芯搜寻即可,实在没找到,我这里也有,告诉我邮箱,我发一份给你。在这里插入图片描述

在这里插入图片描述

3.串口接受和数据处理

串口的具体配置这里就不赘述了,之前有写过关于串口的一些配置方法。
串口配置
这里主要贴出来对于TOF10120发送数据的接受处理,即串口的中断服务函数。

#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector=USCI_A0_VECTOR
__interrupt
#elif defined(__GNUC__)
__attribute__((interrupt(USCI_A0_VECTOR)))
#endif
void USCI_A0_ISR (void)
{
    static int count = 0;
    switch (__even_in_range(UCA0IV,4)){
        //Vector 2 - RXIFG
        case 2:
            Rx_buf = USCI_A_UART_receiveData(USCI_A0_BASE);
            if(Rx_buf != 10 || count==10)//字符串的结尾,表示一帧数据未传输完毕
            {
                Data[count++] = Rx_buf;
            }
            else if(Data[count-2] == 'm' && Data[count-3] == 'm')//一组数据接收完毕
            {
                digital = count-3;
                count = 0;
                flag = 1;
            }

//            USCI_A_UART_transmitData(USCI_A0_BASE,Rx_buf);
        default: break;
    }
}


数据的处理如下:

if(flag == 1)
	    {
	        num = 0;
	        x = digital;
	        for(y=0;y < x;y++,digital--)
	        {
	            num += (Data[y]-48)*pow(10,digital-1);
	        }
	        flag = 0;
	    }

以上数据处理的代码还可以继续优化和封装,这里就留给各位自由发挥了。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值