rezident (14.11.2011 08:46 - 09:07, просмотров: 283) ответил Bloom на поимел геморрой с 3 проводным SPI USART слейвом на MSPAFE235. Связываюсь с MSP430F2481, он мастер.
Поясняю. SPI это синхронный интерфейс. Побитовая синхронизация осуществляется тактовым сигналом CLK, но при этом побайтовая или фреймовая (покадровая) синхронизация в 3-х проводном SPI отсутствует. Если по какой-либо причине нарушилась побитовая синхронизация, то существующими сигналами вы ее уже никак не восстановите. Поэтому в интерфейс обычно добавляют четвертый сигнал фреймовой синхронизации, который в MSP430 должен обрабатываться программно. Потому, что SPI в MSP430 даже в 4-х проводном режиме не сбрасывает аппаратно модуль SPI по сигналу STE. STE лишь служит для предотвращения конфликтов на шине. Альтернативой 4-х проводному режиму является временнАя (с помощью пауз тишины) фреймовая синхронизация, которая на мой взгляд нисколько не лучше/не проще/не надежнее, чем четвертый провод.
Получив активный уровень сигнала фреймовой синхронизации (или детектировав паузу тишины в активности тактового сигнала - временнАя синхронизация) slave должен реинициализировать SPI путем установки/сброса бита UCSWRST или SWRST. Учитывая латентность в обработке этого сигнала master должен делать некоторую паузу после активирования его перед тем, как начнет транзакцию.
Кстати, не следует увлекаться битовыми масками. При инициализации следует задавать явные значения для всех битов регистров периферийного модуля.