庆科社区
直播中

gjianw217

10年用户 687经验值
擅长:嵌入式技术 控制/MCU RF/无线
私信 关注

【MiCOKit试用体验】庆科MiCOKit外设篇(9)ambient_light环境检测

本帖最后由 gjianw217 于 2015-10-18 01:06 编辑

本帖主要内容:本帖子主要使用庆科提供的MiCOKit开发环境,来测试板上的Infraced_reflective红外接收传感器数据的采集,并简单了解MiCOKit的封装。
一、测试环境:
庆科开发套件EMW3165底板和扩展板
庆科SDK_MiCOKit_v2.3.0.2
USB串口线
JLink仿真
串口调试助手

二、硬件分析:
在EMW3165套件的扩展板上设计了一个集成型环境亮度和接近传感器APDS-9930,该传感提供I²C接口兼容的环境亮度传感器(Ambient Light SensorALS)和带有红外 LED 的接近传感器,其中环境亮度传感器使用双光二极管来近似0.01 lux照度下低流明性能的人眼视觉反应,提供的高灵敏度使得器件可以在深色玻璃后运作。接近传感器经过完全调校可进行100毫米物体检测,免除终端设备和次组件的工厂校准需求。具体的原理图,如下图所示:
20.png

另外通过查看原理图和开发板,对应EMW3165无线控制模块的引脚,如下图所示:
21.png
三、软件分析:
1 软件分层
在庆科提供的SDK_MiCOKit_v2.3.0.2开发包中,进行了三层的软件封装,即:用户层(外设层),平台层,驱动层。
(1)用户层(外设层),定义在 SDK_MiCOKit_v2.3.0.2/Platform/Drivers/MiCOKit_EX/目录下,主要通过调用平台层的封装函数,定义了各扩展板上外设的操作,用户只要调用它们,而无需知道各外设的原理,即可对其进行操作。
(2)平台层 定义在SDK_MiCOKit_v2.3.0.2/Platform/Peripherals/目录下,以platform_xxx.h命名,主要通过调用驱动层的封装函数,定义了MiCO系统需要调用的接口,方便将MiCO移植到不同的芯片平台上。
(3)驱动层 定义在SDK_MiCOKit_v2.3.0.2/Platform/Peripherals/Libraries/STM32F4xx_StdPeriph_Driver/目录下,以stm32f4xx_xx.c命名,主要移植了有关芯片提供商提供的对芯片操作的接口函数。
2 软件定义
在 SDK_MiCOKit_v2.3.0.2PlatformDriversMiCOKit_EXTambient_light_sensor目录下的apds9930.c文件中,庆科已经为用户封装好了针对infrared_reflective的操作接口,现对用户操作接口作一说明:
(1)初始化函数
OSStatus apds9930_sensor_init(void);
(2)读数据函数
OSStatus apds9930_data_readout(uint16_t *Prox_data, uint16_t *Lux_data);
(3)使能函数
void apds9930_enable(void);
四、测试程序:
1 指定头文件
由于在IAR开发环境中,SDK_MiCOKit_v2.3.0.2已经指定了头文件目录 ,如下图所示,

故在测试文件中,指定头文件的方法如下:
  1. #include "ambient_light_sensor/apds9930.h"
2 编写测试程序
  1. void testAmbientLight(void)//由application_start函数调用
  2. {
  3.   OSStatus err = kNoErr;
  4.   uint16_t apds9930_Prox = 0;
  5.   uint16_t apds9930_Lux = 0;
  6.   
  7.   err = apds9930_sensor_init();
  8.   require_noerr_action( err, exit, sensor_log("ERROR: Unable to Init APDS9930") );
  9.   
  10.   while(1)
  11.   {
  12.      mico_thread_sleep(1);
  13.      err = apds9930_data_readout(&apds9930_Prox, &apds9930_Lux);
  14.      require_noerr_action( err, exit, sensor_log("ERROR: Can't Read Data") );
  15.      sensor_log("APDS9930  Prox: %.1fmm  Lux: %d",
  16.                                   (float)(10239-apds9930_Prox)/100, apds9930_Lux);  
  17.   }
  18. exit:
  19.   return ;
  20. }

五、测试结果:

开板板效果:
串口效果:
结果不正常,串口显示如下信息:
9.png

更多回帖

发帖
×
20
完善资料,
赚取积分