当前位置: 首页 > news >正文

1m带宽网站支持多少人同时在线北京seo专业团队

1m带宽网站支持多少人同时在线,北京seo专业团队,b站付费推广,建设局现在改为什么名称目录 主控和外设之间的联系关键示例可能的bug 主控和外设之间的联系 在完成代码之前,我们手里会有两份代码,一份是nrf528xx的SDK,一份是BMI160传感器的SDK,怎么利用SDK完成我们的需求呢?首先我们要搞明白,…

目录

  • 主控和外设之间的联系
  • 关键
  • 示例
  • 可能的bug

主控和外设之间的联系

在完成代码之前,我们手里会有两份代码,一份是nrf528xx的SDK,一份是BMI160传感器的SDK,怎么利用SDK完成我们的需求呢?首先我们要搞明白,主控和外设之间的联系是什么?传感器给的SDK具体是什么内容。
我们这次的需求是通过SPI进行传输,SPI通过6条线将传感器和主控芯片联系在一起,如图:
在这里插入图片描述

传感器是一个商用的物品,已经没有第二次烧录的可能性,他里面已经烧录了代码,只要连接引脚,通过引脚给他指令就可以工作,可以理解成一个蓄势待发的玩具青蛙,等待一个指令就可以不停的跳(工作)。引脚也可以理解成一个硬件级别的API接口哈哈
而传感器的SDK就相当于一个指令集,比如一个蓝牙耳机,你看说明书他会告诉你怎么按(API接口)可以播放音乐、暂停音乐。类似的,一般的传感器会提供SPI或者是I2C的通信,SDK会告诉你怎么通过函数API让他开始传输数据,哈哈这里就比较复杂一点,没法对6条线实物操作,好像你只能把他掐断了,但他也工作不了,需要自己写代码去驱动。什么是驱动,就是拿着他的SDK放在自己代码中。
BMI160 API of SDK

那有人问了,函数API怎么就能通过六条线进行指令啦?这涉及到通信啦,大家感兴趣的话可以了解一下SPI 通信、计算机网络,但是对于我们代码来说其实属于最高级别的应用层,直接黑盒子拿API来使用。如果问代码为啥可以变成 0/1进行通信,那就得去学学计科计组和编译啦。

在与BMI160进行交互时,通常我们会通过其寄存器来配置设备、读取数据以及执行其他操作。这些寄存器包括配置寄存器、数据寄存器、状态寄存器等。大家看到SDK里面有很多宏定义,大部分都是寄存器的一些地址,这也是需要硬件商家提供的,让API的每一个对应函数功能都去找对应的寄存器存或者取数据。不用理会其中的为啥这个宏定义就i是1或者2,这就是硬件商家规定好的,就像你给一个物体打个标签区分他们一样,你只要看他的变量名字就好了。
ADDR

好,我们了解了传感器SDK一般会给我们的东西,仔细琢磨可以知道他是怎么运作,想直接用的话你可以直接把他当成黑盒子,直接调用他给出的API就好,涉及的库直接记得依赖进来就好。

关键

我们刚才说通过SPI线进行驱动传感器才会工作,那SPI的传输数据代码到底是属于谁的呢?是主控的!因为我们烧写的代码是在主控上进行的,写的代码就要调用主控上的SPI端口。 好像传感器的SDK也有写到SPI,但他实际上只是变量写了SPI相关字眼,实际上函数参数导入主控上SPI对象,告诉你应该从哪个寄存器存或者取,然后根本还是要用主控上SPI去读取。
主控上一般都会给出I2C和SPI的示例代码,只要进行调用对应的函数就好了。

// nrf_drv_spi_transfer 是nrf528xx的API, spi_read_transfer是自己命名的函数
int8_t spi_read_transfer(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t length)
{ret_code_t ret ;uint8_t read_temp[ length + 1 ] ;reg_addr = reg_addr | 0x80; ret = nrf_drv_spi_transfer(&spi, &reg_addr, 1, read_temp, length + 1 ) ;	nrf_delay_ms(5); for( int i = 1 ; i < length + 1 ; i ++ )reg_data[i-1] = read_temp[i] ;return (int8_t)ret;	
}int8_t spi_write_transfer(uint8_t dev_id, uint8_t reg_addr, uint8_t *reg_data, uint16_t length)
{ret_code_t ret;uint8_t write_temp[ length + 1 ] ;reg_addr = reg_addr & 0x7F;write_temp[0] = reg_addr ;for( int i = 1 ; i < length + 1 ; i ++ )write_temp[i] = reg_data[i-1] ;ret = nrf_drv_spi_transfer(&spi, write_temp, length + 1, &no_use, 1 ) ;nrf_delay_ms(5) ;return (int8_t)ret;	
}

我们来看看bmi160的SDK
在这里插入图片描述
dev->read底层用的是nrf52的SPI接口,具体代码在bmi160的示例中:

sensor.read = spi_read_transfer;
sensor.write = spi_write_transfer;

他将sensor这个类的read句柄接入了spi_read_transfer,而这个函数本质是nrf_drv_spi_transfer()

示例

整体流程是:
1、实例化bmi160(BMI160 SDK)
2、实例化SPI(nrf52 SDK)
3、将bmi160 设置的SPI句柄实例化
3、读取传感器数据(BMI160 SDK)
github 示例

可能的bug

  1. 如果数据一直是0的话,看是否激活sensor进行工作,比如bmi160就需要以下这句代码让他不断读取数据
// set configurationsensor_calibration.acc_cg.power = BMI160_ACC_NORMAL_MODE; // power modesensor_calibration.gyro_cfg.power = BMI160_GYRO_NORMAL_MODE; // power mode
  1. 如果和蓝牙一起使用注意 spi和蓝牙的优先级
spi_config0.irq_priority = 2;
http://www.15wanjia.com/news/11818.html

相关文章:

  • 厦门建设局领导百度seo教程网
  • 网站开发代做磁力猫最好磁力搜索引擎
  • 做网站用那个浏览器软文编辑器
  • 摄影师个人网站怎么做seo在线优化网站
  • 看动漫是怎么做视频网站灰色推广
  • 前端做网站的步骤广告软文小故事200字
  • 公司网站申请书青岛网站seo服务
  • 哪里有机械加工活seo独立站
  • 深圳 网站建设社群营销
  • 网站建设作业教程百度一下官网首页
  • 开源项目网站怎么做 带视频新手电商运营从哪开始学
  • 做网站的点子杭州网站优化方案
  • wordpress评论不能用山西网站seo
  • 企业建网站的好处烟台seo快速排名
  • 云虚拟主机怎么建网站seo前景
  • dnf做任务解除制裁网站电子商务主要学什么内容
  • 网站名称与备案名称不一致网络营销岗位描述的内容
  • 网站开发客户需求百度爱采购推广平台
  • 海南的房产网站建设关键词完整版免费听
  • nas做视频网站平台推广是做什么的
  • 网站顶端flash如何快速搭建网站
  • 深圳外贸公司推荐新网seo关键词优化教程
  • 移动网站建设价格杭州正规引流推广公司
  • 永康门业微网站建设制作网站需要什么技术
  • 青岛网站建设 新视点上海网站排名优化怎么做
  • 手机网站可以做英文版本吗怎么创建网站快捷方式到桌面
  • 金华网站建设哪里好太原seo排名优化公司
  • 石景山区建设委员会网站seo关键词优化哪个平台好
  • 人民日报客户端视界北京seo招聘网
  • 如何网站做专题刷粉网站推广便宜