DSP28335和M24M02 通讯存储多数据代码
时间: 2023-10-04 08:14:30 浏览: 88
以下是DSP28335和M24M02通讯存储多数据的代码示例:
#include "DSP2833x_Device.h"
#include "DSP2833x_Examples.h"
#include "M24M02.h"
Uint16 data[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; // 要存储的数据
void main(void)
{
InitSysCtrl(); // 初始化系统时钟
InitSPI(); // 初始化SPI接口
InitM24M02(); // 初始化M24M02芯片
// 存储数据
for(Uint16 i=0; i<10; i++)
{
WriteM24M02(i*2, data[i]); // 写入数据
}
// 读取数据
for(Uint16 i=0; i<10; i++)
{
Uint16 readData = ReadM24M02(i*2); // 读取数据
if(readData != data[i]) // 判断读取的数据是否正确
{
// 数据错误处理
}
}
while(1);
}
其中,InitSPI()和InitSysCtrl()函数是初始化SPI接口和系统时钟的函数,具体实现可以参考DSP2833x的相关手册。InitM24M02()函数是初始化M24M02芯片的函数,具体实现如下:
void InitM24M02(void)
{
// 设置SPI时钟频率为200kHz
SpiaRegs.SPICCR.bit.CLKPOLARITY = 0; // 时钟极性为低电平
SpiaRegs.SPICCR.bit.SPICHAR = 15; // 字长为16位
SpiaRegs.SPIBRR = 299; // 时钟分频系数为300,SPI时钟频率为200kHz
// 初始化M24M02芯片
WriteM24M02(0, 0x06); // 写入写使能命令
WriteM24M02(0, 0x01); // 写入写保护寄存器地址
WriteM24M02(0, 0x00); // 写入写保护寄存器值,禁止写保护
}
WriteM24M02函数用于向M24M02芯片写入数据,具体实现如下:
void WriteM24M02(Uint16 addr, Uint16 data)
{
// 发送写使能命令
SpiaRegs.SPITXBUF = 0x06;
while(SpiaRegs.SPISTS.bit.INT_FLAG == 0);
// 发送写命令和地址
SpiaRegs.SPITXBUF = 0x02;
while(SpiaRegs.SPISTS.bit.INT_FLAG == 0);
SpiaRegs.SPITXBUF = (addr>>8) & 0xFF;
while(SpiaRegs.SPISTS.bit.INT_FLAG == 0);
SpiaRegs.SPITXBUF = addr & 0xFF;
while(SpiaRegs.SPISTS.bit.INT_FLAG == 0);
// 发送数据
SpiaRegs.SPITXBUF = (data>>8) & 0xFF;
while(SpiaRegs.SPISTS.bit.INT_FLAG == 0);
SpiaRegs.SPITXBUF = data & 0xFF;
while(SpiaRegs.SPISTS.bit.INT_FLAG == 0);
}
ReadM24M02函数用于从M24M02芯片读取数据,具体实现如下:
Uint16 ReadM24M02(Uint16 addr)
{
Uint16 readData;
// 发送读命令和地址
SpiaRegs.SPITXBUF = 0x03;
while(SpiaRegs.SPISTS.bit.INT_FLAG == 0);
SpiaRegs.SPITXBUF = (addr>>8) & 0xFF;
while(SpiaRegs.SPISTS.bit.INT_FLAG == 0);
SpiaRegs.SPITXBUF = addr & 0xFF;
while(SpiaRegs.SPISTS.bit.INT_FLAG == 0);
// 读取数据
SpiaRegs.SPITXBUF = 0x00;
while(SpiaRegs.SPISTS.bit.INT_FLAG == 0);
readData = (SpiaRegs.SPIRXBUF<<8) & 0xFF00;
SpiaRegs.SPITXBUF = 0x00;
while(SpiaRegs.SPISTS.bit.INT_FLAG == 0);
readData |= (SpiaRegs.SPIRXBUF & 0xFF);
return readData;
}
阅读全文