Hi,
D.h. also für Internetradio benötige ich einen PIC32 mit ENC, damit ich Musik hören kann.
nein, das nicht. Es gibt ein Demoboard, das arbeitet mit dem 18F67J60:
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en536047Mal die Assembler Routinen die ich benutzt habe (habe nur CS benutzt, ohne DCS):
;******************************************************************************
;******************************************************************************
; vs1011.init
;******************************************************************************
vs1011.init
bcf XCS
movlw 0x02 ; write
call vs1011.send
movlw 0x00
call vs1011.send ; register
movlw 0x0C ; E: LSB first, C:MSB first, bytes are send in default order
call vs1011.send
movlw 0x20
call vs1011.send ; New Mode + Shared Mode
bsf XCS
call vs1011.ready
bcf XCS
movlw 0x02 ; Clock PLL an
call vs1011.send
movlw 0x03
call vs1011.send
movlw 0x98 ;
call vs1011.send
movlw 0x00
call vs1011.send
bsf XCS
movlw D'1'
call wait
return
call vs1011.ready
bcf XCS
movlw 0x02 ; GPIO auf Ausgang
call vs1011.send
movlw 0x07 ; Base Address für RAM Read/write
call vs1011.send
movlw 0xC0 ;
call vs1011.send
movlw 0x17 ; Direction Reg
call vs1011.send
bsf XCS
call vs1011.ready
bcf XCS
movlw 0x02 ;
call vs1011.send
movlw 0x06 ; RAM RW
call vs1011.send
movlw 0xFF ;
call vs1011.send
movlw 0xFF ; Ausgang
call vs1011.send
bsf XCS
movlw D'1'
call wait
call vs1011.ready
bcf XCS
movlw 0x02 ; Hi Pegel
call vs1011.send
movlw 0x07 ; Base Address für RAM Read/write
call vs1011.send
movlw 0xC0 ;
call vs1011.send
movlw 0x19 ; OutData Reg
call vs1011.send
bsf XCS
call vs1011.ready
bcf XCS
movlw 0x02 ;
call vs1011.send
movlw 0x06 ; RAM RW
call vs1011.send
movlw 0xFF ;
call vs1011.send
movlw 0xFF ; Ausgang
call vs1011.send
bsf XCS
return
;******************************************************************************
;vs1011.send ;Daten senden
;******************************************************************************
;vs1011.send
; movwf mp3.out
; movlw D'8'
; movwf mp3.counter
; vs1011.send.loop0
; bcf SDO ; vorher setzen
; btfsc mp3.out, 7
; bsf SDO
; nop
; bsf SCLK
; rlcf mp3.out, f
; bcf SCLK
; decfsz mp3.counter, f
; goto vs1011.send.loop0
; return
vs1011.send
movwf mp3.out
bcf SCLK
vs1011.send.loop0
bcf SDO ; vorher setzen
btfsc mp3.out, 7
bsf SDO
btg SCLK
nop
btg SCLK
bcf SDO
btfsc mp3.out, 6
bsf SDO
btg SCLK
nop
btg SCLK
bcf SDO
btfsc mp3.out, 5
bsf SDO
btg SCLK
nop
btg SCLK
bcf SDO
btfsc mp3.out, 4
bsf SDO
btg SCLK
nop
btg SCLK
bcf SDO
btfsc mp3.out, 3
bsf SDO
btg SCLK
nop
btg SCLK
bcf SDO
btfsc mp3.out, 2
bsf SDO
btg SCLK
nop
btg SCLK
bcf SDO
btfsc mp3.out, 1
bsf SDO
btg SCLK
nop
btg SCLK
bcf SDO
btfsc mp3.out, 0
bsf SDO
btg SCLK
return
;******************************************************************************
;vs1011.reset
;******************************************************************************
vs1011.reset
bcf XCS
movlw 0x02 ; New Mode + Shared Mode
call vs1011.send
movlw 0x00
call vs1011.send
movlw 0x0C ; E: LSB first, C:MSB first, bytes are send in default order
call vs1011.send
movlw 0x24 ; reset!!
call vs1011.send
bsf XCS
call vs1011.ready
bcf XCS
return
;******************************************************************************
;vs1011.read ;
;Pegelwandler = > signal invertiert
;******************************************************************************
vs1011.read
bcf SCLK
movlw D'8'
movwf mp3.counter
nop
nop
vs1011.read.loop0
bsf SCLK
nop
nop
bsf mp3.in, 0 ;
btfsc PORTE, 3 ; einlesen
bcf mp3.in, 0 ;
rlncf mp3.in, f ; und nach links verschieben
bcf SCLK
nop
nop
decfsz mp3.counter, f
goto vs1011.read.loop0
rrncf mp3.in, f ; da beim lesen 1 zu weit geschoben wird
comf mp3.in, w
return
;******************************************************************************
; vs1011.ready
;******************************************************************************
vs1011.ready
btfss PORTB, 7
goto vs1011.ready
return
Habe mal den Code noch als Datei angehängt, zusätzlich das Plugin für den SpectrumAnalyser, falls du den nutzen möchtest. Dieser funktioniert nur mit dem VS1011E. Die Schnittstelle zum VS1011 lieft über Software SPI, ein Hardwaremodul wäre unter Umständen schneller (wenn du die Zeit während der Transfers sinnvoll nutzen kannst).
Mich wundert es, dass du auf Assemblerbasis nur 10k/s erreichst, ich hätte erwartet, dass es damit schneller geht als mit dem TCPIP Stack. Vielleicht solltest du den Empfangsbuffer im 97J60 für die TCPIP Packete vergrößern. Ausserdem würde ich davon ausgehen, dass du auf jeden Fall noch externes RAM für den Stream brauchst. Aber lies dir dazu am besten mal die AppNote von MC durch.
Gruß
Stefan