maxpeng / ftdi_mpsse_spi_serial_flash

This project contains a C example of using FTDI MPSSE library to access a SPI serial flash through the FTDI UM232H module.

Home Page:https://maxpeng.github.io/ftdi_mpsse_spi_serial_flash/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ftdi_mpsee_spi_serial_flash

This project contains an LibMPSSE-SPI example to program Winbod W25Q64JV serial flash connected to the SPI channel of UM232H module.

One copy of data sheet of W25Q64JV is placed at here.

FTDI UM232H

Connections

SPI Pin UM232H Pin
SCLK ADBUS0
MOSI ADBUS1
MISO ADBUS2
CS0 ADBUS3

Notes

  1. Connections must be made to the VIO and 5V0 power pins of UM232H module before the module will be recognised by a PC.
  2. For th details of pinout, refer pyftdi - FTDI device pinout.

Building the example

  • Configure the build using cmake

    C:\dev\ftdi_mpsse_spi_serial_flash>mkdir cmake-build-mingw32
    C:\dev\ftdi_mpsse_spi_serial_flash>cd cmake-build-mingw32
    C:\dev\ftdi_mpsse_spi_serial_flash\cmake-build-mingw32>cmake .. -DCMAKE_BUILD_TYPE=Debug -G "CodeBlocks - MinGW Makefiles"
    -- The C compiler identification is GNU 10.1.0
    -- The CXX compiler identification is GNU 10.1.0
    -- Check for working C compiler: C:/msys64/mingw32/bin/gcc.exe
    -- Check for working C compiler: C:/msys64/mingw32/bin/gcc.exe -- works
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Detecting C compile features
    -- Detecting C compile features - done
    -- Check for working CXX compiler: C:/msys64/mingw32/bin/g++.exe
    -- Check for working CXX compiler: C:/msys64/mingw32/bin/g++.exe -- works
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    Found MPSSE library - C:/dev/ftdi_mpsse_spi_serial_flash/src/mpsse/mingw-x86/libMPSSE.a
    -- Configuring done
    -- Generating done
    -- Build files have been written to: C:/dev/ftdi_mpsse_spi_serial_flash/cmake-build-debug-mingw32
    
  • Build the application

    C:\dev\ftdi_mpsse_spi_serial_flash\cmake-build-mingw32>cmake --build . --target all -v
    

Example of output

C:\dev\ftdi_mpsse_spi_serial_flash\cmake-build-debug-mingw32>ftdi_mpsse_spi_serial_flash.exe
Number of SPI channels: 1

# read ID:
ef 40 17

# read page at address 0x000000:
read data:
00 01 02 03 04 05 06 07 - 08 09 0a 0b 0c 0d 0e 0f
10 11 12 13 14 15 16 17 - 18 19 1a 1b 1c 1d 1e 1f
20 21 22 23 24 25 26 27 - 28 29 2a 2b 2c 2d 2e 2f
30 31 32 33 34 35 36 37 - 38 39 3a 3b 3c 3d 3e 3f
40 41 42 43 44 45 46 47 - 48 49 4a 4b 4c 4d 4e 4f
50 51 52 53 54 55 56 57 - 58 59 5a 5b 5c 5d 5e 5f
60 61 62 63 64 65 66 67 - 68 69 6a 6b 6c 6d 6e 6f
70 71 72 73 74 75 76 77 - 78 79 7a 7b 7c 7d 7e 7f
80 81 82 83 84 85 86 87 - 88 89 8a 8b 8c 8d 8e 8f
90 91 92 93 94 95 96 97 - 98 99 9a 9b 9c 9d 9e 9f
a0 a1 a2 a3 a4 a5 a6 a7 - a8 a9 aa ab ac ad ae af
b0 b1 b2 b3 b4 b5 b6 b7 - b8 b9 ba bb bc bd be bf
c0 c1 c2 c3 c4 c5 c6 c7 - c8 c9 ca cb cc cd ce cf
d0 d1 d2 d3 d4 d5 d6 d7 - d8 d9 da db dc dd de df
e0 e1 e2 e3 e4 e5 e6 e7 - e8 e9 ea eb ec ed ee ef
f0 f1 f2 f3 f4 f5 f6 f7 - f8 f9 fa fb fc fd fe ff


# read status:
00

# enable write

# read status:
02

# erase sector at address 0x000000:

