Astra MCU SDK Peripheral Driver Library
 
Loading...
Searching...
No Matches
i2c.h
1/***************************************************************************/
17
18#ifndef I2C_DRIVER_H
19#define I2C_DRIVER_H
20
21#include <stdint.h>
22#include <stdbool.h>
23#include "clk.h"
24#include "i2c_registers.h" /* Hardware register definitions for I²C */
25#include "syna_device.h"
26
27/***************************************************************************/
123
124/*******************************************************************************
125 * Enumerations
126 *******************************************************************************/
133
145
157
179
190
209
225
227
228/*******************************************************************************
229 * Type Definitions
230 *******************************************************************************/
237
250typedef void (*i2c_event_cb_t)(i2c_instance_en id, i2c_event_en event, void *user_data);
251
265
279
285typedef struct {
286 uint8_t *buf;
287 uint32_t size;
288 uint32_t timeout;
291
297typedef struct {
298 uint8_t *buf;
299 uint32_t size;
302
304
305/*******************************************************************************
306 * Function Prototypes
307 *******************************************************************************/
308
315
316/*******************************************************************************
317* Function Name: i2c_init
318****************************************************************************/
332
333/*******************************************************************************
334* Function Name: i2c_deinit
335****************************************************************************/
348
349/*******************************************************************************
350* Function Name: i2c_controller_set_config
351****************************************************************************/
371
372/*******************************************************************************
373* Function Name: i2c_controller_get_config
374****************************************************************************/
389
390/*******************************************************************************
391* Function Name: i2c_controller_set_target_address
392****************************************************************************/
408
409/*******************************************************************************
410* Function Name: i2c_controller_get_target_address
411****************************************************************************/
427
428/*******************************************************************************
429* Function Name: i2c_enable
430****************************************************************************/
440
441/*******************************************************************************
442 * Function Name: i2c_disable
443 ****************************************************************************/
452
453/*******************************************************************************
454 * Function Name: i2c_register_callback
455 ****************************************************************************/
478
479/*******************************************************************************
480 * Function Name: i2c_controller_write_blocking
481 ****************************************************************************/
506
507/*******************************************************************************
508 * Function Name: i2c_controller_read_blocking
509 ****************************************************************************/
534
535/*******************************************************************************
536 * Function Name: i2c_controller_write_non_blocking
537 ****************************************************************************/
561
562/*******************************************************************************
563 * Function Name: i2c_controller_read_non_blocking
564 ****************************************************************************/
586
587/*******************************************************************************
588 * Function Name: i2c_controller_abort
589 ****************************************************************************/
601
602/*******************************************************************************
603 * Function Name: i2c_controller_get_transfer_count
604 ****************************************************************************/
621
622 /*******************************************************************************
623 * Function Name: i2c_controller_get_transfer_status
624 ****************************************************************************/
640
641 /*******************************************************************************
642 * Function Name: i2c_target_set_config
643 ****************************************************************************/
664
665 /*******************************************************************************
666 * Function Name: i2c_target_get_config
667 ****************************************************************************/
682
683 /*******************************************************************************
684 * Function Name: i2c_target_get_transfer_count
685 ****************************************************************************/
702
703/*******************************************************************************
704 * Function Name: i2c_target_abort
705 ****************************************************************************/
717
718 /*******************************************************************************
719 * Function Name: i2c_target_get_transfer_status
720 ****************************************************************************/
734
735 /*******************************************************************************
736 * Function Name: i2c_target_prep_controller_write
737 ****************************************************************************/
757 uint8_t *buf,
758 uint32_t size);
759
760/*******************************************************************************
761 * Function Name: i2c_target_prep_controller_read
762 ****************************************************************************/
782 uint8_t *buf,
783 uint32_t size);
784
785 /*******************************************************************************
786 * Function Name: i2c_s_get_standard_speed_high_low_count
787 ****************************************************************************/
806 uint32_t *ss_low_count,
807 uint32_t *ss_high_count);
808
809 /*******************************************************************************
810 * Function Name: i2c_s_get_fast_speed_high_low_count
811 ****************************************************************************/
830 uint32_t *fs_low_count,
831 uint32_t *fs_high_count);
832
833 /*******************************************************************************
834 * Function Name: i2c_s_get_sda_hold_config
835 ****************************************************************************/
854 uint32_t *sda_hold_time_rx,
855 uint32_t *sda_hold_time_tx);
856
857 /*******************************************************************************
858 * Function Name: i2c_s_set_standard_speed_high_low_count
859 ****************************************************************************/
878 uint32_t ss_low_count,
879 uint32_t ss_high_count);
880
881 /*******************************************************************************
882 * Function Name: i2c_s_set_fast_speed_high_low_count
883 ****************************************************************************/
902 uint32_t fs_low_count,
903 uint32_t fs_high_count);
904
905 /*******************************************************************************
906 * Function Name: i2c_s_set_sda_hold_config
907 ****************************************************************************/
926 uint32_t sda_hold_time_rx,
927 uint32_t sda_hold_time_tx);
928
931
932#endif /* I2C_DRIVER_H */
i2c_instance_en
I2C instances.
Definition sr110.h:936
void(* i2c_event_cb_t)(i2c_instance_en id, i2c_event_en event, void *user_data)
I²C event callback.
Definition i2c.h:250
i2c_transfer_dir_en
I²C transfer direction.
Definition i2c.h:153
i2c_mode_en
I²C operation modes.
Definition i2c.h:186
i2c_event_en
I²C callback event types.
Definition i2c.h:197
i2c_status_en
I²C driver return status codes.
Definition i2c.h:165
i2c_speed_en
I²C bus speed configuration.
Definition i2c.h:140
i2c_transfer_status_en
Status codes for a non-blocking I²C transfer.
Definition i2c.h:217
@ I2C_TRANSFER_READ
Definition i2c.h:155
@ I2C_TRANSFER_WRITE
Definition i2c.h:154
@ I2C_MODE_TARGET
Definition i2c.h:188
@ I2C_MODE_CONTROLLER
Definition i2c.h:187
@ I2C_EVENT_RX_OVERFLOW
Definition i2c.h:205
@ I2C_EVENT_RX_UNDERFLOW
Definition i2c.h:206
@ I2C_EVENT_WRITE_COMPLETE
Definition i2c.h:198
@ I2C_EVENT_TX_OVERFLOW
Definition i2c.h:204
@ I2C_EVENT_WRITE_IN_TX_FIFO
Definition i2c.h:203
@ I2C_EVENT_STOP_DET
Definition i2c.h:202
@ I2C_EVENT_BUS_ERROR
Definition i2c.h:200
@ I2C_EVENT_ERROR
Definition i2c.h:207
@ I2C_EVENT_READ_COMPLETE
Definition i2c.h:199
@ I2C_EVENT_ABORT
Definition i2c.h:201
@ I2C_ERROR_UNSUPPORTED
Definition i2c.h:171
@ I2C_ERROR_SPECIFIC
Definition i2c.h:173
@ I2C_ERROR
Definition i2c.h:168
@ I2C_ERROR_PARAMETER
Definition i2c.h:172
@ I2C_ERROR_TX_FLUSHED
Definition i2c.h:177
@ I2C_ERROR_ARBITRATION_LOST
Definition i2c.h:176
@ I2C_ERROR_TIMEOUT
Definition i2c.h:170
@ I2C_ERROR_BUSY
Definition i2c.h:169
@ I2C_ERROR_NACK
Definition i2c.h:174
@ I2C_OK
Definition i2c.h:167
@ I2C_ERROR_SDA_STUCK
Definition i2c.h:175
@ I2C_SPEED_FAST_PLUS
Definition i2c.h:143
@ I2C_SPEED_STANDARD
Definition i2c.h:141
@ I2C_SPEED_FAST
Definition i2c.h:142
@ I2C_TRANSFER_STATUS_IN_PROGRESS
Definition i2c.h:219
@ I2C_TRANSFER_STATUS_IDLE
Definition i2c.h:218
@ I2C_TRANSFER_STATUS_ABORTED
Definition i2c.h:221
@ I2C_TRANSFER_INVALID_ID
Definition i2c.h:223
@ I2C_TRANSFER_STATUS_ERROR
Definition i2c.h:222
@ I2C_TRANSFER_STATUS_COMPLETE
Definition i2c.h:220
i2c_status_en i2c_register_callback(i2c_instance_en id, i2c_event_cb_t cb, void *user_data)
i2c_status_en i2c_controller_write_blocking(i2c_instance_en id, i2c_blocking_config_t *xfer)
i2c_status_en i2c_s_set_fast_speed_high_low_count(i2c_instance_en id, uint32_t fs_low_count, uint32_t fs_high_count)
i2c_status_en i2c_target_abort(i2c_instance_en id)
i2c_status_en i2c_target_get_config(i2c_instance_en id, i2c_target_config_t *cfg)
i2c_status_en i2c_s_set_standard_speed_high_low_count(i2c_instance_en id, uint32_t ss_low_count, uint32_t ss_high_count)
i2c_status_en i2c_controller_get_target_address(i2c_instance_en id, uint32_t *tar_addr)
i2c_status_en i2c_controller_set_config(i2c_instance_en id, i2c_controller_config_t *cfg)
i2c_status_en i2c_target_get_transfer_count(i2c_instance_en id, uint32_t *count)
i2c_status_en i2c_controller_read_non_blocking(i2c_instance_en id, i2c_nonblocking_config_t *xfer)
i2c_transfer_status_en i2c_controller_get_transfer_status(i2c_instance_en id)
i2c_transfer_status_en i2c_target_get_transfer_status(i2c_instance_en id)
i2c_status_en i2c_controller_abort(i2c_instance_en id)
i2c_status_en i2c_controller_write_non_blocking(i2c_instance_en id, i2c_nonblocking_config_t *xfer)
i2c_status_en i2c_disable(i2c_instance_en id)
i2c_status_en i2c_target_prep_controller_read(i2c_instance_en id, uint8_t *buf, uint32_t size)
i2c_status_en i2c_controller_get_config(i2c_instance_en id, i2c_controller_config_t *cfg)
INIT_CODE i2c_status_en i2c_deinit(i2c_instance_en id)
i2c_status_en i2c_controller_get_transfer_count(i2c_instance_en id, uint32_t *count)
i2c_status_en i2c_s_get_standard_speed_high_low_count(i2c_instance_en id, uint32_t *ss_low_count, uint32_t *ss_high_count)
i2c_status_en i2c_target_set_config(i2c_instance_en id, i2c_target_config_t *cfg)
i2c_status_en i2c_s_get_sda_hold_config(i2c_instance_en id, uint32_t *sda_hold_time_rx, uint32_t *sda_hold_time_tx)
i2c_status_en i2c_enable(i2c_instance_en id)
i2c_status_en i2c_s_get_fast_speed_high_low_count(i2c_instance_en id, uint32_t *fs_low_count, uint32_t *fs_high_count)
i2c_status_en i2c_target_prep_controller_write(i2c_instance_en id, uint8_t *buf, uint32_t size)
i2c_status_en i2c_s_set_sda_hold_config(i2c_instance_en id, uint32_t sda_hold_time_rx, uint32_t sda_hold_time_tx)
i2c_status_en i2c_controller_read_blocking(i2c_instance_en id, i2c_blocking_config_t *xfer)
i2c_status_en i2c_controller_set_target_address(i2c_instance_en id, uint32_t address)
INIT_CODE i2c_status_en i2c_init(i2c_instance_en id)
Blocking transfer configuration.
Definition i2c.h:285
uint32_t timeout
Definition i2c.h:288
uint32_t size
Definition i2c.h:287
uint8_t * buf
Definition i2c.h:286
bool send_stop
Definition i2c.h:289
I²C controller configuration structure.
Definition i2c.h:257
bool enable_bus_clear
Definition i2c.h:260
i2c_speed_en speed
Definition i2c.h:259
uint32_t sda_stuck_timeout_ms
Definition i2c.h:263
bool ten_bit_addr
Definition i2c.h:258
bool clear_stuck_sda
Definition i2c.h:261
uint32_t scl_stuck_timeout_ms
Definition i2c.h:262
Non-blocking transfer configuration.
Definition i2c.h:297
uint32_t size
Definition i2c.h:299
uint8_t * buf
Definition i2c.h:298
bool send_stop
Definition i2c.h:300
I²C target configuration structure.
Definition i2c.h:271
i2c_speed_en speed
Definition i2c.h:273
uint32_t target_address
Definition i2c.h:274
bool ten_bit_addr
Definition i2c.h:272
uint32_t scl_stuck_timeout_ms
Definition i2c.h:276
bool general_call_response
Definition i2c.h:275
uint32_t sda_stuck_timeout_ms
Definition i2c.h:277