Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
74 changes: 74 additions & 0 deletions dma/dma_memory_transfer.lpi
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
<ProjectOptions>
<Version Value="12"/>
<General>
<Flags>
<MainUnitHasCreateFormStatements Value="False"/>
<MainUnitHasTitleStatement Value="False"/>
<MainUnitHasScaledStatement Value="False"/>
</Flags>
<SessionStorage Value="InProjectDir"/>
<Title Value="dma_memory_transfer"/>
<UseAppBundle Value="False"/>
<ResourceType Value="res"/>
</General>
<BuildModes>
<Item Name="Default" Default="True"/>
</BuildModes>
<PublishOptions>
<Version Value="2"/>
<UseFileFilters Value="True"/>
</PublishOptions>
<RunParams>
<FormatVersion Value="2"/>
</RunParams>
<Units>
<Unit>
<Filename Value="dma_memory_transfer.lpr"/>
<IsPartOfProject Value="True"/>
</Unit>
</Units>
</ProjectOptions>
<CompilerOptions>
<Version Value="11"/>
<Target>
<Filename Value="bin/dma_memory_transfer"/>
</Target>
<SearchPaths>
<IncludeFiles Value="$(ProjOutDir)"/>
<OtherUnitFiles Value="../units"/>
<UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/>
</SearchPaths>
<CodeGeneration>
<TargetProcessor Value="ARMV6M"/>
<TargetCPU Value="arm"/>
<TargetOS Value="embedded"/>
</CodeGeneration>
<Linking>
<Debugging>
<DebugInfoType Value="dsDwarf2"/>
<UseLineInfoUnit Value="False"/>
</Debugging>
</Linking>
<Other>
<CustomOptions Value="-Wpraspi_pico
-godwarfsets
-godwarfcpp
-Xu"/>
</Other>
</CompilerOptions>
<Debugging>
<Exceptions>
<Item>
<Name Value="EAbort"/>
</Item>
<Item>
<Name Value="ECodetoolError"/>
</Item>
<Item>
<Name Value="EFOpenError"/>
</Item>
</Exceptions>
</Debugging>
</CONFIG>
33 changes: 33 additions & 0 deletions dma/dma_memory_transfer.lpr
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
program dma_memory_transfer;

{$MODE OBJFPC}
{$MEMORY 4096,4096}

uses
pico_c,
pico_dma_c;

// this example show how to transfer data from read_zone array
// to write_zone array with DMA

var
config : uint32;
read_zone : array[0..4] of byte = (1,2,3,4,5);
write_zone : array[0..4] of byte = (0,0,0,0,0);
i : integer;

begin
for i:=0 to 4 do
write_zone[i]:=0;
config:= dma_channel_get_default_config(DMA_CHANNEL0);
DMA.ch[DMA_CHANNEL0].al1_ctrl:=config; // set default config
dma_set_transfer_data_size(DMA_CHANNEL0,DMA_SIZE_8); // set word size
dma_set_read_increment(DMA_CHANNEL0,true); // set auto increment for reading
dma_set_write_increment(DMA_CHANNEL0,true); // set auto increment for writing
dma_set_read_address(DMA_CHANNEL0,@read_zone); // set read address
dma_set_write_address(DMA_CHANNEL0,@write_zone); // set write address
dma_set_count_of(DMA_CHANNEL0,SizeOf(read_zone)); // set number of byte to transfer and start DMA

while True do; // Transfer is done
end.

Loading