⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 i2c.h

📁 i2c协议实现
💻 H
字号:
/********************** I2C总线基本操作函数******************************
[文件名] I2C.c+I2C.H+ASMselect.h
[版本] TV0.2
[修正] hxc 
hxc last change time 2006.4.10 x:x
hxc last check time 2006.4.24 17:00

	1,地址为1 0 1 0 B2 B1 B0 R/W
	2,SCL,SDA
	3,delay()
	4,wait_5ms()写入数据之后的延时
	5,调用写函数i2c_writedata()
	6,调用读函数uchar i2c_READdata()
******************************************************************************/
#include "TAB.h"
void delay( void ); //clk长度
void wait_5ms( void );//延时5ms


bit	i2c_writedata(uchar Device_WRITE_id,uchar Address,uchar i2cdata);//i2cdata写入Address内,ok返回1

uchar i2c_READdata(uchar Device_READ_id,uchar Address);//正确读取指定地址的数据i2cok=1并返回数据,否则i2cok=0

#define BLOCK_SIZE 32                    /* 定义指定字节个数 */
void I_stop( void );//I2C总线工作停止
void I_init( void );//I2C总线初始化,首先调用本函数, 然后再调用其它函数?
void I_start( void );//I2C总线工作时序中的起始?
bit I_clock( void );//提供I2C总线的时钟信号, 并返回在时钟电平为高期间SDA信号线上状态。
					//本函数可用于数据发送, 也可用于数据接收?
void I_Ack( void ); //收到8位数据后,回应ACK, 一般用于连续数据读取时?
bit I_send( unsigned char I_data);//I2C总线发送8位数据,后收到ACK,返回1,超时返回0.
unsigned char I_receive( void );//接收8位数据,并返回
bit WaitAck(void);//收到ACK,返回1,超时返回0.I_send()中已调出了此函数
bit	I_read_1bit(void);//返回总线上一位数据。
bit E_address( uchar Device_WRITE_id,uchar Address );//写入一个地址,写入地址成功1

bit i2c_write_block(uchar ucid,uchar ucaddress,uchar uccount, uchar * pucbuf_data) ;//写入块
bit i2c_read_block( uchar ucid,uchar ucaddress,uchar uccount, uchar * pucbuf_data);//读取块

/* 对应址写入数据
		I_init()->E_address(写入地址)->I_send(写入数据)->I_stop()
			->wait_5ms()->E_address(写入地址)->I_send(写入数据)->I_stop()...
		I_init();          
			if ( E_address(0) && I_send( 0xa1 ) ) {
			I_stop() ;
			wait_5ms();
			}
		 	else {
			//	errorP10();
			}	


对应地址读出数据	
		E_address(读取起始地址)I_init()->I_send( READ )->X=(I_receive())
			->I_Ack()->X1=(I_receive())...XN=(I_receive())->I_clock()->I_stop();
如;
	if ( E_address( 0 ) )
	 {
		I_start() ;
		if ( I_send( READ ) ) {
				EAROMImage[0] = ( I_receive() ) ;
			    I_Ack() ;
				EAROMImage[1] = ( I_receive() ) ;
				I_clock() ;
				I_stop()  ;
				ok=1;
			}
		else {
			I_stop() ;
			errorP10();
			}
	}
	else{
		I_stop() ;
		}*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -