📄 iic.h
字号:
/************************************************************************************
* Copyright (c), 2004-2007,西安铭朗电子科技有限责任公司
* All rights reserved.
*
* Http: www.mlarm.com
* Email: mlarm@mlarm.com
*
* File name: iic.h
* Project : ML-F020ICB
* Processor: C8051F020
* Compiler : Keil C51 Compiler
*
* Author: 李林利
* Version: 1.20
* Date: 2007.6.1
* Email: GavinLi@126.com
*
* Description: 本文件是IIC总线硬件驱动程序头文件;
*
* Others: none;
*
* Function List:
* 1. void IIC_Init(unsigned long clk)
* 2. void IICA_Read(unsigned char id, unsigned char addr, unsigned char *p, unsigned int len)
* 3. void IICA_Write(unsigned char id, unsigned char addr, unsigned char *p, unsigned int len)
* 4. void IICB_Read(unsigned char id, unsigned int addr, unsigned char *p, unsigned int len)
* 5. void IICB_Write(unsigned char id, unsigned int addr, unsigned char *p, unsigned int len)
* 6. unsigned char IIC_Busy(void)
*
* History:
* 1. Author: 李林利
* Version: 1.10
* Date: 2007.3.12
* Modification: none
*
* 2. Author: 李林利
* Version: 1.00
* Date: 2004.11.24
* Modification: 建立文件
*
*************************************************************************************/
/*************************************************************************************
* IIC总线函数使用说明
*
* 1. 第1步, 必须先调用函数IIC_Init();该函数clk设置了IIC通信速度,要求在
* 50000HZ~400000HZ之间;本函数只允许调用1次;
* 2. 第2步, IIC_Busy()函数用于判断IIC总线是否忙,在对IIC总线读写前必须调用此函数进行判断;
* 3. 第3步, 如果IIC总线不忙,则进行此步,
* 调用IICA_Read()和IICA_Write()函数用于操作8位地址的IIC器件;
* 调用IICB_Read()和IICB_Write()函数用于操作16位地址的IIC器件;
* 4。重复执行第2,3步;
* 5. 其它细节详见具体函数说明;
*
*************************************************************************************/
/************************************************************************************/
// 常量及全局变量定义
/************************************************************************************/
/************************************************************************************
//
// IIC总线硬件驱动程序外部引用声明
//
*************************************************************************************/
/***********************************************************************************
* Function: IIC_Init;
*
* Description: IIC初始化函数;
*
* Input: clk, IIC总线速度,取值范围:50khz~400khz;
*
* Output: none;
*
* Return: none;
*
* Note: IIC 通信速度是以MCU时钟频率为22.1184MHZ计算的, 如时钟频率为11.0592MHZ,
* 则IIC通信速度减半;
************************************************************************************/
void IIC_Init(unsigned long clk);
/***********************************************************************************
* Function: IICA_Read;
*
* Description: IIC总线读数据函数;
*
* Input: id,IIC器件识别地址, addr,读数据的起始地址; *p, 读出数据存储的地址指针;len,要读出数据长度;
*
* Output: none;
*
* Return: none;
*
* Note: 只支持AT24C01/02/04/08/16或地址是8位的器件;
************************************************************************************/
void IICA_Read(unsigned char id, unsigned char addr, unsigned char *p, unsigned int len);
/***********************************************************************************
* Function: IICA_Write;
*
* Description: IIC总线写数据函数;
*
* Input: id,IIC器件识别地址, addr,写数据的起始地址; *p, 写入数据存储的地址指针;len,要写入数据长度;
*
* Output: none;
*
* Return: none;
*
* Note: 只支持AT24C01/02/04/08/16或地址是8位的器件;
************************************************************************************/
void IICA_Write(unsigned char id, unsigned char addr, unsigned char *p, unsigned int len);
/***********************************************************************************
* Function: IICB_Read;
*
* Description: IIC总线读数据函数;
*
* Input: id,IIC器件识别地址, addr,读数据的起始地址; *p, 读出数据存储的地址指针;len,要读出数据长度;
*
* Output: none;
*
* Return: none;
*
* Note: 只支持AT24C32/64/128/256或地址是16位的器件;
************************************************************************************/
void IICB_Read(unsigned char id, unsigned int addr, unsigned char *p, unsigned int len);
/***********************************************************************************
* Function: IICB_Write;
*
* Description: IIC总线写数据函数;
*
* Input: id,IIC器件识别地址, addr,写数据的起始地址; *p, 写入数据存储的地址指针;len,要写入数据长度;
*
* Output: none;
*
* Return: none;
*
* Note: 只支持AT24C32/64/128/256或地址是16位的器件;
************************************************************************************/
void IICB_Write(unsigned char id, unsigned int addr, unsigned char *p, unsigned int len);
/***********************************************************************************
* Function: IIC_Busy;
*
* Description: IIC总线状态读函数;
*
* Input: none;
*
* Output: none;
*
* Return: 1, IIC总线忙; 0, IIC总线空闲, 其它值无效;
*
* Note: none;
************************************************************************************/
unsigned char IIC_Busy(void);
/***********************************************************************************/
// 文件结束
/***********************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -