Раньше без проблем писал char и int во внешнюю память пользуясь функцией.
Код
void SPIEEPROM_Write(uint32_t address, uint32_t lenght, uint8_t *buffer)
{
// Note!!!Every write operation demands a write enable!!!
SPI2_CSlow();
SPI_SendByte(USART2,SPIEEPROM_CMD_WREN);
SPI2_CShigh();
// start write
SPI2_CSlow();
// send write command
SPI_SendByte(USART2,SPIEEPROM_CMD_WRITE);
// send address
SPI_SendByte(USART2,address>>8);
SPI_SendByte(USART2,address&0x00FF);
while(lenght--)
{
// send data to be written
SPI_SendByte(USART2,*buffer++);
}
// stop write
SPI2_CShigh();
}
Теперь понадобилось записать float.
пробую так
Код
void SPIEEPROM_WriteFloat(uint32_t addr, float *fval)
{
uint8_t i;
uint8_t farr[4];
uint8_t *num;
num=(uint8_t *)fval;
for(i=0;i<4;i++)
{
num++;
farr[i]=*num;
}
SPIEEPROM_Write(addr,4,farr);
}
и так
Код
void SPIEEPROM_WriteFloat(uint32_t addr, float fval)
{
uint8_t farr[4];
farr[0] = (uint8_t)fval & 0xFF;
farr[1] = (uint8_t)fval >> 8;
farr[2] = (uint8_t)fval >> 16;
farr[2] = (uint8_t)fval >> 24;
SPIEEPROM_Write(addr,4,farr);
}
ерунда какая то получается. может кто подскажет как правильно?