您的位置 首页 嵌入式

S3C2440-IIC

IIC(Inter-IntegratedCircuit,I2C)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微处理器及其外围设备,它的最主要优点是简

IIC(Inter-Integrated Circuit,I2C)总线是一种由PHILIPS公司开发的两线式串行总线,用于衔接微处理器及其外围设备,它的最首要长处是简略和有用。它只需求数据线SDA和时钟线SCL,就能够完结CPU与被控IC之间、ICIC之间进行双向传送。

s3c2440内部有一个IIC总线接口,因而为咱们衔接带有IIC通讯模块的外围设备供给了便当。它具有四种操作形式:主设备发送形式、主设备接纳形式、从设备发送形式和从设备接纳形式。在这里咱们只把s3c2440作为IIC总线的主设备来运用,因而只介绍前两种操作形式。在主设备发送形式下,它的作业流程为:首要装备IIC形式,然后把从设备地址写入接纳发送数据移位寄存器IICDS中,再把0xF0写入操控状况寄存器IICSTAT中,这时等候从设备发送应对信号,假如想要持续发送数据,那么在接纳到应对信号后,再把待发送的数据写入寄存器IICDS中,铲除中止标志后,再次等候应对信号;假如不想再发送数据了,那么把0x90写入寄存器IICSTAT中,铲除中止标志并等候中止条件后,即完结了一次主设备的发送。在主设备接纳形式下,它的作业流程为:首要装备IIC形式,然后把从设备地址写入接纳发送数据移位寄存器IICDS中,再把0xB0写入操控状况寄存器IICSTAT中,这时等候从设备发送应对信号,假如想要接纳数据,那么在应对信号后,读取寄存器IICDS,铲除中止标志;假如不想接纳数据了,那么就向寄存器IICSTAT写入0x90,铲除中止标志并等候中止条件后,即完结了一次主设备的接纳。在完结上述两个形式时,首要用到了操控寄存器IICCON、操控状况寄存器IICSTAT和发送接纳数据移位寄存器IICDS。由于咱们只把s3c2440作为主设备来用,而且体系的IIC总线上只要这么一个主设备,因而用来设置从设备地址的地址寄存器IICADD,和用于裁定总线的多主设备线路操控寄存器IICLC都无需装备。寄存器IICCON的第6位和低4位用于设置IIC的时钟频率,由于IIC的时钟线SCL都是由主设备供给的。s3c2440的IIC时钟源为PCLK,当体系的PCLK为50MHz,而从设备最高需求100kHz时,能够将IICCON的第6方位1,IICCON的低4位全为0即可。寄存器IICCON的第7位用于设置是否宣布应对信号,第5位用于是否使能发送和接纳中止,第4位用于中止的标志,当接纳或发送数据后必定要对该位进行清零,以铲除中止标志。寄存器IICSTAT的高2位用于设置是哪种操作形式,当向第5位写0或写1时,则表明完毕IIC或开端IIC通讯,第4位用于是否使能接纳/发送数据。
#include “2440addr.h”
#define U32 unsigned int
unsigned char iic_buffer[8];
U32 length;
unsigned char add, word;
int cmd, flag, count, command;
void delay(int a)
{
int k;
for(k=0;k<a;k++)
;
}
void __irq UART0_ISR(void){
char ch;
rSRCPND |= (0x1<<28);
rINTPND |= (0x1<<28);
rSUBSRCPND |= 0x1<<0;
if(rUTRSTAT0 & 0x1){
ch = rURXH0;
while(!(rUTRSTAT0&0x4));
rUTXH0 = ch;
if(count == 0)
command = ch;
if(command == 0xa1){
if(count == 1){
add = ch;
}
else
if(count == 2){
word = ch;
}
else
if(count == 3){
length = ch;
}
else if(count >= 4)
{
iic_buffer[count-4] = ch;
if(count == length+3){
count = -1;
cmd = 0x01;
}
}
count++;
}
else if(command == 0xa2)
{
if(count == 1)
add = ch;
else
if(count == 2)
word = ch;
else
if(count == 3){
length = ch;
count = -1;
cmd = 0x02;
}
count++;
}
}
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/254737.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部