Estou projetando um alarme para me acordar de manhã. O sistema é composto por 3 subsistemas:
- (S1) Gerenciamento de sete segmentos RGB. Composto por 5µCs, um para cada dígito e outro para ":". O alto número de µC se deve ao fato de eu não usar o IC para led RGB, apenas transistores.
- (S2) Gerenciamento de sensor e entrada. Um µC que gerencia o sensor de distância para definir alarme e hora atual; e comutadores para configuração.
- (S3) Comunicação e arquivo de áudio. Um µC que se comunica com um módulo bluetooth no UART para mais projetos, conseguiu que um cristal RTC tivesse um relógio preciso e gerenciasse a reprodução de áudio. (Ainda não trabalhei no áudio)
Durante a execução normal, o S2 lê a entrada e a envia para o S3 para processamento. então S3 envia para S1 o que deve ser exibido.
Quero fazer com que todos esses subsistemas se comuniquem juntos e, em seguida, escolho usar o barramento I2C. Mas aqui vem minha pergunta:
- Qual µC deve ser o mestre?
Na primeira mão, S3 é o centro do sistema, mas na outra mão, S2 pode enviar mais mensagens que S3. É por isso que estou indeciso sobre quem será o mestre / escravo.
- Existe uma regra para determinar quem será escravo / mestre? Que pergunta devo me fazer para fazer a boa escolha? (em geral, não para este sistema específico)
Respostas:
Sim. Somente um mestre I 2 C pode iniciar uma transmissão. Um escravo I 2 C não pode falar sobre algo até que ele seja pesquisado em seguida pelo mestre (a menos que você adicione sinais de interrupção extras, o que aumenta a complexidade geral do sistema).
Ignorando o recurso (raramente usado) para um dispositivo alternar entre ser mestre e escravo, isso significa que o mestre I 2 C deve ter conhecimento suficiente do sistema geral para saber como se comunicar com todos os I 2 C escravos naquele ônibus.
Pense em qual MCU do seu sistema sabe:
Independentemente de qual MCU será o mestre I 2 C, é necessário projetar a arquitetura geral do sistema e considerar quais comandos precisam ser enviados para cada dispositivo e com que rapidez todas as respostas precisam ser recebidas. Tente projetar um sistema que possua um "mestre" óbvio e conheça todo o estado do sistema e, provavelmente, também poderá ser o dispositivo mestre I 2 C.
Você disse:
Não está claro que "S2" é o envio de mensagens para . Precisa enviar mensagens ativamente para alguém ? Ou "S2" pode ser pesquisado por "S3" como mestre I 2 C, para receber qualquer informação de sensor e chave que "S2" coletar? Se "S2" puder ser pesquisado por "S3", então, com base na descrição, parece claro que "S3" MCU poderia ser o mestre I 2 C.
Sou cauteloso ao adicionar mais um MCU (vamos chamá-lo de "S10") para ser o mestre I 2 C. Isso ocorre porque parece que um MCU "S10" precisaria realizar muitas pesquisas, apenas para reunir o conhecimento geral do estado do sistema, que é tudo (?) Já conhecido por "S3". Isso parece duplicação desnecessária.
Portanto, a menos que "S3" não pode fazer o trabalho devido a atingir os seus limites de espaço RAM, espaço Flash, ou ciclos de CPU etc. pode ser menos complicado ter "S3" controlar o sistema, tornando-I 2 mestre C, em vez de adicionar um controlador "S10" adicional.
Por outro lado, se você não se importa com a complexidade adicional, adicionar um controlador "S10" geral aumenta a modularidade (segmentação) do sistema, uma vez que o "S3" só faz Bluetooth e áudio - nada mais. Isso pode permitir flexibilidade extra para adicionar novos recursos (imprevistos) / MCUs adicionais no futuro, sem a necessidade de alterar o código em "S3".
fonte
S1 deve ser um escravo I 2 C. S2 ou S3 seria uma escolha sensata para um mestre. Mas isso apenas reafirma o que foi mencionado na pergunta original.
Freqüentemente, o MCU que lida com a maior variedade de insumos é um bom candidato a um mestre. No seu caso, é o S2 (uma variedade de botões de usuário, RTC) ou o S3 (uma variedade de comandos do Bluetooth). Se você não conseguir decidir qual, poderá obter um controlador maior e colocar as duas funcionalidades S2 e S3 em um MCU. Essa abordagem pode oferecer mais flexibilidade.
fonte
Todo microcontrolador em seu sistema pode ser o mestre. No entanto, alguns deles são mais adequados para esta função. Como dito por outras pessoas, o microcontrolador com mais informações deve ser o Mestre.
fonte