add spi interface (not completed)