154 lines
4.0 KiB
C
154 lines
4.0 KiB
C
|
|
/*
|
|||
|
|
*Copyright ,2023 , NANOCHAP
|
|||
|
|
*File name: ENS1_I2C.H
|
|||
|
|
*Author:
|
|||
|
|
*Version: V1.0
|
|||
|
|
*Date: 2023-11-
|
|||
|
|
*Description:
|
|||
|
|
*Function List:
|
|||
|
|
|
|||
|
|
History:
|
|||
|
|
1.V1.0
|
|||
|
|
Date:
|
|||
|
|
Author:
|
|||
|
|
Modification: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
#ifndef ENS1_IIC_H
|
|||
|
|
#define ENS1_IIC_H
|
|||
|
|
#include "my_header.h"
|
|||
|
|
#include "ens1_uart.h"
|
|||
|
|
#include "ENS1_GPIO.h"
|
|||
|
|
/*
|
|||
|
|
һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ź<EFBFBD>ϵ<EFBFBD><EFBFBD>
|
|||
|
|
ALT Function1
|
|||
|
|
IIC0 SCL --- GPIO6
|
|||
|
|
IIC0 SDA --- GPIO7
|
|||
|
|
|
|||
|
|
ALT Function2
|
|||
|
|
IIC1 SCL --- GPIO8
|
|||
|
|
IIC1 SDA --- GPIO9
|
|||
|
|
|
|||
|
|
ENS1 IIC <EFBFBD><EFBFBD>
|
|||
|
|
1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ100khz <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ 400khz
|
|||
|
|
2<EFBFBD><EFBFBD>DMA
|
|||
|
|
3<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>ź<EFBFBD>
|
|||
|
|
4<EFBFBD><EFBFBD><EFBFBD>ӻ<EFBFBD>ģʽ<EFBFBD>£<EFBFBD><EFBFBD>ӿڿ<EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD>ĵ<EFBFBD>ַ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>ַ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ܻ<EFBFBD>ʧ<EFBFBD><EFBFBD>
|
|||
|
|
5<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ͵<EFBFBD>ַ<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>7bit<EFBFBD><EFBFBD>ַģʽ<EFBFBD><EFBFBD>һ<EFBFBD>ֽڣ<EFBFBD>10bit<EFBFBD><EFBFBD>ַģʽ<EFBFBD><EFBFBD>2<EFBFBD>ֽڣ<EFBFBD>
|
|||
|
|
<EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD>´<EFBFBD><EFBFBD>䡣
|
|||
|
|
6<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ֽڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD><EFBFBD>ĵھŸ<EFBFBD>ʱ<EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ն˱<EFBFBD><EFBFBD>뷢<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ܻ<EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD>7λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>10λ<EFBFBD>ġ<EFBFBD>
|
|||
|
|
|
|||
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӷ<EFBFBD>
|
|||
|
|
2<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˫<EFBFBD><EFBFBD>ͨѶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>գ<EFBFBD>
|
|||
|
|
3<EFBFBD><EFBFBD>7λ / 10λ<EFBFBD><EFBFBD>Ѱַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
4<EFBFBD><EFBFBD>֧<EFBFBD>ֲ<EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD> 100k 400k
|
|||
|
|
5<EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
6<EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD>־<EFBFBD><EFBFBD>
|
|||
|
|
<EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD>־
|
|||
|
|
<EFBFBD><EFBFBD>2<EFBFBD><EFBFBD><EFBFBD>ֽڽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
|
|||
|
|
<EFBFBD><EFBFBD>3<EFBFBD><EFBFBD>IIC <EFBFBD><EFBFBD>æ<EFBFBD><EFBFBD>־
|
|||
|
|
7<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><EFBFBD><EFBFBD>ģʽ
|
|||
|
|
8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><EFBFBD>
|
|||
|
|
<EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD>:<EFBFBD>ٲö<EFBFBD>ʧ״̬
|
|||
|
|
<EFBFBD><EFBFBD>2<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ / <EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>
|
|||
|
|
<EFBFBD><EFBFBD>3<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ ״̬<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
9<EFBFBD><EFBFBD>1<EFBFBD>ֽڻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DMA<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨѶʧ<EFBFBD>ܣ<EFBFBD>
|
|||
|
|
1 <EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD><EFBFBD><EFBFBD> BUS ERROR
|
|||
|
|
2 Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> AD
|
|||
|
|
3 <EFBFBD>ٲ<EFBFBD>
|
|||
|
|
4 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
/*IIC <20>ٶ<EFBFBD>ѡ<EFBFBD><D1A1>*/
|
|||
|
|
#define IIC_STARDARD_MODE_10K 0x0
|
|||
|
|
#define IIC_STARDARD_MODE_20K 0x1
|
|||
|
|
#define IIC_STARDARD_MODE_100K 0x9
|
|||
|
|
|
|||
|
|
#define IIC_FAST_MODE_110K 0xA
|
|||
|
|
#define IIC_FAST_MODE_120K 0xB
|
|||
|
|
#define IIC_FAST_MODE_400K 0x27
|
|||
|
|
|
|||
|
|
#define IIC_HIGH_MODE_500K 0x28
|
|||
|
|
#define IIC_HIGH_MODE_600K 0x29
|
|||
|
|
#define IIC_HIGH_MODE_1500K 0x2E
|
|||
|
|
|
|||
|
|
/*<2A>ж<EFBFBD>ʹ<EFBFBD><CAB9>*/
|
|||
|
|
#define IIC_ITERREN (1<<6) //error ʹ<><CAB9>
|
|||
|
|
#define IIC_ITEVTEN (1<<7) //<2F>¼<EFBFBD><C2BC>ж<EFBFBD>ʹ<EFBFBD><CAB9>
|
|||
|
|
#define IIC_ITBUFEN (1<<8) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʹ<EFBFBD><CAB9>
|
|||
|
|
#define IIC_DMAEN (1<<9) //DMAʹ<41><CAB9>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
typedef enum{IIC_MASTER=0, IIC_SLAVE=1}IIC_MODE ;
|
|||
|
|
|
|||
|
|
typedef struct IIC_Config_Struct
|
|||
|
|
{
|
|||
|
|
IIC_MODE MODE;
|
|||
|
|
uint32_t OWN_ADDRESS;
|
|||
|
|
bool ACK_EN;
|
|||
|
|
uint8_t IIC_SPEED;
|
|||
|
|
}IIC_ConfigStructure;
|
|||
|
|
|
|||
|
|
extern IIC_ConfigStructure IIC0_Config;
|
|||
|
|
extern IIC_ConfigStructure IIC1_Config;
|
|||
|
|
|
|||
|
|
//bus error <20>жϣ<D0B6>ITERRENʹ<4E>ܣ<EFBFBD>
|
|||
|
|
extern bool IIC_BUS_ERROR(CMSDK_I2C_TypeDef* CMSDK_I2Cx);
|
|||
|
|
//Ӧ<><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
|
extern bool IIC_ACK_ERROR(CMSDK_I2C_TypeDef* CMSDK_I2Cx);
|
|||
|
|
//<2F>ٲ<EFBFBD>
|
|||
|
|
extern bool IIC_ARBITRAT_ERROR(CMSDK_I2C_TypeDef* CMSDK_I2Cx);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
extern bool IIC_OVERRUN_ERROR(CMSDK_I2C_TypeDef* CMSDK_I2Cx);
|
|||
|
|
|
|||
|
|
//ITEVFENʹ<4E>ܺ<EFBFBD><DCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
|
|||
|
|
//<2F><>ʼ״̬<D7B4><CCAC><EFBFBD><EFBFBD>ʼλ<CABC><CEBB><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>
|
|||
|
|
extern bool IIC_SB_EVENT(CMSDK_I2C_TypeDef* CMSDK_I2Cx);
|
|||
|
|
//<2F><>ַ<EFBFBD><D6B7><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD> / <20><>ַƥ<D6B7>䣨<EFBFBD>ӻ<EFBFBD><D3BB>¼<EFBFBD><C2BC><EFBFBD>
|
|||
|
|
extern bool IIC_ADDR_EVENT(CMSDK_I2C_TypeDef* CMSDK_I2Cx);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>ģʽ<C4A3>£<EFBFBD><C2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѷ<EFBFBD><D1B7><EFBFBD>10bit<69><74>ַ<EFBFBD><D6B7><EFBFBD>ݵĵ<DDB5>һ<EFBFBD><D2BB><EFBFBD>ֽڣ<D6BD><DAA3><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
extern bool IIC_ADD10_EVENT(CMSDK_I2C_TypeDef* CMSDK_I2Cx);
|
|||
|
|
//<2F>ӻ<EFBFBD>ģʽ<C4A3>£<EFBFBD>ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>
|
|||
|
|
extern bool IIC_STOPF_EVENT(CMSDK_I2C_TypeDef* CMSDK_I2Cx);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ֽڴ<D6BD><DAB4><EFBFBD><EFBFBD>ɹ<EFBFBD>
|
|||
|
|
extern bool IIC_BTF_EVENT(CMSDK_I2C_TypeDef* CMSDK_I2Cx);
|
|||
|
|
|
|||
|
|
//ITEVFEN <20><> ITBUFEN ʹ<>ܺ<EFBFBD><DCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
|
|||
|
|
//<2F><><EFBFBD>ݼĴ<DDBC><C4B4><EFBFBD><EFBFBD>ǿգ<C7BF><D5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>
|
|||
|
|
extern bool IIC_RxNE_EVENT(CMSDK_I2C_TypeDef* CMSDK_I2Cx);
|
|||
|
|
//<2F><><EFBFBD>ݼĴ<DDBC><C4B4><EFBFBD><EFBFBD>գ<EFBFBD><D5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>
|
|||
|
|
extern bool IIC_TxE_EVENT(CMSDK_I2C_TypeDef* CMSDK_I2Cx);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>æ<EFBFBD><C3A6><EFBFBD><EFBFBD>
|
|||
|
|
extern uint8_t IIC_Bus_BUSY(CMSDK_I2C_TypeDef* CMSDK_I2Cx);
|
|||
|
|
|
|||
|
|
//ģʽȷ<CABD><C8B7>
|
|||
|
|
extern bool IIC_MASTER_MODE(CMSDK_I2C_TypeDef* CMSDK_I2Cx);
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
//IIC<49><43><EFBFBD>ó<EFBFBD>ʼ<EFBFBD><CABC>
|
|||
|
|
extern uint8_t IIC_Config_init(CMSDK_I2C_TypeDef* CMSDK_I2Cx ,IIC_ConfigStructure* IIC_Para );
|
|||
|
|
//ʹ<><CAB9><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>IIC
|
|||
|
|
extern void IIC_Cmd(CMSDK_I2C_TypeDef* CMSDK_I2Cx ,FunctionalState NewState) ;
|
|||
|
|
//Ӧ<><D3A6>ѡ<EFBFBD><D1A1>
|
|||
|
|
extern void IIC_Ackconfig(CMSDK_I2C_TypeDef* CMSDK_I2Cx ,FunctionalState NewState );
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>START <20>ź<EFBFBD>
|
|||
|
|
extern void IIC_GenerateSTART(CMSDK_I2C_TypeDef* CMSDK_I2Cx);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>STOP<4F>ź<EFBFBD>
|
|||
|
|
extern void IIC_GenerateSTOP(CMSDK_I2C_TypeDef* CMSDK_I2Cx);
|
|||
|
|
|
|||
|
|
//IIC<49><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
extern void IIC_SendData(CMSDK_I2C_TypeDef* CMSDK_I2Cx , uint8_t data);
|
|||
|
|
|
|||
|
|
extern void IIC_ITConfig(CMSDK_I2C_TypeDef* CMSDK_I2Cx ,uint16_t IIC_IT_SEL ,FunctionalState NewState);
|
|||
|
|
#endif
|