该款激光测距模块集成了芯片,能够十分方便的直接传回数据,最近备赛,分享一下该模块的使用,以及需要注意的问题。此次是在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方式有各种配置的指令,我这里贴出部分配置指令,具体各位可以自行去看文档进行配置,过程十分简单。文档资源可以找淘宝店家要或者直接上半岛小芯搜寻即可,实在没找到,我这里也有,告诉我邮箱,我发一份给你。

串口的具体配置这里就不赘述了,之前有写过关于串口的一些配置方法。 串口配置 这里主要贴出来对于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