Sziasztok ,
Adott egy panel amelyen van egy RFM22B transceiver modul és egy PIC18F67J50 mikrokontroller. Azt szteretném ,hogy az RFM22B tranceiver modul következő regisztereit : 0x00 , 0x02 ,0x03 , 0x04 , kiolvasni SPI buszon.
A gondom az ,hogy mindegyik regiszter esetén a kiolvasott érték 0x00 , ami serintem biztosan nem jó. Az RFM22B transceiver modul rendelkezik egy SHDN porttal amely segítségevel bekapcsolható maga a modul ,ha ez a port alacsony szinten van.
------Ezzel kapcsolatosan szeretnék segítséget kérni ,hogy mi lehet a gond amiért nem lehet kiolvasni az említett regiszter cimekről az aktuális adatokat .-----
A fejlesztő rendszer amivel dolgozom MicroC for PIC .
Csatolom a forráskódot , Az RFM22B modul datasheet , a mikrokontroller pedig PIC18F67J50 (a datasheet meghaladja a feltöltésnek előírt fájl méretet) .
Maga a forráskód tartamlaz SPI bus rendszert kezelő függvényt amely bit billegtetés elvű (bit-banging) és a PCB kiaklakítása miatt csak ebben ,az ilyen jellegű bit billegtetés (bit-banging) SPI kezelés érdekes a feladat szempontjából.
Hardveresen :
-A modul megkapja a 3.3Volt tápfeszültséget , a SHDN port az RFM22B modulon alacsony szinten van , a GND rendben .
-A hardveres portkiosztast ellenőriztem a PIC mikrokontroller és az RFM modul között.
Mindenkinek előre is nagyon szépen köszönöm a segítséget !
Üdv : Lengyel Jozsef
Szia!
Ránézésre rendben van a kód. Egy dolgot találtam: olvasásnál az R/W bitnek 0-nak kell lenni, tehát a RFM22B_ReadReg függvényben a
helyett
SPI_Transfer(addr & 0x7F);
kell.
Próbáld ki így.
imrus101
1
Szia ,
Kiprobáltam az SPI_Transfer(addr & 0x7F) , maszkolással és így már működik .
Még egyszer mindent nagyon szépen köszönök !
Üdv: Lengyel Jozsef
0
Szia!
A programban a CS az a modul nSEL lábát akarja takarni?
KN
1
Szia Igen ,
Igen , a CS az az nSEL láb megfelelője.
Udv : Lengyel Jozsef
0