sonycman 0 28 декабря, 2011 Опубликовано 28 декабря, 2011 · Жалоба Ну, не такая уж большая разница (особенно если учесть, что контроллеру вообще затруднительно будет "перепахивать" такие потоки). Возможно, используют большие блоки. С PRE-ERASE в свое время экспериментировал, но сколько-нибудь значимого влияния на скорость записи никогда не наблюдал. Да перепахивать-то особо будет не нужно, просто "закидывать" на карточку с компа по USB MSC. Вернее всего рулят большие блоки по 128 секторов в ридере. Хотя при увеличении кол-ва секторов с 32 до 64 получил прирост на запись всего около одного мегабайта в секунду. А может быть "тормозит" мой драйвер или атмеловский контроллер MCI, а в ридере более оптимальная аппаратная реализация... ЗЫ: ах да, загрузка процессора при этом составила 4-5% под scmRTOS (96 МГц). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 68 28 декабря, 2011 Опубликовано 28 декабря, 2011 · Жалоба Да, USB - это, пожалуй, единственный сопоставимый по скорости интерфейс. При работе с картой силами самого процессора неизбежно вылезают потери на медленной внешней памяти (а внутренней ой как мало) и т.п. В общем, я бы не стал убиваться за пару мегабайт в секунду :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sonycman 0 28 декабря, 2011 Опубликовано 28 декабря, 2011 · Жалоба В общем, я бы не стал убиваться за пару мегабайт в секунду :) Согласен, тем более, пока не знаю, куда копать, вроде нигде нет лишних задержек... Кстати, всё вроде нормально работает с XFRDONE, единственное, чтобы сигнал не проскакивал раньше времени, пришлось разрешать его прерывание только непосредственно после выдачи команды STOP_TRANSMISSION(CMD12). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 68 28 декабря, 2011 Опубликовано 28 декабря, 2011 · Жалоба Кстати, всё вроде нормально работает с XFRDONE, единственное, чтобы сигнал не проскакивал раньше времени, пришлось разрешать его прерывание только непосредственно после выдачи команды STOP_TRANSMISSION(CMD12). Да, это знакомо - прерывания лучше разрешать непосредственно перед тем, как они должны возникнуть. Удобством работы на прерываниях контроллер явно не отличается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sonycman 0 1 января, 2012 Опубликовано 1 января, 2012 · Жалоба С наступившим Новым годом всех! :santa2: Но работа продолжается. Да, I2C у этого сэма привередливый, шумы ловит только так :( Повесил на пины ёмкости по 150пф, вроде стабильно стало. И вопрос - можно ли SSC сконфигурировать в режиме I2S мастера так, чтобы контроллер сам формировал все три сигнала - BCLK, WS и DATA? Что-то не получается пока :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 68 1 января, 2012 Опубликовано 1 января, 2012 · Жалоба Да, SSC можно заставить быть I2S-мастером. Вот пример (он, правда, от SAM7, да неважно): void ssc_start_i2s(void) { AT91C_BASE_SSC->SSC_CR = AT91C_SSC_SWRST; AT91C_BASE_SSC->SSC_CMR = 16; // MCK / 32 // PERIOD: 32, STTDLY: 1, START: falling edge on TF, CKO: continuous, CKS: TK AT91C_BASE_SSC->SSC_TCMR = (15 << 24) | (1 << 16) | AT91C_SSC_START_FALL_RF | AT91C_SSC_CKO_CONTINOUS | AT91C_SSC_CKS_DIV; // FSOS: negative pulse on TF, DATNB: 1, MSB first, 16 bits AT91C_BASE_SSC->SSC_TFMR = AT91C_SSC_FSOS_NEGATIVE | (15 << 16) | (1 << 8) | AT91C_SSC_MSBF | 15; ... AT91C_BASE_SSC->SSC_CR = AT91C_SSC_TXEN; } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sonycman 0 1 января, 2012 Опубликовано 1 января, 2012 · Жалоба Спасибо, вроде поехало! Единственное, не понятно, что творится с пином TD, когда на нём нет данных. Согласно полю DATDEF в TFMR, на пине должен быть 0. Но его уровень плавно растёт до примерно половины напряжения питания. Явно работает пуллап. Но почему, разве пин самопроизвольно переключается на вход? Попробовал сконфигурировать пины TK, TF, TD как выходы - на TF сигнал вообще пропал... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sonycman 0 1 января, 2012 Опубликовано 1 января, 2012 · Жалоба Думается мне, что фича DATDEF в SAM3U не работает. DATDEF в регистре SSC_TFMR равно нулю (если записать единичку - ничего не поменяется): Жёлтым - пин TF (WS с частотой 44.1 кГц), а зелёным - TD (данные). Видно, что TD управляется, только когда на него непосредственно выставляются данные, в остальное время он "плавает" как вход, уровень подтягивается пуллапом... :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 68 1 января, 2012 Опубликовано 1 января, 2012 · Жалоба Насколько я помню, на SAM7 в режиме I2S такая же картина. Но в каких-то других режимах DATDEF все-таки точно работает. Мутна вода, как водится. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sonycman 0 2 января, 2012 Опубликовано 2 января, 2012 · Жалоба Мутна вода, как водится. Это точно :) Всё, достал меня I2C :krapula: Я, конечно, понимаю - длинные провода и всё такое - но когда мастер в виде SAM3U4 при малейшем шорохе на стороне сыпет NACKами и ARBLOSTами... Навешал на шину ёмкостей под 300пф, вроде заработало стабильно, но стоило одновременно с передачей по I2C поработать с картой памяти на 24 мегабита/сек - снова ошибки, причём именно со стороны мастера - NACK, ARBLOST (какой арбитрейшн лост, ты же единственный мастер на шине!) или просто тупой зависон всего модуля с подтянутыми к земле данными и/или клоком, из которого можно выйти только сняв с контроллера питание... :( При этом если воткнуть другую карточку, более скоростную - на 48 мегабит/сек - всё снова стабильно. Снижение скорости до черепашьего уровня никак не влияет на ситуацию. На осциллограммах хорошо видно, как мастер перед ошибкой "режет" клок - ширина импульса высокого уровня становится во много раз меньше необходимой. Что он там "ловит" не знаю, но такому неустойчивому дерьму просто необходимо было повесить на входа фильтр, а не гордо писать в мануале: Slope control and input filtering (Fast mode) Not Supported Помнится, с LPC17xx тоже пришлось немного повозиться, но там были NACKи только от привередливого кодека (у которого, видимо, тоже по аналогии с сэмом отсутствовали фильтры на входе), но проблема быстро решилась а мастер работал безо всяких проблем. Попробую тоже написать работу с I2C девайсами врукопашную, может, будет получше... ЗЫ: так и хочется уже отказаться от неустойчивого I2C в пользу SPI, но подкупает малое кол-во проводников... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 68 2 января, 2012 Опубликовано 2 января, 2012 · Жалоба Забейте, батюшка, на I2C - заборете сейчас, так непременно сломается в будущем. Нервы дороже. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sonycman 0 2 января, 2012 Опубликовано 2 января, 2012 · Жалоба Забейте, батюшка, на I2C - заборете сейчас, так непременно сломается в будущем. Нервы дороже. Это применительно к I2C вообще, или только к сэму? Последнее время у меня с I2C частенько выскакивают проблемы, может быть, из-за наличия рядом с проводниками других цепей с частотами в десятки МГц? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 68 2 января, 2012 Опубликовано 2 января, 2012 · Жалоба Только к сэмам. Скажем, на AVR совершенно замечательный TWI, хотя и называется так же. А что касается влияния высокочастотных цепей, то это вопрос к трассировке. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sonycman 0 2 января, 2012 Опубликовано 2 января, 2012 · Жалоба Только к сэмам. Скажем, на AVR совершенно замечательный TWI, хотя и называется так же. А что касается влияния высокочастотных цепей, то это вопрос к трассировке. Вот ведь позор то какой, на крошке AVR хороший TWI, а на крупных камнях - совсем никакой :( На девятых армах, интересно, как с этим дела? Написал софтовый TWI, правда, пока без поддержки Clock Stretching и без фильтрации, и только в режиме мастера. Но результат налицо - пока что ни одного глюка, убрал все кондёры с шины, и даже щупы осциллографа не мешают - ни одного чиха! :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 68 2 января, 2012 Опубликовано 2 января, 2012 · Жалоба На девятых такая же порнография. В последних железках не стал даже задействовать, так как результат немного предсказуем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться