尊敬的
我使用 I2C 将 RTC mode1307与 TMS320F28035连接。 但我可以阅读日期、我随附了我的计划、请帮我。
unsigned int get_integer4 (char 计数器)
{
unsigned int value=0、i、乘法器=1、临时;
字符 j;
char array[8]={0、0、0、0、0、0、0};//
char key=99、count2=0;
date= I2C_read2 (DATE_ADDRESS);//月、月_地址、年_地址最小值、最小值_地址
year1= I2C_read3 (year_address);//year1_address
Int_TO_STRINT2 (数组、日期、年份1);//year1)
for (i=0;<counter;i++))
{j=array[i];
display_char (j、2、i);//display_char (cap_array[i]、2、i);// 0=数据为显示、2=行号、无数字
}
while (key!= ENTER)
{
键=键盘(任意键);
if (键<10)
{
array[count2]=键;
display_char ((key+48)、2、count2);
count2++;
if (count2 ==(counter)) count2=0;
}
delay_loop (3000000);
}
for (i =计数器;i >0;i -)
{
INTERIM=(int)数组[I-1];
INTERIMITY*=乘数;
Value+=临时;
乘数*=10;
}
return (value);
}
uint16 I2C_read2 (无符号 int 地址)
{
unsigned int data、ADD2、data2;
I2caRegs.I2CFFRX.bit.RXFFINTCLR=1;
ADD2 =地址;
//等待直到 STP 位从任何先前的主设备通信中清零。
//模块清除该位的操作被延迟到 SCD 位之后
//设置。 如果在启动新消息之前未选中此位
// I2C 可能会被混淆。
while (I2caRegs.I2CMDR.bit.STP==1);
I2caRegs.I2CSAR = 0x0068;
I2caRegs.I2CCNT = 2;
I2caRegs.I2CDXR =地址;//(地址>>=8);
I2caRegs.I2CDXR = ADD2;
I2caRegs.I2CMDR.ALL = 0x6E20;//发送数据到设置 EEPROM 地址
while (I2caRegs.I2CMDR.bit.STP==1);
I2caRegs.I2CCNT =2;//设置预期的字节数
I2caRegs.I2CMDR.ALL = 0x6C20;//作为主接收器发送重启
while (I2caRegs.I2CFFRX.bit.RXFFINT=0);
I2caRegs.I2CFFRX.bit.RXFFINTCLR=1;
Data=I2caRegs.I2CDRR;
Data=(data&=0x003F);
//data <<=8;
//data=(data&=0x003F);//日期和月份
Data2=I2caRegs.I2CDRR;
Data2<<=8;
Data+=(data2 &=0x3F00);//data+=(data2 &=0x00FF);
返回(数据);
}
uint16 I2C_read3 (char 地址)//int I2C_read3 (unsigned int 地址)
{
unsigned int data、ADD2、data2;//、data2
I2caRegs.I2CFFRX.bit.RXFFINTCLR=1;
ADD2 =地址;
//等待直到 STP 位从任何先前的主设备通信中清零。
//模块清除该位的操作被延迟到 SCD 位之后
//设置。 如果在启动新消息之前未选中此位
// I2C 可能会被混淆。
while (I2caRegs.I2CMDR.bit.STP==1);
I2caRegs.I2CSAR = 0x0068;
I2caRegs.I2CCNT = 2;
I2caRegs.I2CDXR =地址;//>>=8;//(地址>>=8);
I2caRegs.I2CDXR = ADD2;//地址;
I2caRegs.I2CMDR.all =0x2E20;//0x6E20;//发送数据以设置 EEPROM 地址
while (I2caRegs.I2CMDR.bit.STP==1);
I2caRegs.I2CCNT= 2;//设置预期的字节数
I2caRegs.I2CMDR.all =0x2C20;//0x6C20;//作为主接收器发送重启
while (I2caRegs.I2CFFRX.bit.RXFFINT=0);
I2caRegs.I2CFFRX.bit.RXFFINTCLR=1;
Data=I2caRegs.I2CDRR;
Data=(data &=0x00FF);
数据<<=8;
//日期和月份
Data2=I2caRegs.I2CDRR;
Data+=(data2 &=0xFF);
//delay_loop (200);
返回(数据);
}
请给我邮寄
bkhanduri@awtxglobal.com