上次说到把所有的传感器模块在Sensor Controller中实现读写,并封装驱动。

先来看一下CC2650STK的原理图

用红色方框标记的DIO_0~DIO_7, DIO_23~DIO_30是可以通过Sensor Controller去控制的。后面几个暂时用不到,前面的包括了一个I2C接口,和两个BUTTON按键管脚,以及一个REED干簧管管脚。剩余的TMP RDY,AUDIO,MPU INT就先不管了。

现在开始给I2C接口和3个输入管脚编写驱动Sensor Controller下的驱动与数据采集程序。

SDA和SCL的I2C接口下面接入了4个传感器芯片,分别是OPT3001光照、BMP280气压、TMP007红外温度、HDC1000湿度。这些传感器的datasheet和驱动都可以在官方网站上下载到,参照官方的驱动程序,在Sensor Controller Studio中编写对应的驱动程序。3个输入信号,另外创建一个TASK编写对应的程序,读取管脚的输入状态。 I2C中只用到了数据延迟操作,而输入信号用到了定时器中断功能。

最终工程的结构如下图:

用到了5个管脚,I2C Sensors任务用到了两个引脚, IO Sensors任务用到了三个引脚。

最后生成的驱动代码所占用的RAM资源达到了95.6%,基本用完了。若需要加其他东西,只能精简驱动程序代码了,比如去掉一些初始化步骤等等。

在编写驱动中发现HDC1000的温湿度读取I2C通信过程相对较为特殊,需要先触发测量(写访问,写0个字节到温度寄存器),读取等待测量完成(循环读访问直到有ACK信号),读取测量结果(温度2个字节、湿度2个字节)。光用文字说不太清楚,需要详细看手册去了解这个。  中间提到的读取等待测量完成(循环读访问直到有ACK信号),在我这里测量总是第353次才有ACK返回,不知道有什么具体的原因。

用TASK Testing工具测试I2C Sensors任务的效果,可以看到Sensor Controller已经能够读取到所有关心的数据了。

IO Sensors任务中的驱动代码相对来说简单很多,有兴趣的可以看源代码。

~~大功告成,其实花了很多时间来调I2C的驱动,主要原因就是上面提到的HDC1000循环读取的关系,不过最后也算是终于搞定了。

该工程的源码可以在下面链接上看到。

https://coding.net/u/vacajk/p/Exploration_Sensors/git

下一步就是在M3内核中来实现与Sensor Controller互相通信交互的功能。

【蓝牙数据采集模块】-02-Sensor Controller 编写CC2650STK外设驱动的更多相关文章

  1. 【蓝牙数据采集模块】-01-Sensor Controller 功能介绍

    一. CC2650芯片内部的结构框图如图,内部包含: 一个Cortex-M3主控制器,用来做整个芯片的功能与任务实现 一个Cortex-M0射频控制器,用来驱动RF相关电路 一个Sensor Cont ...

  2. 040 RabbitMq及数据同步02

    1.Spring AMQP (1)简介 Spring有很多不同的项目,其中就有对AMQP的支持: Spring AMQP的页面:http://spring.io/projects/spring-amq ...

  3. iOS - 基于蓝牙数据交换的环境监测(温度、湿度、光照、粉尘、噪声)

    一.蓝牙外设的数据接收 二.App端显示获取数据            

  4. 大数据笔记02:大数据之Hadoop的生态系统和版本

    1.Hadoop的生态系统: (1)图1: (2)图2: 图1 和 图2 都是形象说明了Hadoop的生态圈. 2.举例介绍Hadoop生态圈的小工具: (1)Hive工具(中文意思:小蜜蜂) 利用H ...

  5. C#码农的大数据之路 - 使用C#编写MR作业

    系列目录 写在前面 从Hadoop出现至今,大数据几乎就是Java平台专属一般.虽然Hadoop或Spark也提供了接口可以与其他语言一起使用,但作为基于JVM运行的框架,Java系语言有着天生优势. ...

  6. Bootstrap分页插件ajax返回数据,工具类的编写

    使用Bootstrap分页插件时,需要返回指定的参数,这样Bootstrap才能够识别 需要引入的css: <!-- boostrap table --> <link href=&q ...

  7. nRF52832 改变ATT_MTU提高蓝牙数据发送速率(nRF5_SDK_14.2.0)

    nRF52832 作为一个低功耗蓝牙芯片,其数据发送发送速率一直都偏低(高就不叫低功耗了^_^),作为初学者在网上找了很多资料,终于找到通过修改ATT_MTU来提升发送速率的方法,最快能达到8.2KB ...

  8. 【Android】利用安卓的数据接口、多媒体处理编写内存卡Mp3播放器app

    通过调用安卓的MediaPlayer能够直接完毕Mp3等主流音频的播放,同一时候利用ContentResolver与Cursor能够直接读取安卓内在数据库的信息.直接获取当前sdcard中全部音频的列 ...

  9. spring boot 尚桂谷学习笔记10 数据访问02 mybatis

    数据访问 mybatis 创建一个 springboot 工程,模块选择 sql 中 mysql(数据驱动), jdbc(自动配置数据源), mybatis Web模块中选择 web pom 引入: ...

随机推荐

  1. iOS触摸事件深入

    转载自:http://www.cnblogs.com/wengzilin/p/4720550.html 概述 本文主要解析从我们的手指触摸苹果设备到最终响应事件的整个处理机制.本质上讲,整个过程可以分 ...

  2. 判断android文件是否加壳

    判断android文件是否加壳 查看文件是否有多个进程 反编译文件class.dex,看文件结构 查看文件特征,libsecexe libsecmain等 反编译so文件,看函数是否加密

  3. HDU 3715 Go Deeper

    二分答案 + 2-SAT判断 #include<cstdio> #include<cstring> #include<cmath> #include<vect ...

  4. cmd 3389

    1.2000系统 简要说一下如何进行DNS溢出攻击.我用的溢出利用程序是dns.exe,在CMD下运行它可以看到它的使用参数等信息.执行"dns -s IP"命令检测目标IP是否存 ...

  5. Selenium IDE安装

    1. 网上下载firefox30版本 http://www.9ht.com/xz/78637.html#addressWrap Selenium IDE 2.9.0下载   http://www.pc ...

  6. 在Ubuntu 14.04 64bit上安装StarUML 2.5版本

    1,在“http://staruml.io/”下载: 2,sudo dpkg -i StarUML-v2.5.0-64-bit.deb安装. 3,注册 .在help中输入.name:maxiongyi ...

  7. eclipse shortcut binding

    有些真的是太方便了,我竟然不知道,比如ctrl + h 就是打开search 功能,包括file search,我竟然每次都点击工具条上的放大镜图标! use Ctrl+Shift+T for ope ...

  8. extJS4.2.0 Json数据解析,嵌套及非嵌套(二)

    Ext.data.reader.Reader Readers通常用于翻译数据,使其被加载为 Model 实例或Store, 该数据一般是一个AJAX请求的响应数据. 一般情况下不需要直接创建一个Rea ...

  9. JQuery使用和选择器

    1.优点 (1)能解决浏览器的兼容性JS问题 (2)解决JS代码冗余的问题 (3)动画效果更容易实现 2.压缩过的和不压缩的区别 (1)开发过程中用未压缩的:上线后用压缩版本. (2)版本问题:1.X ...

  10. mysql 插入数据后返回当前的自增ID方法

    存储过程的写法: mysql>create procedure test( ->in username varchar(50), ->in password varchar(50), ...