CCS811.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /////////////////////////////////////////////////////////////////
  2. //
  3. // 本程序只供学习使用,未经作者许可,不得用于其它任何用途
  4. // STM32F103C8T6核心板
  5. // by Pang
  6. // 修改日期:2019/01/02
  7. // 版本:V1.0
  8. // 版权所有,盗版必究。
  9. // All rights reserved
  10. //
  11. ////////////////////////////////////////////////////////////////
  12. #ifndef CCS811_h
  13. #define CCS811_h
  14. #include "delay.h"
  15. #include "CCS811_IIC.h"
  16. #include "usart.h"
  17. #define boolean u8
  18. #define byte u8
  19. #define uint8_t u8
  20. typedef struct {
  21. u16 eco2;
  22. u16 tvoc;
  23. u8 status;
  24. u8 device_id;
  25. u8 error_id;
  26. u16 raw_data;
  27. } ccs811_measurement_t;
  28. #define CCS811_CS_ON() {GPIO_ResetBits(GPIOA,GPIO_Pin_4);}//delay_us(1);
  29. #define CCS811_CS_OFF() {GPIO_SetBits(GPIOA,GPIO_Pin_4);}//delay_us(1);
  30. // Registers for CCS811
  31. #define CCS811_Add 0x5A<<1
  32. #define STATUS_REG 0x00
  33. #define MEAS_MODE_REG 0x01
  34. #define ALG_RESULT_DATA 0x02
  35. #define ENV_DATA 0x05
  36. #define NTC_REG 0x06
  37. #define THRESHOLDS 0x10
  38. #define BASELINE 0x11
  39. #define HW_ID_REG 0x20
  40. #define ERROR_ID_REG 0xE0
  41. #define APP_START_REG 0xF4
  42. #define SW_RESET 0xFF
  43. #define CCS_811_ADDRESS 0x5A
  44. #define GPIO_WAKE 0x5
  45. #define DRIVE_MODE_IDLE 0x0 // 不测量
  46. #define DRIVE_MODE_1SEC 0x10 // 1秒间隔测量
  47. #define DRIVE_MODE_10SEC 0x20 // 10s间隔测量
  48. #define DRIVE_MODE_60SEC 0x30 // 每分钟测量
  49. #define INTERRUPT_DRIVEN 0x8 // 强力测量250ms
  50. #define THRESHOLDS_ENABLED 0x4
  51. void CCS811Init(void); // constructor
  52. void CCS811_GPIO_Config(void);
  53. void CCS811GetData(void);
  54. void CCS811ClearData(void);
  55. #endif