STM32F103C8 W25q16

Добрый вечер подключил память к контроллеру по SPI память определилась, но загрузить данные в нее или отформатировать ее не как не могу , в чем проблема не могу понять, программировать начал не давно большого опыта нет определение микросхемы w25q16 операционной системой usbd_storage_if.c чтение запись функция чтения сектора

void W25qxx_ReadSector(uint8_t *pBuffer, uint32_t Sector_Address, uint32_t OffsetInByte, uint32_t NumByteToRead_up_to_SectorSize)
{
    if ((NumByteToRead_up_to_SectorSize > w25qxx.SectorSize) || (NumByteToRead_up_to_SectorSize == 0))
        NumByteToRead_up_to_SectorSize = w25qxx.SectorSize;
#if (_W25QXX_DEBUG == 1)
    printf("+++w25qxx ReadSector:%d, Offset:%d ,Read %d Bytes, begin...\r\n", Sector_Address, OffsetInByte, NumByteToRead_up_to_SectorSize);
    W25qxx_Delay(100);
#endif
    if (OffsetInByte >= w25qxx.SectorSize)
    {
#if (_W25QXX_DEBUG == 1)
        printf("---w25qxx ReadSector Faild!\r\n");
        W25qxx_Delay(100);
#endif
        return;
    }
    uint32_t StartPage;
    int32_t BytesToRead;
    uint32_t LocalOffset;
    if ((OffsetInByte + NumByteToRead_up_to_SectorSize) > w25qxx.SectorSize)
        BytesToRead = w25qxx.SectorSize - OffsetInByte;
    else
        BytesToRead = NumByteToRead_up_to_SectorSize;
    StartPage = W25qxx_SectorToPage(Sector_Address) + (OffsetInByte / w25qxx.PageSize);
    LocalOffset = OffsetInByte % w25qxx.PageSize;
    do
    {
        W25qxx_ReadPage(pBuffer, StartPage, LocalOffset, BytesToRead);
        StartPage++;
        BytesToRead -= w25qxx.PageSize - LocalOffset;
        pBuffer += w25qxx.PageSize - LocalOffset;
        LocalOffset = 0;
    } while (BytesToRead > 0);
#if (_W25QXX_DEBUG == 1)
    printf("---w25qxx ReadSector Done\r\n");
    W25qxx_Delay(100);
#endif
}

библиотеку качал отсюда, понятно что такие вещи лучше писать самому но у меня пока опыта маловата https://github.com/nimaltd/w25qxx


Ответы (0 шт):