Цитата(alexei_u @ Dec 6 2013, 03:48)

То есть в анализаторе видно,что флешка твечает и возвращает нужный байт,как и предплагается,тлько я его не обнаруживаю в буфере SPI. Сейчас посижу,посмтрю,может,где-то не то время жду.
Еще раз предлагаю
на время отладки уменьшить частоту тактирования SPI. Также вызывает сомнение, что вы выдерживаете необходимые паузы CS Setup Time, CS Hold Time, CS High Time.
Второй момент. Похоже вы просто пропускаете при чтении требуемые байты. Поскольку передача и прием в SPI идет одновременно, то разумнее было бы читать буфер приемника после передачи
каждого байта и складывать эти байты в буфер. Ненужные байты можно игнорировать уже потом, при разборе содержимого буфера. А так, как реализовано сейчас ваша функция чтения f_buf_read не является универсальной. Например, при чтении статуса (opcode=D7h) вслед за opcode вовсе не нужно передавать целых четыре dummy байта. Статус будет прочитан при передаче первого же dummy. Аналогично для команд чтения Manufacturer and Device ID и управления энергосбережением Deep Power-down. См. табличку в datasheet.
Цитата(alexei_u @ Dec 6 2013, 03:48)

В регистр контроля SPI записываю:
UCB0CTL0 = UCMST+UCMSB+UCSYNC+UCCKPL+UCCKPH; то есть,мод3,если правильно понимаю. OP-коды,по крайней мере,шлю для установки SPI в мод3.
UPD: Всё стало ок-убрал из строчки UCCKPH.
Да, так стало правильно - SPI MODE 3.
Цитата(alexei_u @ Dec 6 2013, 03:48)

надо ещё раз разобраться с различными режимами работы SPI. У TI фаза пртивоположна общепринятой?!
Стандарта для SPI как такового нет. Поэтому и названия управляющих битов у разных производителей отличаются. SPI это синхронный последовательный интерфейс впервые введенный фирмой Motorola. Однако есть и другие последовательные синхронные интерфейсы. Например, Microwire был разработан National Semiconductor.
Если вы не читали по ссылкам, приведенным мной ранее, то поясняю еще раз, что режимы SPI определяются двум параметрами именуемыми - CPOL(arity) и CPHA(se).
CPOL определяет состояние сигнала CLK в неактивном режиме (до и после передачи). При CPOL=0 до и после передачи (при неактивном уровне) CLK находится в состоянии лог.0 . Соответственно при CPOL=1 CLK имеет лог.1. как неактивный уровень. В модуле USCI логика управляющего бита UCCKPL совпадает с этим определением.
CPHA определяет по какому фронту сигнала CLK биты данных будут выдвигаться (устанавливаться) и защелкиваться (считываться). В зависимости от CPOL это может быть нарастающий или спадающий фронт. При CPHA=0 данные защелкиваются по первому фронту и выдвигаются по следующему фронту. При CPHA=1 данные выдвигаются по первому фронту и защелкиваются по следующему фронту. В модуле USCI логика управляющего бита UCCKPH
инверсная по отношению к этому описанию CPHA.
В обоих режимах SPI MODE 0 и SPI MODE 3 данные защелкиваются по
нарастающему фронту и устанавливаются синхронно со
спадающим фронтом сигнала CLK. Отличаются эти режимы последовательностью выборки-установки и соответственно уровнем CLK в неактивном режиме.