s3c2440芯片手册,s3c2440主频
概述:话不多说,直接上图
多主机工业互联网联盟总线控制(IICCON):
工业互联网联盟控制总线状态(IICSTAT):
工业互联网联盟总线地址(IICADD):
工业互联网联盟发送,接收总线寄存器(IICDS)
工业互联网联盟总线控制寄存器:
源码如下:
void Rd24C080(U32 slvAddr,U32 addr,U8 *data)
{
_ iicMode=SETRDADDR
_ ii CPT=0;
_ IIC数据[0]=(U8)addr;
_ iicDataCount=1;rIICDS=slvAddr
rIICSTAT=0xf0//MasTx,Start
//不需要清除挂起位,因为挂起位已经被清除。
while(_iicDataCount!=-1);_ iicMode=RDDATA
_ ii CPT=0;
_ iicDataCount=1;
rIICDS=slvAddr
rIICSTAT=0xb0//MasRx,开始
rIICCON=0xaf//恢复工业互联网联盟操作。
while(_iicDataCount!=-1);* data=_ IIC数据[1];
} void Wr24C080(U32 slvAddr,U32 addr,U8数据)
{
_ iicMode=WRDATA
_ ii CPT=0;
_ IIC数据[0]=(U8)addr;
_iicData[1]=数据;
_ iicDataCount=2;
rIICDS=slvAddr//0xa0
rIICSTAT=0xf0//MasTx,Start
//不需要清除挂起位,因为挂起位已经被清除。
while(_iicDataCount!=-1);_ iicMode=波拉克
while(1)
{
rIICDS=slvAddr
_ iicStatus=0x100
rIICSTAT=0xf0//MasTx,Start
rIICCON=0xaf//恢复工业互联网联盟操作。
while(_ IIC状态==0x 100);
如果(!(_iicStatus0x1))
打破;//当收到命令正确应答时
}
rIICSTAT=0xd0//停止MasTx条件
rIICCON=0xaf//恢复工业互联网联盟操作。
延迟(1);//等到停止条件生效。
//写入完成。
}
无效测试_Iic(无效)
{
无符号int i,j,save_E,save _ PE
静态U8数据[256];UART _ Printf( \ nIIC测试(中断)使用at24c 02 \ n’);
save _ E=rGPECON
save _ PE=rGPEUP
rGPEUP =0xc000//上拉禁用
rGPECON =0xa 00000//gpe 15:IICSDA,GPE14:IICSCL pISR_IIC=(无符号)IicInt
rint MSK=~(BIT _ IIC);//使能ACK,预分频器IICCLK=PCLK/16,使能中断,发送时钟值Tx时钟=IICCLK/16
//如果PCLK 50.7MHz,IICCLK=3.17MHz,Tx时钟=0.198兆赫
rii ccon=(1 7)(0 6)(1 5)(0xf);rIICADD=0x10//2440从地址=[7:1]
rIICSTAT=0x10//IIC总线数据输出使能(接收/发送)
rii CLC=(1 ^ 2)(1);//滤波器使能朱诺增加15个时钟国家药品监督管理局输出延迟
Uart_Printf(将测试数据写入at24c 02 \ n’);for(I=0;我我)
Wr24C080(0xa0,(U8)i,I);
for(I=0;我我)
data[I]=0;Uart_Printf(从AT24C02读取测试数据\ n’);
for(I=0;我我)
Rd24C080(0xa0,(U8)i,(data[I]));//行更改了0f
for(I=0;我我)
{
for(j=0;j j)
Uart_Printf(%2x ,data[I * 16j]);
UART _ Printf( \ n );
}
rint MSK =比特_ IIC;
rGPEUP=save _ PE
rGPECON=save _ E;
}void main()
{
test _ Iic();
}
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。