DSP28335通过I2外扩M24M02存大量数据代码
时间: 2023-09-18 14:08:30 浏览: 46
以下是一份DSP28335通过I2C外扩M24M02存储大量数据的代码示例:
```c
#include "DSP2833x_Device.h"
#include "DSP2833x_Examples.h"
#include "DSP2833x_I2C_defines.h"
#include "DSP2833x_I2C.h"
#define M24M02_I2C_ADDR 0x50 // M24M02 I2C地址
void M24M02_WriteByte(Uint16 addr, Uint16 data);
Uint16 M24M02_ReadByte(Uint16 addr);
void main(void)
{
InitSysCtrl(); // 系统时钟初始化
I2C_init(); // I2C初始化
// 写入数据
M24M02_WriteByte(0x0000, 0x01);
M24M02_WriteByte(0x0001, 0x02);
M24M02_WriteByte(0x0002, 0x03);
// 读取数据
Uint16 data1 = M24M02_ReadByte(0x0000);
Uint16 data2 = M24M02_ReadByte(0x0001);
Uint16 data3 = M24M02_ReadByte(0x0002);
while(1);
}
// 写入一个字节的数据
void M24M02_WriteByte(Uint16 addr, Uint16 data)
{
// 发送起始信号
I2C_start(I2caRegs.I2CSAR = M24M02_I2C_ADDR, I2C_WRITE);
// 发送地址
I2C_write(addr >> 8);
I2C_write(addr & 0xFF);
// 发送数据
I2C_write(data);
// 发送停止信号
I2C_stop();
}
// 读取一个字节的数据
Uint16 M24M02_ReadByte(Uint16 addr)
{
Uint16 data;
// 发送起始信号
I2C_start(I2caRegs.I2CSAR = M24M02_I2C_ADDR, I2C_WRITE);
// 发送地址
I2C_write(addr >> 8);
I2C_write(addr & 0xFF);
// 发送重复起始信号
I2C_start(I2caRegs.I2CSAR = M24M02_I2C_ADDR, I2C_READ);
// 读取数据
data = I2C_read(0);
// 发送停止信号
I2C_stop();
return data;
}
```
在上面的代码中,我们定义了M24M02的I2C地址为0x50,并实现了M24M02_WriteByte和M24M02_ReadByte两个函数,用于写入和读取一个字节的数据。在main函数中,我们分别写入了0x01、0x02和0x03三个数据,并读取了这三个数据,然后进入了一个无限循环。在实际应用中,我们可以根据需要修改数据的地址和数据值,以及添加其他功能。