ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
13 февраля
1570408 Топик полностью
Eddy_Em (Вчера, 23:26, просмотров: 34)
Плак-плак… Чего ж так мало памяти под USB btable в "младших" STM32F303? 

Сижу, пишу код для "мультиинтерфейсной платы". В качестве МК сдуру взял STM32F303RBT6, а не какой-нибудь RET6. И поплатился: ведь в "младшеньких" F303 дебильная организация доступа к USB btable: 32-битное слово — как одно 16-битное! Т.е. половина памяти впустую.

В даташитах рисуют, что интересно: 512Б (реальных) на буферы в "младших" и 1024 в "старших". При этом есть пометка только к старшим, что верхние 256 байт под CAN уходят.

И таки что бы вы думали? В "младших" тоже под CAN идет 256 байт (ну, хоть не удвоенных)! И остается всего-то 768Б. Делим пополам — 384 реальных байта. Из них вынь, да положь 64 байта на регистры. И сколько-то на EP0.

Ну, отдаем 32Б на EP0 и радостно смотрим: по 40Б на каждую из оставшихся семи точек (по 20 на Rx/Tx). А хренушки! В USB нельзя буферы делать не кратными 8 байтам!

Вот и получается, что и так ОЗУ кот накакал, а еще и округляем. Итого — по несчастных 16Б на конечную точку. Тут особо не разгонишься. Авось, хотя бы по 115200 бод будет при одновременной работе всех семи интерфейсов, а то и того медленней!

eddy-em.livejournal.com github.com/eddyem