alen_kray писал(а): ↑07 окт 2021, 15:19
Интересует именно spi к1921. Какую максимальную скорость удалось получить на практике.
Максимальная скорость обмена по SPI при системной частоте 100 МГц:
- в режиме мастера: 100МГц / 2 = 50 Мбит/сек
- в режиме ведомого: 100МГц / 12 = 8,333 Мбит/сек
На ВК028, ВК035 Реальная скорость получалась на мастере 25 МГц. Выше - выводы не успевали отрабатывать (как будто переключение за 2 такта совершается). Результат был получен на опытных образцах. На серийных возможно исправили.
Доброго времени суток, товарищи!
А есть какая-то возможность заставить SPI выдавать прерывания при приеме/передаче каждого 16-битного слова?
Заполнять буфер четырьмя словами по 4 бита не предлагать ))
blessedt писал(а): ↑19 окт 2021, 23:44
А есть какая-то возможность заставить SPI выдавать прерывания при приеме/передаче каждого 16-битного слова?
Заполнять буфер четырьмя словами по 4 бита не предлагать ))
Доброго времени суток!
Для микроконтроллеров 1921ВК035 и 1921ВК028 достаточно записать в битовое поле RXIFLSEL (для приема) или TXIFLSEL (для передачи) регистра CR1 значения порога наполнения буфера FIFO.
blessedt писал(а): ↑19 окт 2021, 23:44
А есть какая-то возможность заставить SPI выдавать прерывания при приеме/передаче каждого 16-битного слова?
Заполнять буфер четырьмя словами по 4 бита не предлагать ))
Доброго времени суток!
Для микроконтроллеров 1921ВК035 и 1921ВК028 достаточно записать в битовое поле RXIFLSEL (для приема) или TXIFLSEL (для передачи) регистра CR1 значения порога наполнения буфера FIFO.
То есть спустя всего ПЯТЬ месяцев с момента моего вопроса forum.niiet.ru/viewtopic.php?f=37&t=158&start=470 поддержка НИИЭТ признала тот факт, что 1921ВК01Т не имеет прерываний в режиме SPI
По мне заморачиваться с DMA, чтобы принять пару/четыре слова - это так себе решение. Все что меньше длины буфера FIFO должно приниматься просто по прерыванию ну или уж на худой конец, опросом. Можно еще посчитать требуемое время передачи и зарядить таймер с прерыванием. Сработал таймер, забрали данные из буфера. Но это все костыли.
Это да, речь о длинных передачах, иначе какой смысл использовать дма, если всё прекрасно располагается в фифо. В длинных ПДП самое то, смысл нагружать программу периодическими прерываниями по таймеру, если один раз зарядил автомат и ждёшь, не прерываясь, пока закончит передачу.