CI13LC SDK API手册  2.1.1
本手册用于描述CI13LC SDK各个组件和驱动API
ci13lc_iic.h
浏览该文件的文档.
1 
11 #ifndef __CI13LC_IIC_H_
12 #define __CI13LC_IIC_H_
13 
14 #include <stdbool.h>
15 #include "ci_system.h"
16 #include "ci_scu.h"
17 #include "ci_core_eclic.h"
18 #include "ci_core_misc.h"
19 
20 #ifdef __cplusplus
21  extern "C"{
22 #endif
23 
24 #ifndef IIC_INTERFACE_ELSE
25 #define IIC_INTERFACE_ELSE 1 //1,编译其他更多IIC用法接口。0,不编译
26 #endif
27 
38 typedef enum
39 {
41  IIC_NULL = 0,
42 }iic_base_t;
43 
47 typedef enum
48 {
49  LONG_TIME_OUT = 0X5FFFFF,
50  SHORT_TIME_OUT = 0XFFFF,
52 
56 typedef enum
57 {
62 
66 typedef enum
67 {
72 
76 typedef enum
77 {
79  IIC_M_READ = 1,
81 
82 #if 1//IIC_INTERFACE_ELSE
83 typedef bool (*master_send_cb_t)(char* data, IIC_SendStateType state, IIC_AckType previous_ack);
84 typedef bool (*master_recv_cb_t)(char data, bool stop);
85 typedef bool (*slave_send_cb_t)(char* data, IIC_SendStateType state, IIC_AckType previous_ack);
86 typedef bool (*slave_recv_cb_t)(char data, bool stop);
87 #endif
88 
91 typedef struct
92 {
93  char *buf;
94  int size;
96  union{
97  int read_size;
98  int write_size;
99  };
101 
102 
103 /****************************************** 常用接口 **********************************************************/
104 void iic_polling_init(iic_base_t base, uint32_t speed, uint32_t slaveaddr, IIC_TimeOut timeout);
105 int32_t iic_master_polling_send(iic_base_t base, uint16_t addr, const char *buf, int32_t count, uint8_t *last_ack_flag);
106 int32_t iic_master_polling_recv(iic_base_t base, uint16_t addr, char *buf, int32_t count);
107 int32_t iic_master_multi_transmission(iic_base_t base, uint16_t addr, multi_transmission_msg *msg, int msg_count);
108 /*************************************************************************************************************/
109 
110 /****************************************** 其他接口 **********************************************************/
111 #if 1//IIC_INTERFACE_ELSE
112 int32_t iic_slave_polling_send(iic_base_t base, const char *buf, int32_t count, uint8_t *last_ack_flag);
113 int32_t iic_slave_polling_recv(iic_base_t base, char *buf, int32_t count);
114 void iic_interrupt_init(iic_base_t base, uint32_t speed, uint32_t slaveaddr, IIC_TimeOut timeout);
115 int32_t iic_master_interrupt_send(iic_base_t base, uint16_t addr, master_send_cb_t master_send_cb);
116 int32_t iic_master_interrupt_recv(iic_base_t base, uint16_t addr, master_recv_cb_t master_recv_cb);
117 int32_t iic_slave_interrupt_send(iic_base_t base, slave_send_cb_t slave_send_cb);
118 int32_t iic_slave_interrupt_recv(iic_base_t base, slave_recv_cb_t slave_recv_cb);
119 #endif
120 /*************************************************************************************************************/
121 void IIC_IRQHandler(iic_base_t base);
122 /*************************************************************************************************************/
123 
124 /****************************************** 兼容旧驱动接口 ***************************************************/
125 int32_t i2c_master_only_send(char slave_ic_address, const char *buf, int32_t count);
126 int32_t i2c_master_send_recv(char slave_ic_address, char *buf, int32_t send_len, int32_t rev_len);
127 int32_t i2c_master_only_recv(char slave_ic_address, char *buf, int32_t rev_len);
128 /*************************************************************************************************************/
129 
134 #ifdef __cplusplus
135 }
136 #endif
137 
138 #endif /*__CI13LC_IIC_H_*/
139 /***************** (C) COPYRIGHT Chipintelli Technology Co., Ltd. *****END OF FILE****/
int32_t i2c_master_send_recv(char slave_ic_address, char *buf, int32_t send_len, int32_t rev_len)
I2C 先发送数据,再接收数据
Definition: ci13lc_iic.c:1355
void iic_polling_init(iic_base_t base, uint32_t speed, uint32_t slaveaddr, IIC_TimeOut timeout)
iic以查询方式初始化
Definition: ci13lc_iic.c:436
int32_t i2c_master_only_send(char slave_ic_address, const char *buf, int32_t count)
I2C 只发送数据
Definition: ci13lc_iic.c:1330
Definition: ci13lc_iic.h:70
bool(* slave_send_cb_t)(char *data, IIC_SendStateType state, IIC_AckType previous_ack)
Definition: ci13lc_iic.h:85
Definition: ci13lc_iic.h:50
Definition: ci13lc_iic.h:58
int32_t iic_master_interrupt_send(iic_base_t base, uint16_t addr, master_send_cb_t master_send_cb)
iic master 模式中断发送注册并启动
Definition: ci13lc_iic.c:697
Definition: ci13lc_iic.h:60
内核中断控制器驱动
bool(* master_recv_cb_t)(char data, bool stop)
Definition: ci13lc_iic.h:84
IIC_AckType
IIC ACK状态选择
Definition: ci13lc_iic.h:56
#define HAL_IIC0_BASE
Definition: ci13lc.h:70
Definition: ci13lc_iic.h:40
bool(* slave_recv_cb_t)(char data, bool stop)
Definition: ci13lc_iic.h:86
Definition: ci13lc_iic.h:49
IIC 传输结构体
Definition: ci13lc_iic.h:91
Definition: ci13lc_iic.h:69
int32_t iic_slave_interrupt_send(iic_base_t base, slave_send_cb_t slave_send_cb)
iic slave 中断方式发送注册(被动启动)
Definition: ci13lc_iic.c:870
void iic_interrupt_init(iic_base_t base, uint32_t speed, uint32_t slaveaddr, IIC_TimeOut timeout)
iic以中断方式初始化
Definition: ci13lc_iic.c:620
int32_t iic_master_polling_recv(iic_base_t base, uint16_t addr, char *buf, int32_t count)
iic master 查询接收
Definition: ci13lc_iic.c:567
int32_t iic_master_polling_send(iic_base_t base, uint16_t addr, const char *buf, int32_t count, uint8_t *last_ack_flag)
iic master 查询方式发送数据
Definition: ci13lc_iic.c:515
IIC_SendStateType
IIC 发送状态选择
Definition: ci13lc_iic.h:66
iic_multi_transmission_type flag
Definition: ci13lc_iic.h:95
chip级定义
void IIC_IRQHandler(iic_base_t base)
iic中断统一处理函数
Definition: ci13lc_iic.c:1059
Definition: ci13lc_iic.h:79
int32_t iic_master_interrupt_recv(iic_base_t base, uint16_t addr, master_recv_cb_t master_recv_cb)
iic master 中断方式接收注册并启动
Definition: ci13lc_iic.c:735
char * buf
Definition: ci13lc_iic.h:93
iic_multi_transmission_type
IIC 方向选择
Definition: ci13lc_iic.h:76
int32_t iic_master_multi_transmission(iic_base_t base, uint16_t addr, multi_transmission_msg *msg, int msg_count)
iic 传输多个消息
Definition: ci13lc_iic.c:991
Definition: ci13lc_iic.h:78
scu底层驱动接口头文件
iic_base_t
IIC控制器定义
Definition: ci13lc_iic.h:38
IIC_TimeOut
IIC超时选择
Definition: ci13lc_iic.h:47
Definition: ci13lc_iic.h:59
bool(* master_send_cb_t)(char *data, IIC_SendStateType state, IIC_AckType previous_ack)
Definition: ci13lc_iic.h:83
int32_t i2c_master_only_recv(char slave_ic_address, char *buf, int32_t rev_len)
I2C 只接收数据
Definition: ci13lc_iic.c:1386
Definition: ci13lc_iic.h:41
int32_t iic_slave_interrupt_recv(iic_base_t base, slave_recv_cb_t slave_recv_cb)
iic slave 中断方式接收注册(被动启动)
Definition: ci13lc_iic.c:967
Definition: ci13lc_iic.h:68
int32_t iic_slave_polling_send(iic_base_t base, const char *buf, int32_t count, uint8_t *last_ack_flag)
iic slave 查询方式发送
Definition: ci13lc_iic.c:774
int size
Definition: ci13lc_iic.h:94
int32_t iic_slave_polling_recv(iic_base_t base, char *buf, int32_t count)
iic slave 模式查询方式接收
Definition: ci13lc_iic.c:891