# read status:
03

# read status:
03

# read status:
03

# read status:
00

# read page at address 0x000000:
read data:
ff ff ff ff ff ff ff ff - ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff - ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff - ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff - ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff - ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff - ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff - ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff - ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff - ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff - ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff - ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff - ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff - ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff - ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff - ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff - ff ff ff ff ff ff ff ff


# enable write

# write page at address 0x000000:
data to write:
00 01 02 03 04 05 06 07 - 08 09 0a 0b 0c 0d 0e 0f
10 11 12 13 14 15 16 17 - 18 19 1a 1b 1c 1d 1e 1f
20 21 22 23 24 25 26 27 - 28 29 2a 2b 2c 2d 2e 2f
30 31 32 33 34 35 36 37 - 38 39 3a 3b 3c 3d 3e 3f
40 41 42 43 44 45 46 47 - 48 49 4a 4b 4c 4d 4e 4f
50 51 52 53 54 55 56 57 - 58 59 5a 5b 5c 5d 5e 5f
60 61 62 63 64 65 66 67 - 68 69 6a 6b 6c 6d 6e 6f
70 71 72 73 74 75 76 77 - 78 79 7a 7b 7c 7d 7e 7f
80 81 82 83 84 85 86 87 - 88 89 8a 8b 8c 8d 8e 8f
90 91 92 93 94 95 96 97 - 98 99 9a 9b 9c 9d 9e 9f
a0 a1 a2 a3 a4 a5 a6 a7 - a8 a9 aa ab ac ad ae af
b0 b1 b2 b3 b4 b5 b6 b7 - b8 b9 ba bb bc bd be bf
c0 c1 c2 c3 c4 c5 c6 c7 - c8 c9 ca cb cc cd ce cf
d0 d1 d2 d3 d4 d5 d6 d7 - d8 d9 da db dc dd de df
e0 e1 e2 e3 e4 e5 e6 e7 - e8 e9 ea eb ec ed ee ef
f0 f1 f2 f3 f4 f5 f6 f7 - f8 f9 fa fb fc fd fe ff


# read status:
00

# read page at address 0x000000:
read data:
00 01 02 03 04 05 06 07 - 08 09 0a 0b 0c 0d 0e 0f
10 11 12 13 14 15 16 17 - 18 19 1a 1b 1c 1d 1e 1f
20 21 22 23 24 25 26 27 - 28 29 2a 2b 2c 2d 2e 2f
30 31 32 33 34 35 36 37 - 38 39 3a 3b 3c 3d 3e 3f
40 41 42 43 44 45 46 47 - 48 49 4a 4b 4c 4d 4e 4f
50 51 52 53 54 55 56 57 - 58 59 5a 5b 5c 5d 5e 5f
60 61 62 63 64 65 66 67 - 68 69 6a 6b 6c 6d 6e 6f
70 71 72 73 74 75 76 77 - 78 79 7a 7b 7c 7d 7e 7f
80 81 82 83 84 85 86 87 - 88 89 8a 8b 8c 8d 8e 8f
90 91 92 93 94 95 96 97 - 98 99 9a 9b 9c 9d 9e 9f
a0 a1 a2 a3 a4 a5 a6 a7 - a8 a9 aa ab ac ad ae af
b0 b1 b2 b3 b4 b5 b6 b7 - b8 b9 ba bb bc bd be bf
c0 c1 c2 c3 c4 c5 c6 c7 - c8 c9 ca cb cc cd ce cf
d0 d1 d2 d3 d4 d5 d6 d7 - d8 d9 da db dc dd de df
e0 e1 e2 e3 e4 e5 e6 e7 - e8 e9 ea eb ec ed ee ef
f0 f1 f2 f3 f4 f5 f6 f7 - f8 f9 fa fb fc fd fe ff

References

  1. FTDI Application Note 178 - User Guide For LibMPSSE-SPI
  2. FTDI Application Note 411 - AN_411_FTx232H MPSSE I2C Master Example in Csharp
  3. pyftdi - FTDI device pinout

About

This project contains a C example of using FTDI MPSSE library to access a SPI serial flash through the FTDI UM232H module.

https://maxpeng.github.io/ftdi_mpsse_spi_serial_flash/


Languages

Language:C 97.2%Language:CMake 2.8%