CI13LC SDK API手册  2.1.1
本手册用于描述CI13LC SDK各个组件和驱动API
i2c_protocol_module.h
浏览该文件的文档.
1 
10 #ifndef _I2C_PROTOCOL_MODULE_
11 #define _I2C_PROTOCOL_MODULE_
12 
13 #ifdef __cplusplus
14 extern "C"
15 {
16 #endif
17 
18 /*-----------------------------------------------------------------------------
19  include
20 -----------------------------------------------------------------------------*/
21 #include <stdint.h>
22 #include <stdbool.h>
23 #include <string.h>
24 #include "command_info.h"
25 #include "ci_iic.h"
26 #include "system_msg_deal.h"
27 
28 /*-----------------------------------------------------------------------------
29  define
30 -----------------------------------------------------------------------------*/
31 #define IIC_PROTOCOL_CMD_ID 1 /* 1:默认开启命令词ID的IIC协议 */
32 #define IIC_PROTOCOL_SEC_ID 0 /* 0:默认关闭语义ID的IIC协议 */
33 
34 #define IIC_PROTOCOL_DEBUG 0 /* 默认关闭打印 */
35 
36 #define IIC_WAKEUP_WORD_CMDID 0x01 /* 唤醒词命令词ID :1个字节*/
37 #define IIC_WAKEUP_WORD_SECID 0x01e05501 /* 唤醒词语义ID :4个字节*/
38 
39 #if IIC_PROTOCOL_CMD_ID
40 #define IIC_SEND_CMDID_LEN 3 /* slave发给master的命令词id数据个数*/
41 #define I2C_RECV_STATUS_CMDID 0x02 /* 接收命令词ID*/
42 #define IIC_RECV_CMDID_LEN 4 /* master发给slave的命令词id播报数据个数*/
43 #endif
44 
45 #if IIC_PROTOCOL_SEC_ID
46 #define IIC_SEND_SECID_LEN 6 /* slave发给master的语义id数据个数*/
47 #define I2C_RECV_STATUS_SECID 0x03 /* 接收语义ID*/
48 #define IIC_RECV_SECID_LEN 7 /* master发给slave的语义id播报数据个数*/
49 #endif
50 
51 #define I2C_RECV_STATUS_REG 0x01 /* 接收寄存器地址*/
52 #define I2C_RECV_STATUS_CHECK_SUM 0x04 /* 接收校验和*/
53 #define I2C_RECV_STATUS_END 0x05 /* 接收数据尾*/
54 
55 /*-----------------------------------------------------------------------------
56  extern
57 -----------------------------------------------------------------------------*/
58 
59 /*-----------------------------------------------------------------------------
60  struct / enum / union
61 -----------------------------------------------------------------------------*/
62 #if IIC_PROTOCOL_CMD_ID
63 typedef enum
64 {
65  I2C_REG_CMDID = 0x02, /* 请求得到命令词ID的寄存器地址 */
66  I2C_REG_PLAY_CMDID = 0x03, /* 用命令词ID播放Audio的寄存器地址 */
68 
69 /* 命令词id消息 */
70 #pragma pack(1)
71 typedef struct
72 {
73  uint8_t reg; /*寄存器地址*/
74  uint8_t cmd_id; /*命令词ID:8位*/
75  uint8_t check_sum; /*校验和:reg累加cmd_id*/
76  uint8_t end; /*数据尾:0x5a*/
78 #pragma pack()
79 #endif /*#if IIC_PROTOCOL_CMD_ID*/
80 
81 #if IIC_PROTOCOL_SEC_ID
82 typedef enum
83 {
84  I2C_REG_SECID = 0x04, /* 请求得到语义ID的寄存器地址 */
85  I2C_REG_PLAY_SECID = 0x05, /* 用语义ID播放Audio的寄存器地址 */
86 }i2c_secid_reg_t;
87 
88 /* 语义id消息 */
89 #pragma pack(1)
90 typedef struct
91 {
92  uint8_t reg; /*寄存器地址*/
93  uint8_t sec_id[4]; /*语义ID:32位*/
94  uint8_t check_sum; /*校验和:reg累加语义ID各个字节*/
95  uint8_t end; /*数据尾:0x5a*/
96 }i2c_secid_msg_t;
97 #pragma pack()
98 #endif /*#if IIC_PROTOCOL_SEC_ID*/
99 
100 #pragma pack(1)
101 typedef struct
102 {
103  union
104  {
105  #if IIC_PROTOCOL_CMD_ID
106  i2c_cmdid_msg_t cmdid_msg;
107  #endif
108 
109  #if IIC_PROTOCOL_SEC_ID
110  i2c_secid_msg_t secid_msg;
111  #endif
112  };
114 #pragma pack()
115 
116 /*-----------------------------------------------------------------------------
117  function declare
118 -----------------------------------------------------------------------------*/
119 void i2c_communicate_init(void);
120 void i2c_sleep_deal();
121 void i2c_product_send_msg(cmd_handle_t cmd_handle);
122 uint32_t userapp_deal_i2c_msg(sys_msg_t *msg);
123 uint32_t i2c_send_data(volatile uint8_t *reg, uint8_t *data);
124 uint32_t i2c_recv_secid_packet(uint8_t data);
125 uint32_t i2c_recv_cmdid_packet(uint8_t data);
126 
127 
128 #ifdef __cplusplus
129 }
130 #endif
131 
132 
133 #endif
uint8_t cmd_id
Definition: i2c_protocol_module.h:74
Definition: i2c_protocol_module.h:65
Definition: i2c_protocol_module.h:66
Definition: i2c_protocol_module.h:101
此模块用于查询和读取命令词信息(来源于命令词信息excel表格).
IIC模块的驱动程序头文件
uint32_t userapp_deal_i2c_msg(sys_msg_t *msg)
uint32_t i2c_send_data(volatile uint8_t *reg, uint8_t *data)
uint32_t i2c_recv_secid_packet(uint8_t data)
void i2c_product_send_msg(cmd_handle_t cmd_handle)
void i2c_communicate_init(void)
i2c_cmdid_reg_t
Definition: i2c_protocol_module.h:63
void * cmd_handle_t
定义命令词信息结构的句柄类型。
Definition: command_info_v2.h:54
uint8_t end
Definition: i2c_protocol_module.h:76
void i2c_sleep_deal()
Definition: i2c_protocol_module.h:71
uint32_t i2c_recv_cmdid_packet(uint8_t data)
uint8_t reg
Definition: i2c_protocol_module.h:73
uint8_t check_sum
Definition: i2c_protocol_module.h:75