Ксения (29.08.2019 04:06 - 04:29, просмотров: 296) ответил Ксения на Да, именно так. Однако остается нерешенным вопрос, что делать мастеру со своим MOSI при приеме.
Кажется разобралась - поняла, что режим "master half duplex" мне не нужен :), т.к. не является аналогом нужного мне SSC, хотя оба они однопроводные. В режиме "master half duplex" линия данных одна (обшая) и торчит у мастера из MOSI (а у слейва из MISO). При этом наружный пин MISO у мастера не используется (его можно под другие дела пустить), тогда как его внутренние MISO и MOSI подключаются к общей линии данных поочередно в зависимости от того, пишет МК в свой SPI-регистр или читает оттуда. Именно поэтому MOSI не страдает, когда слейв передает нули. А как МК решает читать ему или писать, вроде бы нигде строго не регламентируется - целиком зависит от программиста. При этом прием и передача вызывают отдельные транзакции в ходе которых дёргается клок. Тогда как в обычном режиме "master full duplex" прием и передача осуществляются симметрично за одну транзакцию.
Тогда как в случае SSC передача идет в обычном режиме (master full duplex), потому в отдельный режим его не выделяют. А на общую линию данных выводят пины MISO и MOSI, соединенные вместе. При этом во время передачи MISO вынужден читать всё то, что передает MOSI. Однако во время приема MOSI выдает код 0xFF (высокий уровень на все биты), тогда как слейв некоторые из них коротит на землю. В результае чего MISO принимает код = 0xFF & SlaveByte, что во всех случаях тожественно равно тому байту, который передает слейв. MISO в этом режиме и в самом деле может пострадать от закорачивания на землю выдаваемого им напряжения высокого уровня, а потому какие-то ограничивающие ток резисторы там ставят. Но с этим я еще не разобралась.