MotorControlModuleSDFM_TMS3.../Projects/epwm_test/src/ExternalEEPROM/BL25CM1A.c

95 lines
2.1 KiB
C
Raw Normal View History

/*
* BL25CM1A.c
*
* Created on: 7 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>. 2023 <EFBFBD>.
* Author: seklyuts
*/
#include "f28x_project.h"
#include "spi_init.h"
#define WREN 0b00000110 //Enable Write Operations
#define WRDI 0b00000100 //Disable Write Operations
#define RDSR 0b00000101 //Read Status Register
#define WRSR 0b00000001 //Write Status Register
#define READ 0b00000011 //Read Data from Memory
#define WRITE 0b00000010 //Write Data to Memory
#define RDID 0b10000011 //Read identification page
#define WRID 0b10000010 //Write identification page
#define RDLS 0b10000011 //Reads the identification page lock status
#define LID 0b10000010 //Locks the identification page in read-only mode
uint16_t sdata2 = RDSR; // sent data
uint16_t rdata2[16] ; // received data
//uint16_t error2 = 0;
void Bl25cm1a_en(void)
{
volatile uint16_t empty;
transmitData(WREN);
while(SpiRegs.SPIFFRX.bit.RXFFST != 1)
{
}
empty = SpiRegs.SPIRXBUF;
}
void Bl25cm1a_write(void)
{
transmitData(sdata2);
transmitData(0xFF);
while(SpiRegs.SPIFFRX.bit.RXFFST != 2)
{
}
rdata2[0] = SpiRegs.SPIRXBUF;
rdata2[1] = SpiRegs.SPIRXBUF;
}
#define quant 8
void Bl25cm1a_read_data(uint32_t Addr)
{
volatile uint16_t empty, i, j;
transmitData(READ);
transmitData(Addr>>16);
transmitData(Addr>>8);
transmitData(Addr);
for(i = 0; i<quant; i++) transmitData(0xFF);
while(SpiRegs.SPIFFRX.bit.RXFFST != (quant+4))
{
}
empty = SpiRegs.SPIRXBUF;
empty = SpiRegs.SPIRXBUF;
empty = SpiRegs.SPIRXBUF;
empty = SpiRegs.SPIRXBUF;
for(j = 0; j<quant; j++)
{
rdata2[j] = SpiRegs.SPIRXBUF;
}
}
void Bl25cm1a_write_data(uint32_t Addr)
{
volatile uint16_t empty, i, j;
transmitData(WRITE);
transmitData(Addr>>16);
transmitData(Addr>>8);
transmitData(Addr);
for(i = 0; i<quant; i++) transmitData(rdata2[i]);
while(SpiRegs.SPIFFRX.bit.RXFFST != (quant+4))
{
}
empty = SpiRegs.SPIRXBUF;
empty = SpiRegs.SPIRXBUF;
empty = SpiRegs.SPIRXBUF;
empty = SpiRegs.SPIRXBUF;
for(j = 0; j<quant; j++)
{
empty = SpiRegs.SPIRXBUF;
}
}