SPI между ведущим arduino и ведомым arduino
Как я могу отправить строку из Slave SPI в Master SPI?
Я хочу написать код на Голом металле.
Проблема, с которой я сталкиваюсь, заключается в том, что я не могу понять, какова будет моя функция блокировки в коде Master SPI при получении данных от slave SPI.
Поскольку мой бит SPIF очищается в мастер-коде, как только я переключаю регистр SPDR с ведущего на приемный байт, который поступает от ведомого.
#define spi_data_reg SPDR
//Функция чтения байтов Naster
uint8_t MA_SPI0_read_byte()
{
spi_port &= ~(1<<SS);
spi_data_reg = 0;
while(!(SPSR & (1<<SPIF))); //Дождитесь завершения передачи
return(spi_data_reg); //Возврат полученных данных
spi_port |= (1<<SS);
}
//Slave send byte function
void SL_SPI0_send_byte(uint8_t data)
{
spi_data_direc=(1<<MISO); //MISO в КАЧЕСТВЕ ВЫВОДА
spi_data_reg = data;
while(!(SPSR &(1<<SPIF)));
}
@Kunal, 👍5
Обсуждение1 ответ
Не стесняйтесь взглянуть на мои видео на YouTube. Они не монетизируются, поэтому я не занимаюсь саморекламой. Вы даже можете пропустить видео и проверить мое репо GitHub с скетчами Master и Slave. https://youtu.be/A9oSX_dwJKQ https://youtu.be/PSUzhCtNRRQ https://github.com/linhartr22/Arduino_SPI_Master_Slave_Demo
Хотя теоретически это может ответить на вопрос, [было бы предпочтительно](//meta.stackexchange.com/q/8259) включить сюда основные части ответа и предоставить ссылку для справки., @Juraj
- Проблема совместного использования MISO с несколькими RFID-считывателями RC522
- Arduino UNO + Ethernet Shield + ЖК-дисплей + RFID, но RFID не работает
- Отобразить изображение с SD-карты на ЖК-дисплей ILI9486
- Как подключить устройство SPI к плате Etherntet на Arduino Uno
- Можно ли использовать Arduino для чтения и записи данных с помощью SD-карты?
- Как использовать SPI на Arduino?
- Как увеличить скорость записи на SD-карту в Ардуино
- SD-карта не инициализируется
Сначала: `spi_port |= (1<, @Peter Paul Kiefer
Насколько я понимаю SPI-связь, Slave не может отправлять данные Мастеру без того, чтобы Мастер не инициировал связь. Как правило, Ведущий отправляет фиктивные данные, чтобы он мог получить ответ от ведомого устройства. Таким образом, Ведущий должен знать, сколько байтов нужно получить и сколько раз отправить фиктивные данные Подчиненному, чтобы получить ответ., @Kavka