当前位置: 技术问答>linux和unix
在S3C2410上写基于linux 的IIC程序具体怎么写啊?(求助)
来源: 互联网 发布时间:2016-05-09
本文导语: 我的板子是s3c2410,移植的是2.4的内核,现在想在上面做利用IIC实现对寄存器(24c04)的读写操作,书上的实例我看了,网上的实例代码也下看很多,可是要么不知道怎么编译,要么就是编译老通不过,要么就是通...
我的板子是s3c2410,移植的是2.4的内核,现在想在上面做利用IIC实现对寄存器(24c04)的读写操作,书上的实例我看了,网上的实例代码也下看很多,可是要么不知道怎么编译,要么就是编译老通不过,要么就是通过了在开发板上运行上老提示:syntax error : word unexpected(expecting:):),本人比较菜哪位高手能指点下小弟linux下IIC的开发 的详细流程啊,越详细越好,有实例资料就更好了,万分感激!!我在这个问题上纠缠都块一周了。
|
送你一份C源码,慢慢琢磨吧,中文注释的内容已经够多了。
如果还不会,那你就一行一行的注释好了,这样你就清楚他是怎么工作的了
#include
/* 全局符号定义 */
#define HIGH 1
#define LOW 0
#define FALSE 0
#define TRUE ~FALSE
#define function
#define end_if
#define end_for
#define byte unsigned char
sbit SCL = 0x96 ;
sbit SDA = 0x97 ;
/****************************************************************************
* 函数原型: void function delay(void);
* 功 能: 本函数实际上只有一条返回指令, 在具体应用中可视具体要求增加延时
* 指令。
****************************************************************************/
void function delay( void ) {
;
}
/****************************************************************************
* 函数原型: void function I_start(void);
* 功 能: 提供I2C总线工作时序中的起始位。
****************************************************************************/
void function I_start( void ) {
SCL = HIGH ;
delay() ;
SDA = LOW ;
delay() ;
SCL = LOW ;
delay() ;
}
/****************************************************************************
* 函数原型: void function I_stop(void);
* 功 能: 提供I2C总线工作时序中的停止位。
****************************************************************************/
void function I_stop( void ) {
SDA = LOW ;
delay() ;
SCL = HIGH ;
delay() ;
SDA = HIGH ;
delay() ;
SCL = LOW ;
delay() ;
}
/****************************************************************************
* 函数原型: void function I_init(void);
* 功 能: I2C总线初始化。在main()函数中应首先调用本函数, 然后再调用
* 其它函数。
****************************************************************************/
void function I_init( void ) {
SCL = LOW ;
I_stop() ;
}
/****************************************************************************
* 函数原型: bit function I_clock(void);
* 功 能: 提供I2C总线的时钟信号, 并返回在时钟电平为高期间SDA 信号线上状
* 态。本函数可用于数据发送, 也可用于数据接收。
****************************************************************************/
bit function I_clock( void ) {
bit sample ;
SCL = HIGH ;
delay() ;
sample = SDA ;
SCL = LOW ;
delay() ;
return ( sample ) ;
}
/****************************************************************************
* 函数原型: bit function I_send(byte I_data);
* 功 能: 向I2C总线发送8位数据, 并请求一个应答信号ACK。如果收到ACK应答
* 则返回1(TRUE), 否则返回0(FALSE)。
****************************************************************************/
bit function I_send( byte I_data ) {
register byte i ;
/* 发送8位数据 */
for ( i=0 ; i
如果还不会,那你就一行一行的注释好了,这样你就清楚他是怎么工作的了
#include
/* 全局符号定义 */
#define HIGH 1
#define LOW 0
#define FALSE 0
#define TRUE ~FALSE
#define function
#define end_if
#define end_for
#define byte unsigned char
sbit SCL = 0x96 ;
sbit SDA = 0x97 ;
/****************************************************************************
* 函数原型: void function delay(void);
* 功 能: 本函数实际上只有一条返回指令, 在具体应用中可视具体要求增加延时
* 指令。
****************************************************************************/
void function delay( void ) {
;
}
/****************************************************************************
* 函数原型: void function I_start(void);
* 功 能: 提供I2C总线工作时序中的起始位。
****************************************************************************/
void function I_start( void ) {
SCL = HIGH ;
delay() ;
SDA = LOW ;
delay() ;
SCL = LOW ;
delay() ;
}
/****************************************************************************
* 函数原型: void function I_stop(void);
* 功 能: 提供I2C总线工作时序中的停止位。
****************************************************************************/
void function I_stop( void ) {
SDA = LOW ;
delay() ;
SCL = HIGH ;
delay() ;
SDA = HIGH ;
delay() ;
SCL = LOW ;
delay() ;
}
/****************************************************************************
* 函数原型: void function I_init(void);
* 功 能: I2C总线初始化。在main()函数中应首先调用本函数, 然后再调用
* 其它函数。
****************************************************************************/
void function I_init( void ) {
SCL = LOW ;
I_stop() ;
}
/****************************************************************************
* 函数原型: bit function I_clock(void);
* 功 能: 提供I2C总线的时钟信号, 并返回在时钟电平为高期间SDA 信号线上状
* 态。本函数可用于数据发送, 也可用于数据接收。
****************************************************************************/
bit function I_clock( void ) {
bit sample ;
SCL = HIGH ;
delay() ;
sample = SDA ;
SCL = LOW ;
delay() ;
return ( sample ) ;
}
/****************************************************************************
* 函数原型: bit function I_send(byte I_data);
* 功 能: 向I2C总线发送8位数据, 并请求一个应答信号ACK。如果收到ACK应答
* 则返回1(TRUE), 否则返回0(FALSE)。
****************************************************************************/
bit function I_send( byte I_data ) {
register byte i ;
/* 发送8位数据 */
for ( i=0 ; i