DSP28335读写M24M02程序
时间: 2023-09-28 18:04:56 浏览: 42
由于M24M02是I2C EEPROM,因此我们需要使用DSP28335的I2C模块进行读写操作。以下是一个简单的示例程序,演示如何使用DSP28335的I2C模块读写M24M02。
首先,我们需要初始化DSP28335的I2C模块。以下是一个简单的初始化函数:
void InitI2C(void)
{
// 设置I2C时钟频率为100kHz
I2caRegs.PSC.all = 6;
I2caRegs.SCLH.all = 60;
I2caRegs.SCLL.all = 60;
// 使能I2C模块
I2caRegs.I2CMDR.all = 0x0020;
}
接下来,我们可以编写一个函数来向M24M02写入数据。以下是一个简单的写入函数:
void WriteToM24M02(Uint16 address, Uint16 data)
{
// 发送起始信号
I2caRegs.I2CSAR.all = M24M02_ADDR;
I2caRegs.I2CCNT = 2;
I2caRegs.I2CDXR = address >> 8; // 发送高位地址
I2caRegs.I2CDXR = address & 0xFF; // 发送低位地址
I2caRegs.I2CMDR.all = 0x6E20; // 发送起始信号、写入模式、使能中断
// 等待传输完成
while(!I2caRegs.I2CSTR.bit.ARDY);
// 发送数据
I2caRegs.I2CCNT = 1;
I2caRegs.I2CDXR = data; // 发送数据
I2caRegs.I2CMDR.all = 0x2620; // 写入模式、使能中断
// 等待传输完成
while(!I2caRegs.I2CSTR.bit.ARDY);
// 发送停止信号
I2caRegs.I2CMDR.all = 0x2A20; // 发送停止信号、使能中断
}
最后,我们可以编写一个函数来从M24M02读取数据。以下是一个简单的读取函数:
Uint16 ReadFromM24M02(Uint16 address)
{
Uint16 data;
// 发送起始信号
I2caRegs.I2CSAR.all = M24M02_ADDR;
I2caRegs.I2CCNT = 2;
I2caRegs.I2CDXR = address >> 8; // 发送高位地址
I2caRegs.I2CDXR = address & 0xFF; // 发送低位地址
I2caRegs.I2CMDR.all = 0x6E20; // 发送起始信号、写入模式、使能中断
// 等待传输完成
while(!I2caRegs.I2CSTR.bit.ARDY);
// 发送起始信号
I2caRegs.I2CSAR.all = M24M02_ADDR;
I2caRegs.I2CCNT = 1;
I2caRegs.I2CMDR.all = 0x2620; // 读取模式、使能中断
// 等待传输完成
while(!I2caRegs.I2CSTR.bit.ARDY);
// 读取数据
data = I2caRegs.I2CDRR;
// 发送停止信号
I2caRegs.I2CMDR.all = 0x2A20; // 发送停止信号、使能中断
return data;
}
注意,上述示例程序中的M24M02_ADDR应该设置为M24M02的I2C地址。此外,还应该在DSP28335的I2C引脚上连接适当的电路。