Разобрался. Проблема была в мастере. Я щелкал SlaveSelect после каждого байта, а когда стоит флаг SPI_CONTINUOUS_TX, этого делать не надо. Кроме того, не было предусмотрено механизма синхронизации между мастером и слейвом, и если терялся хоть один байт, то вся посылка сдвигалась. А терялись они именно в режиме отладки, когда я JTAG-ом просматривал регистры после приема каждого байта. При непрерывной работе таких потерь небыло, но я все-же ввел синхронизацию - если слейв не передал еще все данные, но видит что мастер убрал чипселект, то он сбрасывает свой буфер и готовится к новой передаче. И еще были проблемы в основной программе (в рассчетах), из-за которых также проскакивали левые числа.
Вот так вот. Бьешься неделю головой о стену, а потом напишешь на форум и тут-же тебе самому решение в голову придет. =) Так и телепатом стать не долго.
|