飞控开发基础教程7开源编队无人机SPI气压计数据获取.docx

上传人:lao****ou 文档编号:386946 上传时间:2023-10-15 格式:DOCX 页数:10 大小:134.89KB
下载 相关 举报
飞控开发基础教程7开源编队无人机SPI气压计数据获取.docx_第1页
第1页 / 共10页
飞控开发基础教程7开源编队无人机SPI气压计数据获取.docx_第2页
第2页 / 共10页
飞控开发基础教程7开源编队无人机SPI气压计数据获取.docx_第3页
第3页 / 共10页
飞控开发基础教程7开源编队无人机SPI气压计数据获取.docx_第4页
第4页 / 共10页
飞控开发基础教程7开源编队无人机SPI气压计数据获取.docx_第5页
第5页 / 共10页
亲,该文档总共10页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《飞控开发基础教程7开源编队无人机SPI气压计数据获取.docx》由会员分享,可在线阅读,更多相关《飞控开发基础教程7开源编队无人机SPI气压计数据获取.docx(10页珍藏版)》请在第一文库网上搜索。

1、COCOF1Y教程疯壳无人机系列目录.1一、SP1o6简介二、气压计数据获取实验A1开源编队无人机A1OPENSOURCEFORMATIONDRONE高级功能Q激光,压光波定点有头无头3D型治双定高双模式令公QfH4)W1F1aB传遥控控制视觉追踪初觉追踪视觉追除控制飞行图码强色形状/扁日七)视觉跟丽图形化多机支持图形化自主巡线A1语音控制3动小车编队飞行编程飞行官网地址:http:/www.fengke.c1ubSPI(气压计数据获取)一、SP1o6简介SP106是歌尔公司最新推出新款气压传感器,最新推出新款气压传感器SP106-001,歌尔是全球领先的MEMS厂家,SP1o6利用歌尔多年积

2、累的MEMS开发技术,通过搭载高精度的检测用MEMs(MicroE1ectroMechanica1Systems)EP微机电系统和低功耗的集成电路,实现了业界最高级别别的精度5cm,SP106是一种具有高精度和低电流消耗的小型化的数字式气压传感器,兼具压力和温度测量两种特点。压力传感器元件基于电容传感器原理,保证温度变化过程中的高精度测量。小型封装结构适合移动应用和可穿戴设备等。SP106的内部信号处理器将压力和温度传感器元件的输出转换为24位数据。每个压力传感器已被单独校准并包含校准系数。在应用中使用系数将测量结果转换成真实的压力和温度值。SP106的实物图如下所示。二、气压计数据获取实验气

3、压计数据获取实验使用STM32的硬件SPI与气压计SP106相连接,串口1即UART1通过USB转串口模块连接电脑,把SPI获取到的SP106的原始压力值以及原始温度值数据通过串口1传输到电脑端的串口调试助手显示出来。做该实验的时候需要把视觉模组暂时取下,并且把USB转串口的线接到视觉模组接口处。气压计SP106在无人机顶部的白色RGB彩灯盒里,通过软排把SPI及供电口接出,如下图所示。根据原理图,可以看到SP106的的SPI接口分别是:PBI5、PA5、PA6、PA7,如下图所示。SPI5VDGNDSeKMOS1MISOCSICS2CS3-J412345678CON8PAgPAVSATTJ_

