Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
PX4Flow.h@13:89b65bfe6dda, 2020-04-06 (annotated)
- Committer:
- pmic
- Date:
- Mon Apr 06 05:57:56 2020 +0000
- Revision:
- 13:89b65bfe6dda
- Parent:
- 12:19fe4f6a8b6b
Change receiving driver and firmware. Data latency now 2.4 ms faster.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
altb2 | 0:4b02060af95b | 1 | #ifndef _PX4FLOW_MBED_H |
altb2 | 0:4b02060af95b | 2 | #define _PX4FLOW_MBED_H |
altb2 | 0:4b02060af95b | 3 | |
altb2 | 0:4b02060af95b | 4 | # include <stdint.h> |
altb2 | 0:4b02060af95b | 5 | # include "mbed.h" |
altb2 | 0:4b02060af95b | 6 | |
altb2 | 0:4b02060af95b | 7 | // 7 Bit I2C Address of the Flow Module: Default 0x42 (user selectable bits 0,1,2) |
altb2 | 0:4b02060af95b | 8 | #define PX4FLOW_ADDRESS 0x42<<1 |
altb2 | 0:4b02060af95b | 9 | |
altb2 | 0:4b02060af95b | 10 | // Commands |
altb2 | 0:4b02060af95b | 11 | #define INTEGRAL_FRAME 0x16 |
altb2 | 0:4b02060af95b | 12 | |
altb2 | 0:4b02060af95b | 13 | // integral frame |
pmic | 13:89b65bfe6dda | 14 | #define AVG_FLOW_X 0 |
pmic | 13:89b65bfe6dda | 15 | #define AVG_FLOW_Y 2 |
pmic | 13:89b65bfe6dda | 16 | #define AVG_QUAL 4 |
pmic | 13:89b65bfe6dda | 17 | #define VALID_FRAME_COUNT 5 |
pmic | 13:89b65bfe6dda | 18 | #define FRAME_COUNT_ 6 |
altb2 | 0:4b02060af95b | 19 | |
pmic | 13:89b65bfe6dda | 20 | // Integral frame, only valid with modified firmware, see Git-branch IndNav from the Firmware |
altb2 | 0:4b02060af95b | 21 | typedef struct i2c_integral_frame { |
pmic | 13:89b65bfe6dda | 22 | int16_t avg_flow_x; |
pmic | 13:89b65bfe6dda | 23 | int16_t avg_flow_y; |
pmic | 13:89b65bfe6dda | 24 | uint8_t avg_qual; |
pmic | 13:89b65bfe6dda | 25 | uint8_t valid_frame_count; |
pmic | 13:89b65bfe6dda | 26 | uint8_t frame_count; |
altb2 | 0:4b02060af95b | 27 | } i2c_integral_frame; |
altb2 | 0:4b02060af95b | 28 | |
altb2 | 0:4b02060af95b | 29 | |
altb2 | 0:4b02060af95b | 30 | class PX4Flow |
altb2 | 0:4b02060af95b | 31 | { |
altb2 | 0:4b02060af95b | 32 | public: |
pmic | 13:89b65bfe6dda | 33 | |
pmic | 11:d367224f2194 | 34 | PX4Flow(I2C& i2c); |
pmic | 3:e03714326b83 | 35 | |
altb2 | 0:4b02060af95b | 36 | virtual ~PX4Flow(); |
altb2 | 0:4b02060af95b | 37 | |
altb2 | 0:4b02060af95b | 38 | bool update_integral(); |
pmic | 13:89b65bfe6dda | 39 | |
pmic | 13:89b65bfe6dda | 40 | float avg_flow_x(); // avg flow x in mm/s |
pmic | 13:89b65bfe6dda | 41 | float avg_flow_y(); // avg flow y in mm/s |
pmic | 13:89b65bfe6dda | 42 | uint8_t avg_qual(); // avg 0-255 linear quality measurement 0=bad, 255=best |
pmic | 13:89b65bfe6dda | 43 | uint8_t valid_frame_count(); // nr. of valid frames (qual > 0) between i2c readings |
pmic | 13:89b65bfe6dda | 44 | uint8_t frame_count(); // nr. of frames between i2c readings |
pmic | 13:89b65bfe6dda | 45 | uint8_t avg_qual_scaled(); // avg 0-255 linear quality measurement 0=bad, 255=best, scaled with N_valid_frame_count/N_frame_count |
pmic | 13:89b65bfe6dda | 46 | |
pmic | 13:89b65bfe6dda | 47 | private: |
altb2 | 0:4b02060af95b | 48 | |
pmic | 13:89b65bfe6dda | 49 | DigitalOut dout1; |
altb2 | 0:4b02060af95b | 50 | |
altb2 | 0:4b02060af95b | 51 | protected: |
pmic | 13:89b65bfe6dda | 52 | |
altb2 | 0:4b02060af95b | 53 | I2C i2c; |
altb2 | 0:4b02060af95b | 54 | |
pmic | 13:89b65bfe6dda | 55 | // storage for sensordata |
pmic | 13:89b65bfe6dda | 56 | char bufferI[7]; |
altb2 | 0:4b02060af95b | 57 | |
pmic | 13:89b65bfe6dda | 58 | char i2c_commands; |
altb2 | 0:4b02060af95b | 59 | |
altb2 | 0:4b02060af95b | 60 | struct i2c_integral_frame iframe; |
altb2 | 0:4b02060af95b | 61 | |
altb2 | 0:4b02060af95b | 62 | uint8_t read8(char *buffer, const unsigned int& idx = 0); |
altb2 | 0:4b02060af95b | 63 | uint16_t read16(char *buffer, const unsigned int& idx = 0); |
altb2 | 0:4b02060af95b | 64 | uint32_t read32(char *buffer, const unsigned int& idx = 0); |
altb2 | 0:4b02060af95b | 65 | }; |
altb2 | 0:4b02060af95b | 66 | |
altb2 | 0:4b02060af95b | 67 | #endif |