File main.cpp¶
File List > examples > QSPI_ReadAndWrite > main.cpp
Go to the documentation of this file
Source Code¶
#include "daisy_seed.h"
#include <cmath>
using namespace daisy;
DaisySeed hw;
static constexpr size_t kTestSize = 0x1000;
static uint8_t workspace[kTestSize];
int main(void)
{
hw.Init();
hw.StartLog(true);
hw.PrintLine("Erasing 4kB from QSPI memory...");
uint32_t start_addr = 0;
uint32_t end_addr = start_addr + kTestSize;
if(hw.qspi.Erase(0, end_addr) == QSPIHandle::Result::OK)
hw.PrintLine("Success");
else
hw.PrintLine("Failed to erase...");
hw.PrintLine("Validating erasure...");
uint32_t fail_cnt = 0;
dsy_dma_invalidate_cache_for_buffer((uint8_t*)(0x90000000) + start_addr,
kTestSize);
for(size_t i = 0; i < kTestSize; i++)
{
uint32_t addr = 0x90000000 + (start_addr + i);
uint8_t* qspi_byte = (uint8_t*)addr;
if(*qspi_byte != 0xff)
fail_cnt++;
}
hw.PrintLine("Done: %d unerased values", fail_cnt);
hw.PrintLine("Writing all zeroes to 4kB section of QSPI...");
std::fill(workspace, workspace + kTestSize, 0x00);
if(hw.qspi.Write(start_addr, end_addr, workspace) == QSPIHandle::Result::OK)
hw.PrintLine("Success");
else
hw.PrintLine("Failed to write...");
hw.PrintLine("Validating write success...");
fail_cnt = 0;
dsy_dma_invalidate_cache_for_buffer((uint8_t*)(0x90000000) + start_addr,
kTestSize);
for(size_t i = 0; i < kTestSize; i++)
{
uint32_t addr = 0x90000000 + (start_addr + i);
uint8_t* qspi_byte = (uint8_t*)addr;
if(*qspi_byte != 0x00)
fail_cnt++;
}
hw.PrintLine("Done: %d unwritten values", fail_cnt);
while(1)
{
hw.SetLed((System::GetNow() & 511) > 255);
}
}