C'est la première fois que je tente de programmer une liaison SPI.
Le maître est un PIC16F1779 et les esclaves 3 CIs dont un BU97550KV avec lequel je suis en train de faire des tests.
J'ai écris un premier programme que je n'ai pas encore testé et qui envoie 1 octet :
Code : Tout sélectionner
SSPDATPPS = 0b00001001 ; // RB1
SSPCLKPPS = 0b00011010 ; // RD2
SSPSSPPS = 0b00011111 ; // RD7 (LCD)
SSP1STATbits.SMP = 0 ;
SSP1STATbits.CKE = 1 ;
SSP1CON1bits.CKP = 0 ;
SSP1CON1bits.SSPM = 0b0010 ; // 62500Hz // 0010 = SPI Master mode, clock = FOSC/64 ; 0001 = SPI Master mode, clock = FOSC/16
SSP1CON1bits.SSPEN = 1 ; // SPI ON
SSPBUF = data ; // data=char
while(!SSP1STATbits.BF) ; // Wait for Data Transmit/Receipt complete
SSP1CON1bits.SSPEN = 0 ; // SPI OFF
Ma question est, comment faire pour envoyer plusieurs octets de sorte à ce que le BU97550KV les reçois dans le bon ordre ?
Suffit t'il de faire :
Code : Tout sélectionner
SSPBUF = data1 ;
while(!SSP1STATbits.BF) ;
SSPBUF = data2 ;
while(!SSP1STATbits.BF) ;
SSPBUF = data3 ;
while(!SSP1STATbits.BF) ;
… ??
Et comment le BU97550KV sait quel octet reçu correspond à quoi ?
Autre question: Y a t'il des avantages de choisir un mode d'horloge plutôt qu'un autre avec SMP, CKE, CKP ? Là j'en ai choisis un qui me semblait le plus normale sans savoir si c'est mieux ou pas.
Merci