微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 十 ARM9(2440)的IIC-理论知识及程序实例

十 ARM9(2440)的IIC-理论知识及程序实例

时间:11-27 来源:互联网 点击:

case WRDATA:
if((_iicDataCount--)==0)//首地址 ,内部地址和数据都发送完毕后
{
rIICSTAT = 0xd0;//Stop MasTx condition 产生停止信号
rIICCON= 0xaf;//Resumes IIC operation.恢复IIC总线
Delay(1);//Wait until stop condtion is in effect.
//The pending bit will not be set after issuing stop condition.
break;
}
rIICDS = _iicData[_iicPt++];//_iicData[0] has dummy.第一次中断后将内部地址addr的值存入IICDS第二次存入要写入的数据
for(i=0;i<10;i++);//for setup time until rising edge of IICSCL//延时

rIICCON = 0xaf;//resumes IIC operation.恢复IIC总线
break;

case SETRDADDR:
//Uart_Printf("[ S%d ]",_iicDataCount);
if((_iicDataCount--)==0)
break;//第二次中断跳出//IIC operation is stopped because of IICCON[4]
rIICDS = _iicData[_iicPt++];//第一次中断将内部地址addr存入移位寄存器
for(i=0;i<10;i++);//For setup time until rising edge of IICSCL
rIICCON = 0xaf;//Resumes IIC operation.
break;

default:
break;
}
}
void Delay(int x)
{
int k, j;
while(x)
{
for (k=0;k<=0xff;k++)
for(j=0;j<=0xff;j++);

x--;
}
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top