From d80736ab6e8e3cad2f1a30c6eaba2d6883dbe967 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Sat, 26 Aug 2017 20:31:40 +0200 Subject: Remove AmForth --- amforth-6.5/common/lib/hardware/spi-mmc.frt | 98 ----------------------------- 1 file changed, 98 deletions(-) delete mode 100644 amforth-6.5/common/lib/hardware/spi-mmc.frt (limited to 'amforth-6.5/common/lib/hardware/spi-mmc.frt') diff --git a/amforth-6.5/common/lib/hardware/spi-mmc.frt b/amforth-6.5/common/lib/hardware/spi-mmc.frt deleted file mode 100644 index 7513e58..0000000 --- a/amforth-6.5/common/lib/hardware/spi-mmc.frt +++ /dev/null @@ -1,98 +0,0 @@ - - -: spi.init ( -- ) - +spi - spi.mode0 spi.setmode - -spi2x -; - -: spi.mmc.dummy ( x -- ) - 0 ?do $ff c!spi loop -; - -: spi.mmc.init ( -- ) - sd.init - spi.init - $11 spi.sd.dummy -; - -\ every command has 48 bits=6bytes -: mmc.cmd ( n1 n2 ... n6 -- ) - -mmc 20 ms \ de-select the card - $FF c!spi \ some random bits - +mmc 20 ms \ re-select the card - $40 or \ set bit 6 if the first byte assuming bit7 is 0 - &6 0 do c!spi loop ; \ send 48bits - - -\ response actions -\ there are different resonses: r1, r2, r3, r7 -\ r1 is the single byte response ( 0 means no error) -\ 0 b6 b5 b4 b3 b2 b1 b0 -\ | | | | | | | -\ | | | | | | In idle state -\ | | | | | Erase Reset -\ | | | | Illegal Command -\ | | | Command CRC error -\ | | Erase Sequence Error -\ | Address Error -\ Parameter Error - -\ waiting for cmd response -: mmc.cresp ( -- c|-1 ) - $FF 0 do - c@spi dup $80 and 0= \ bit7=0? - if unloop exit then \ -- c, 0=ok - drop \ -- - loop -1 ; \ -- -1, timeout - - -\ waiting for data response -: mmc.dresp ( -- c|-1 ) - $FF 0 do - c@spi dup $11 and 1 = \ xxx0ccc1 - if - $0F and unloop exit \ -- c, 5=ok - then - drop \ -- - loop -1 ; \ -- -1, timeout - -: R1 ( -- f ) - mmc.cresp -; - -: cmd0 ( -- f ) $95 0 0 0 0 0 mmc.cmd R1 1 = ; \ GO_IDLE_STATE - reset -: cmd1 ( -- f ) $ff 0 0 0 0 1 mmc.cmd R1 0= ; \ SEND_OP_COND init -: cmd16 ( -- ) $FF 0 0 2 0 16 mmc.cmd R1 drop ; \ SET_BLOCKLEN default 512 - -\ waiting for data token - -: mmc.wait_data_token ( -- f ) 0 16 0 do c@spi $FE = if drop true leave then loop ; - -\ read CSD and CID into a 16 byte buffer -16 buffer: mmc.infoblock - -: mmc.readblock ( addr len -- ) - mmc.wait_data_token - if - bounds do c@spi i c! loop - else abort" Could not read MMC data block" - then ; - -: cmd9 ( -- ) $ff 0 0 0 0 9 mmc.cmd R1 mmc.infoblock 16 mmc.readblock ; \ SEND_CSD -: cmd10 ( -- ) $ff 0 0 0 0 10 mmc.cmd R1 mmc.infoblock 16 mmc.readblock ; \ SEND_CID - -\ READ SINGLE BLOCK -: cmd17 ( addr n -- f ) - >r $ff ( CRC ) r> s>d 17 mmc.cmd R1 mmc.readblock ; - -: mmc.writeblock ( addr len -- ) - mmc.wait_data_token - if - bounds do i c@ c!spi loop - else abort" Could not write MMC data block" - then ; - -\ WRITE SINGLE BLOCK (n=512 bytes) -: cmd24 ( addr n -- f ) - >r $ff ( CRC ) r> s>d 24 mmc.cmd R1 mmc.writeblock ; -- cgit v1.2.3