我会告诉你这是我第一次写DSP28335程序么?我会告诉你当时我看寄存器配置和I2c时序图都快疯了么?当时在网上也找了几个相关例程,但都是FIFO中断的,完全看不懂好么??最后,痛定思痛,还是根据自己的理解自己动手吧,过程必须是很痛苦的。。。。哈哈哈,当然程序调通时,我也是很高兴滴~~废话不多说,上代码,请多指教,勿喷哈!
void eeprom_write_byte(unsigned char H_addr,unsigned char L_addr,unsigned char data)//写入一个字节
{
char Busy_flag;
Busy_flag = I2caRegs.I2CSTR.bit.BB;//判断总线是否忙
if(!Busy_flag)
{
while(!I2caRegs.I2CSTR.bit.XRDY);
I2caRegs.I2CSAR = 0x50; //AT24C64从器件地址,一定要注意了, 我当时就写错了,
//查 了好久才发现的。。。。囧
I2caRegs.I2CCNT = 3;
I2caRegs.I2CDXR = H_addr;
I2caRegs.I2CMDR.all = 0x6E20;//在读写过程中只需要配一次就ok,我当时写一个字节就重新配一
//次。。。。。走了好多弯路的说~
while(!I2caRegs.I2CSTR.bit.XRDY);
I2caRegs.I2CDXR = L_addr;
while(!I2caRegs.I2CSTR.bit.XRDY);
I2caRegs.I2CDXR = data;
}
}
读数据跟写数据类似,只会更简单,就不上代码咯~~ |