SPI na GPIO ?

Ogladalem sobie wlasnie

formatting link
sie zastanawiam czy sa jakies przeciwskazania do wieszania urzadzen SPI na GPIO poza wolna praca ? Zna ktos moze jakis przykladowy kod pod Linuxa do eksperymentow ?

Pozdrawiam.

Reply to
RusH
Loading thread data ...

nie testowany, nie sprawdzający błędów, napisany w 5 minut kod:

#include <linux/ppdev.h>

#include <sys/ioctl.h>

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

int fd;

void init(void) { int x;

fd = open("/dev/parport0", O_WRONLY); ioctl(fd, PPCLAIM, 0);

/* CS=1 CLK=0 DIN=1 */ x = 0xfe; ioctl(fd, PPWDATA, &x); }

void send(unsigned char x) { int i, j

/* CS=0 CLK=0 DIN=1 */ j = 0xfc; ioctl(fd, PPWDATA, &j);

for (i = 0; i < 8; i++, x <<= 1) { /* CS=0 CLK=0 DIN=x */ j = (x & 128) ? 0xf8 : 0xfc; ioctl(fd, PPWDATA, &j); /* CS=0 CLK=1 DIN=x */ j = j | 0x01; ioctl(fd, PPWDATA, &j);

/* CS=0 CLK=0 DIN=x */ j = j & 0xfe; ioctl(fd, PPWDATA, &j); }

/* CS=1 CLK=0 DIN=1 */ j = 0xfe; ioctl(fd, PPWDATA, &j); }

/* w. */

Reply to
Wojtek Kaniewski

nie testowany, nie sprawdzający błędów, napisany w 5 minut kod:

#include <linux/ppdev.h>

#include <sys/ioctl.h>

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

int fd;

void init(void) { int x;

fd = open("/dev/parport0", O_WRONLY); ioctl(fd, PPCLAIM, 0);

/* CS=1 CLK=0 DIN=1 */ x = 0xfe; ioctl(fd, PPWDATA, &x); }

void send(unsigned char x) { int i, j

/* CS=0 CLK=0 DIN=1 */ j = 0xfc; ioctl(fd, PPWDATA, &j);

for (i = 0; i < 8; i++, x <<= 1) { /* CS=0 CLK=0 DIN=x */ j = (x & 128) ? 0xfc : 0xf8; ioctl(fd, PPWDATA, &j);

/* CS=0 CLK=1 DIN=x */ j = j | 0x01; ioctl(fd, PPWDATA, &j);

/* CS=0 CLK=0 DIN=x */ j = j & 0xfe; ioctl(fd, PPWDATA, &j); }

/* CS=1 CLK=0 DIN=1 */ j = 0xfe; ioctl(fd, PPWDATA, &j); }

/* w. */

Reply to
Wojtek Kaniewski

:) wiem jak sie gada z LPT, mialem raczej nadzieje na jakies API SPI gotowe :P Znalazlem w miedzy czasie cos takeigo :

formatting link
Mysle ze na upartego mozna zrobic prosty czytnik SD/MMC pod LPT na poczatek i na tym poeksperymentowac.

Pozdrawiam.

Reply to
RusH

no cóż, zdawało mi się, że to właśnie dostałeś.

kiedyś wygooglałem gotowy sterownik do MMC na GPIO, tyle że przeznaczony do jakiegoś SoC, na którym chodzi Linux, więc nie powinieneś mieć z tym problemów.

w.

Reply to
Wojtek Kaniewski

Problemem jest mnogosc hasel z GPIO i MMC w google :( googlalem >2h i nic nie znalazlem poza kodem na PICa (bardzo ograniczony) i tym odczytem temperatury.

Pozdrawiam.

Reply to
RusH

faktycznie, teraz nie udało mi się tego znaleźć. w każdym razie przykładów odczytu kart MMC po SPI jest w sieci całe mnóstwo, głównie w odtwarzaczach MP3. przeniesienie tego na Linuksa to zwykle zamiana odwołań do SPDR na proste funkcje (w jedną stronę już podesłałem) albo sbi() i cbi() na ioctl()e.

w.

Reply to
Wojtek Kaniewski

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.