BMP280 driver对接单片机I2C或者SPI总线接口
1:登录github网站搜BMP280,找到 BoschSensortec/BMP280_driver
2:gitclone或者download zip都可以,把驱动下载到本地,记得fork哦!
3:阅读驱动的readme文件
4:readme前面分别是目录、概要、和版本介绍,略过
5:我们关注的焦点也是重点是:传感器初始化即:Initializing the sensor,以I2C为例讲解如下:
咱们按照要求先定义一个结构体 struct bmp280_dev bmp;
这个结构体最重要的是实现其内部成员变量的函数实现,如bmp.read=user_i2c_read;这句代码就要求我们用我们所选用的硬件CPU对应的API实现,这个user_i2c_read是个伪代码,我们必须给替换掉!
那么如果用CPU对应的API实现bmp.read=user_i2c_read;bmp.write=user_i2c_write;bmp.delay_ms = user_delay_ms;呢?
第一步先把bmp280的驱动文件按照CPU的编程架构放到对应的文件夹中(关于驱动文件放置的位置还是很值得研究的,最好对makefile做个了解,然后再操作,一般8266我就直接放到user_main.c所在的文件夹了);
第二步把需要初始化的结构体代码拷贝到main.c(当然也有可能是其他的名字,总之是主C文件就可以了)里面,然后找到struct bmp280_dev bmp,找出bmp280_dev的定义代码,如果你用IAR的话就直接go to definition就可以找到了。你会发现bmp.read=user_i2c_read;bmp.write=user_i2c_write;bmp.delay_ms = user_delay_ms;要求实现的函数的形式,我们必须按照定义的形式实现函数。
6:下面的工作就是sensor configuration:
先声明结构体变量 struct bmp280_config bmp;
然后在确定设置参数之前首先读传感器的默认设置,然后再根据我们自己的要求写入设置参数
7:readout部分参考实例实现
BMP280 driver对接单片机I2C或者SPI总线接口的更多相关文章
- 关于I2C和SPI总线协议【转】
关于I2C和SPI总线协议 IICvs SPI 现今,在低端数字通信应用领域,我们随处可见IIC (Inter-Integrated Circuit) 和 SPI (Serial Peripheral ...
- I2C和SPI总线对比【转】
转自:http://blog.csdn.net/skyflying2012/article/details/8237881/ 最近2周一直在调试IIC和SPI总线设备,这里记录一下2种总线,以备后忘. ...
- I2C和SPI总线对比
1 iic总线不是全双工,2根线SCL SDA.spi总线实现全双工,4根线SCK CS MOSI MISO 2 iic总线是多主机总线,通过SDA上的地址信息来锁定从设备.spi总线只有一个主设备, ...
- MSP430单片机的两种SPI总线实现方式
MSP430单片机上的SPI总线的实现方式分为两种:硬件实现和软件实现. 二者的抽象层次不同,硬件实现方式下程序员只需要完成总线协议的寄存器层,即一字节(char,8位二进制)数据,而软件实现方式下程 ...
- 【转载】SPI总线和I2C总线的异同点
来源:https://blog.csdn.net/lishun1422840684/article/details/77776763 总结的简单.明了.适用! 一:SPI接口的全称是"Ser ...
- SPI总线(同步)
一.SPI总线简介 串行外围设备接口SPI(serial peripheral interface)总线技术是Motorola公司推出的一种同步串行接口.SPI 用 于CPU与各种外围器件进行全双工. ...
- SPI总线的特点、工作方式及常见错误解答
1.SPI总线简介 SPI(serial peripheral interface,串行外围设备接口)总线技术是Motorola公司推出的一种同步串行接口.它用于CPU与各种外围器件进行全双工.同步串 ...
- 理解一下单片机的I2C和SPI通信
应某位网友要求,今天说一下单片机的I2C SPI通信,可能说不清楚,因为这毕竟要做实验才可完全理解. I2C和SPI是两种不同的通信协议. 听到协议,似乎高不可攀,其实协议就是人们定义的一个标准而已, ...
- 51单片机I2C总线
I2C总线是飞利浦公司推出的一种串行总线,所有器件共用两根信号线,实现数据的传输. 总线接口接了上拉电阻,默认为高电平,所以就可以用"当低电平出现"来标记出一种起始信号.我个人把它 ...
随机推荐
- 如何在表单中使用Ajax
1.HTML就是一个简单表单验证,有登录按钮,点击登录会发送Ajax, 这里就是简单如果用户名为:zhouzhiruo,密码为:123456,就是登录成功,否则登录失败 应该在发送请求之前对input ...
- vue规格新增一对多的例子
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 【读书笔记】iOS-nonatomic
原子性atomicity(nonatomic),是关系线程安全的,但是会影响性能.如果确定不考虑线程安全问题可以使用nonatomic. 参考资料:<iPhone与iPad开发实战-iOS经典应 ...
- python自动化开发-6
python的常用模块(续) shutil模块:主要是做文件复制的.文件,文件夹,压缩包等的处理模块. 常用的方法: shutil.copyfileobj:将文件的内容拷贝到另一个文件中. 例子: # ...
- DB、ETL、DW、OLAP、DM、BI关系 ZT
在此大概用口水话简单叙述一下他们几个概念: (1)DB/Database/数据库——这里一般指的就是OLTP数据库,在线事物数据库,用来支持生产的,比如超市的买卖系统.DB保留的是数据信息的最新状态, ...
- Android学习笔记----Java字符串MD5加密
代码如下: /** * MD5单向加密,32位,用于加密密码,因为明文密码在信道中传输不安全,明文保存在本地也不安全 * * @param str * @return */ public static ...
- loadrunner 脚本开发-调用java jar文件远程操作Oracle数据库测试
调用java jar文件远程操作Oracle数据库测试 by:授客 QQ:1033553122 测试环境 数据库:linux 下Oracle_11g_R2 Loadrunner:11 备注:想学ora ...
- 程序员简单打造一个灵活智能的自动化运维系统C#实例程序
你是一个程序员,被派去管理公司500台计算机.这些机器可能需要执行一些自动化任务,一台台手动操作会把你累死.重复性的工作还是交给电脑处理,怎么解决这个问题呢?一个自动化的运维系统是必须的.自己实现的好 ...
- Android 获取网络类型
获取网络类型 public class IntenetUtil { //没有网络连接 public static final int NETWORN_NONE = 0; //wifi连接 public ...
- IDEA报错: Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'spring.datasource.url' in value "${spring.datasource.url}"
运行审核流模块: 在ActivitiServiceApplication模块日志报错: Error starting ApplicationContext. To display the auto-c ...