drivers: sensor: Add sensor clock API support
This commit introduces a new Sensor Clock API, enabling the retrieval of cycle counts and conversion to nanoseconds based on the system or external clock. The API includes: - `sensor_clock_get_cycles()` to get the current cycle count from the sensor clock. - `sensor_clock_cycles_to_ns()` to convert cycles to nanoseconds using the clock's frequency. The implementation supports both system clocks and external clocks defined in the device tree, making the sensor clock integration more flexible for various sensor use cases. Signed-off-by: Mark Chen <mark.chen@cienet.com>
This commit is contained in:
parent
7c57fec0d0
commit
f4da9b9705
31 changed files with 558 additions and 22 deletions
|
@ -6,6 +6,7 @@
|
|||
|
||||
#include <zephyr/logging/log.h>
|
||||
#include <zephyr/drivers/sensor.h>
|
||||
#include <zephyr/drivers/sensor_clock.h>
|
||||
|
||||
#include "adxl372.h"
|
||||
|
||||
|
@ -424,12 +425,20 @@ static void adxl372_process_status1_cb(struct rtio *r, const struct rtio_sqe *sq
|
|||
void adxl372_stream_irq_handler(const struct device *dev)
|
||||
{
|
||||
struct adxl372_data *data = (struct adxl372_data *)dev->data;
|
||||
|
||||
uint64_t cycles;
|
||||
int rc;
|
||||
if (data->sqe == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
data->timestamp = k_ticks_to_ns_floor64(k_uptime_ticks());
|
||||
rc = sensor_clock_get_cycles(&cycles);
|
||||
if (rc != 0) {
|
||||
LOG_ERR("Failed to get sensor clock cycles");
|
||||
rtio_iodev_sqe_err(data->sqe, rc);
|
||||
return;
|
||||
}
|
||||
|
||||
data->timestamp = sensor_clock_cycles_to_ns(cycles);
|
||||
|
||||
struct rtio_sqe *write_status_addr = rtio_sqe_acquire(data->rtio_ctx);
|
||||
struct rtio_sqe *read_status_reg = rtio_sqe_acquire(data->rtio_ctx);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue