Tanto quanto eu sei, a transmissão SPI para um escravo SPI funciona como abaixo:
- Mestre seleciona um escravo usando o pino SS
- Mestre e escravo enviam dados um ao outro simultaneamente
- O mestre inicia o relógio e a transmissão de dados ao mesmo tempo (não há relógio antes da operação de gravação)
- O mestre interrompe a transmissão a qualquer momento (interrompendo a operação de gravação e a geração do relógio), mesmo se o escravo tiver mais dados para enviar.
Existe alguma configuração de escravo SPI que permita ao escravo transmitir dados sem a permissão do mestre?
Eu só estou pensando em voz alta. Suponha que haja apenas um escravo e um relógio contínuo seja fornecido pelo mestre etc.
Mesmo se a afirmação assumida for verdadeira, o mestre e o escravo não perdem a sincronização de bytes (isto é, recebe o fluxo de bits), pois não há bits de start-stop para o SPI?
Estou fazendo essa pergunta porque li a seção a seguir deste documento .
2.2 Exemplo de SPI
O exemplo SPI anexado ilustra o uso do USART no modo síncrono. USART1 está configurado como escravo, enquanto USART2 é mestre. As seguintes transações ocorrem:
- Transmissão de dados do mestre para o escravo.
- Transmissão de dados do escravo para o mestre.
- Transmissão de dados de mestre para escravo e de escravo para mestre simultaneamente.
O documento fornece um exemplo de SPI, mas o realiza usando dispositivos USART. E entendo que um escravo do USART pode iniciar uma transmissão sem a permissão do mestre.
Não consegui encontrar o código-fonte referenciado pelo documento.