По spi обслуживаю мост usb max3420e.
Передавать надо по-разному: один байт и несколько байт подряд.
Проблема при передачи 1 байта (нескольких байт) следующая:перевожу линию SS в ноль я передаю байт SS делаю =1. Вот так:
Код
[/code]
ss_lo; // Set SS# low
temp = SPI1BUF; // dummy read of the SPI1BUF register to clear the SPIRBF flag
SPI1BUF = reg+2; // write the data out to the SPI peripheral
while (!SPI1STATbits.SPIRBF); // wait for the data to be sent out
temp = SPI1BUF; // dummy read of the SPI1BUF register to clear the SPIRBF flag
SPI1BUF = dat; // write the data out to the SPI peripheral
while (!SPI1STATbits.SPIRBF); // wait for the data to be sent out
temp = SPI1BUF;
//for(j=0;j<7;j++) Nop();
_LATB13=1;
ss_hi; // set SS# high
[code]
Так вот, когда я отпускаю ss_hi последний такт у меня еще идет и данные стоят, а ss уже равен 1. Пробовала вставить цикл ожидания for(j=0;j<7;j++) Nop();. Диаграммы выставляются как в документации, но прии стыковке с max3420 (usb мост) его не обнаруживается windows, а без for(j=0;j<7;j++) Nop() обнаруживается, но windows пишет, что устройство работает с ошибкой код 10 .