4、TXPA1OUSARTiRXPA11PA!2PABJTMSSUaDOOPA14JTCK令WCtKPAISnD1VBA1VDD1VDD1VD(Bs1OSCjxrooOSCOCTPD1BOOTOPaoutcvtPA1PA2PASPA4PASPA6PA?BoonpB2mxPBjWtrstpbi口oI,-34,pPB11B1刖PBIPBIPB1PBITAMratRTCPCBOSC32INPCM0$C$20VTPC11VDoAVSSA(通过调用官方库)0串口1的配置可以参考串口(基础收发),配置代码获取SP106的数据代码编写的思路如下:1管脚配置1、定义结构体2、使能时钟3、填充结构体4、装载结构体2

5、SPI配置1、定义结构体2、使能时钟1112131415161718192021222324252627282930313233343536373839403、填充结构体4、装载结构体5、使能SPI3SP1读写逻辑1、读一个字节2、写一个字节4SP106驱动1、从传感器读2、从传感器写3、ICM20602初始化SP1初始化代码如下:6voidMy_SPI_Init(void)7早8SPI-InitTypeDefSPI_InitStructure;9GPI0_InitTvpeDefGPIO_InitStructure;10RCC_APB2PeriphC1ockCmd(RCC_GPI0_SPI,E

6、NAB1E);RCC_APB2PeriphC1ockCmd(RCC_CE,ENAB1E);RCC_APB2PeriphC1ockCmd(RCC_CSN,ENAB1E);RCC_APB2PeriphC1ockCmd(RCC_APB2Periph_SPI1,ENAB1E);*配置SP1NRF_SPI的SCK,MISO,MOSI引脚*GPIO_InitStructure.GPI0_Pin=SPI_Pin_SCKSPI_Pin_MIS0SPI_Pin_M0SI;GPIO-InitStructure.GPI0_Speed=GPI0_Speed_IONfHz;GPIZ1nitStructure.GPIZM

7、ode=GPIO_Mode_AF_PP;复用功能GPI0_Init(GPI0_SPI,&GPI0_InitStructure);*气压计的CSN引脚:*GPI0-InitStructure.GPI0_Pin=Pin_C3;GPI0_InitStructure.GPIO-Speed=GPI0_Speed_10MHz;GPI0_InitStructure.GPI0_Mode=GPI0_Mode_0ut_PP;GPIOZ1nit(GPIO_CSN,&GPI0_InitStructure)7GPIO_SetBits(GPIO_CSN,Pin_C3);SPI_InitStructure.SPI_Dire

8、ction=SPI_Direction_21ines_Fu1!Dup1ex;双线全双工SPI_InitStructure.SPI_Mode=SPI_1ode_Master:主模式SPI_InitStructure.SPI_DataSize=SPI_DataSize_8b;数据大小8位SP11nitStructure.SPCP01=SPI_CPO1_1ow;时钟极性.空闲时为低SPI-InitStructure.SPI_CPHA=SPj1CPHAEdge;第1个边沿有效,上升沿为采样时刻SPI-InitStructure.SPI_NSS=SPI_NSS_Soft;SS信号由软件产生SPI-Ini

9、tStructure.SPI_BaudRatePresca1er=SPI_BaudRatePresca1er_8;4分频,9MHzSPI-InitStructure.SPI_FirstBit=SPI_FirstBit_MSB;高位在前SPI_InitStructure.SPI_CRCPo1ynomia1=7;SPI_Init(SPI_X,&SPI_InitStructure);SPI_Cmd(SPI_X,ENAB1E):1234567890144444444455u8SPIRW(u8dat)早/*当SP工发送缓冲黯非空时等待*/whi1e(SPII2SGetF1agStatus(SPIX,SP

10、II2SF1AGTXE)=RESET);/*通过SP12发送一字节数据*/SPII2SSendData(SPIX,dat);/*当SPf接收缓冲器为主时等待*/whi1e(SPI_I2S_GetF1agStatus(SPI_XZSPI_12S_F1AG_RXNE)=RESET);*ReturnthebytereadfromtheSPIbus*/returnSPI_I2S_ReceiveData(SPI_X);I52 voidSPI_Transmit(uint8_t*pData,uint16_tSize)53 (一54 for(uint16_ti=0;iSize;i+)55 056 SPI_RW

11、(pDatai);57 58 59 voidSPIReceive(uint8t*pData,uint16tSize)6061for(uint16_ti=0;ii32rawPressure=0;266p_sp10601-i32rawTemperature=0:267p_sp10601-chip_id=sp10601_read(OxOD);268269sp10601_get_ca1ib_param();270271sp10601.rateset(PRESSURE_SENSOR,128,16):272273sp10601.rateset(TENfPERATURE-SENSOR,8,8);274275

12、sp10601_start_continuous(CONTINUOUS_P_AND_T);276277if(p_sp10601-chip_id=0x10)278(279return0:280)281e1se282-(283return1;284)285)36staticvoidsp10601_write(unsignedcharregadr,unsignedcharva1)37(3839如414243sp106-enab1e(1);SPIRW(regadr);SPI_RW(va1);sp106_enab1e(0);440,*45464748495051525354555657585960函数名

13、功能描述输入参数输出参数返回值调用函数被调函数修改历史1.日作修改内容sp10601readI2C寄存器读取子函数uint8hwadr硬件地址uint8regadr寄存器地址uint8读出值2023年O1月06日fengeke新生成函数*,u861(626364656667681sp10601_read(unsignedcharregadr)u8reg-data;sp106_enab1e(1);SPI_RW(regadr0x80);reg-data=SPI_RW(Oxff);sp106_enab1e(0);returnreg_data;查看手册发现压力、温度的24位原始值在地址0x00-0x05oRegisterNameAddEbit7bit6bit5bit4Wt3人叭bnIbitResetStatePSR_B20x00PSR23J6(r)COOhPSR_B10x01

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 应用文档 > 汇报材料

copyright@ 2008-2022 001doc.com网站版权所有   

经营许可证编号:宁ICP备2022001085号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



客服