toweroff
May 7 2013, 14:10
Добрый день!
Что-то у меня не получается принять нормально байты, уже совсем крыша едет. Сейчас начал все перепроверять и впал в какой-то ступор

Есть пин P0.18 (для LQFP208 - пин 124) - MOSI
То есть, если я перевожу SPI в Master mode, это - выход. Если в Slave mode - это вход?
Или для Slave device нужно все равно вход заводить на пин MISO (P0.17, пин 126) ?
toweroff
May 12 2013, 14:05
Дабы не плодить лишние темы, напишу тут
Как программно перевести SPI модуль в исходное состояние в Slave режиме?
Мой мастер не использует SSEL, поэтому она у меня всегда в нуле, т.е. в активном стстоянии
Можно, конечно, аппаратно дергать ногу SSEL
Но, по ряду причин, это долго и лениво, честно говоря. Хотя, если нет других вариантов, придется так.
Фактически, нужно сбросить счетчик фрейма в ноль и ждать первого бита. У SSP есть бит, отвечающий за вкл/выкл, но SSP мне не подходит
Дергать PCONP, я так понимаю, бессмысленно - это просто уберет тактирование модуля SPI
Попробуйте переключить slave->master->slave или поменять другие режимы в регистрах управления - возможно поможет.
А почему не подходит SSP? Он вроде даж на тех же пинах сидит...
toweroff
May 19 2013, 18:03
Цитата(jcxz @ May 19 2013, 21:43)

Попробуйте переключить slave->master->slave или поменять другие режимы в регистрах управления - возможно поможет.
А почему не подходит SSP? Он вроде даж на тех же пинах сидит...
В SPI флаг SPIF поднимается, как только закончен фрейм. Насколько я помню, когда занимался с SSP, там на 9-м клоке возникает ошибка фрейма. Можно прочитать то, что влетело в регистр данных, но следующий фрейм-то уже начался. И не обойти это, т.к. SSEL нет у мастера
Но проблема уже решена, все работает в SPI и без сброса