реклама на сайте
подробности

 
 
11 страниц V  « < 6 7 8 9 10 > »   
Reply to this topicStart new topic
> Atmel SAM3U4, Различные вопросы
sonycman
сообщение Dec 28 2011, 16:47
Сообщение #106


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(aaarrr @ Dec 28 2011, 20:38) *
Ну, не такая уж большая разница (особенно если учесть, что контроллеру вообще затруднительно будет "перепахивать" такие потоки). Возможно, используют большие блоки. С PRE-ERASE в свое время экспериментировал, но сколько-нибудь значимого влияния на скорость записи никогда не наблюдал.

Да перепахивать-то особо будет не нужно, просто "закидывать" на карточку с компа по USB MSC.

Вернее всего рулят большие блоки по 128 секторов в ридере. Хотя при увеличении кол-ва секторов с 32 до 64 получил прирост на запись всего около одного мегабайта в секунду.

А может быть "тормозит" мой драйвер или атмеловский контроллер MCI, а в ридере более оптимальная аппаратная реализация...

ЗЫ: ах да, загрузка процессора при этом составила 4-5% под scmRTOS (96 МГц).
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 28 2011, 16:52
Сообщение #107


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Да, USB - это, пожалуй, единственный сопоставимый по скорости интерфейс. При работе с картой силами самого процессора неизбежно вылезают потери на медленной внешней памяти (а внутренней ой как мало) и т.п.

В общем, я бы не стал убиваться за пару мегабайт в секунду sm.gif
Go to the top of the page
 
+Quote Post
sonycman
сообщение Dec 28 2011, 16:59
Сообщение #108


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(aaarrr @ Dec 28 2011, 20:52) *
В общем, я бы не стал убиваться за пару мегабайт в секунду sm.gif

Согласен, тем более, пока не знаю, куда копать, вроде нигде нет лишних задержек...

Кстати, всё вроде нормально работает с XFRDONE, единственное, чтобы сигнал не проскакивал раньше времени, пришлось разрешать его прерывание только непосредственно после выдачи команды STOP_TRANSMISSION(CMD12).
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 28 2011, 17:18
Сообщение #109


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(sonycman @ Dec 28 2011, 20:59) *
Кстати, всё вроде нормально работает с XFRDONE, единственное, чтобы сигнал не проскакивал раньше времени, пришлось разрешать его прерывание только непосредственно после выдачи команды STOP_TRANSMISSION(CMD12).

Да, это знакомо - прерывания лучше разрешать непосредственно перед тем, как они должны возникнуть. Удобством работы на прерываниях контроллер явно не отличается.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jan 1 2012, 17:15
Сообщение #110


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



С наступившим Новым годом всех! santa2.gif
Но работа продолжается.

Да, I2C у этого сэма привередливый, шумы ловит только так sad.gif
Повесил на пины ёмкости по 150пф, вроде стабильно стало.

И вопрос - можно ли SSC сконфигурировать в режиме I2S мастера так, чтобы контроллер сам формировал все три сигнала - BCLK, WS и DATA?
Что-то не получается пока sad.gif
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 1 2012, 17:25
Сообщение #111


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Да, 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;
}
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jan 1 2012, 18:24
Сообщение #112


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Спасибо, вроде поехало!

Единственное, не понятно, что творится с пином TD, когда на нём нет данных.
Согласно полю DATDEF в TFMR, на пине должен быть 0.
Но его уровень плавно растёт до примерно половины напряжения питания. Явно работает пуллап.

Но почему, разве пин самопроизвольно переключается на вход? Попробовал сконфигурировать пины TK, TF, TD как выходы - на TF сигнал вообще пропал...
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jan 1 2012, 19:24
Сообщение #113


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Думается мне, что фича DATDEF в SAM3U не работает.
DATDEF в регистре SSC_TFMR равно нулю (если записать единичку - ничего не поменяется):
Прикрепленное изображение

Жёлтым - пин TF (WS с частотой 44.1 кГц), а зелёным - TD (данные).
Видно, что TD управляется, только когда на него непосредственно выставляются данные, в остальное время он "плавает" как вход, уровень подтягивается пуллапом... sad.gif
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 1 2012, 20:00
Сообщение #114


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Насколько я помню, на SAM7 в режиме I2S такая же картина. Но в каких-то других режимах DATDEF все-таки точно работает. Мутна вода, как водится.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jan 2 2012, 09:09
Сообщение #115


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(aaarrr @ Jan 2 2012, 00:00) *
Мутна вода, как водится.

Это точно sm.gif

Всё, достал меня I2C krapula.gif
Я, конечно, понимаю - длинные провода и всё такое - но когда мастер в виде SAM3U4 при малейшем шорохе на стороне сыпет NACKами и ARBLOSTами...
Навешал на шину ёмкостей под 300пф, вроде заработало стабильно, но стоило одновременно с передачей по I2C поработать с картой памяти на 24 мегабита/сек - снова ошибки, причём именно со стороны мастера - NACK, ARBLOST (какой арбитрейшн лост, ты же единственный мастер на шине!) или просто тупой зависон всего модуля с подтянутыми к земле данными и/или клоком, из которого можно выйти только сняв с контроллера питание... sad.gif

При этом если воткнуть другую карточку, более скоростную - на 48 мегабит/сек - всё снова стабильно.

Снижение скорости до черепашьего уровня никак не влияет на ситуацию.

На осциллограммах хорошо видно, как мастер перед ошибкой "режет" клок - ширина импульса высокого уровня становится во много раз меньше необходимой.
Что он там "ловит" не знаю, но такому неустойчивому дерьму просто необходимо было повесить на входа фильтр, а не гордо писать в мануале:
Цитата
Slope control and input filtering (Fast mode) Not Supported


Помнится, с LPC17xx тоже пришлось немного повозиться, но там были NACKи только от привередливого кодека (у которого, видимо, тоже по аналогии с сэмом отсутствовали фильтры на входе), но проблема быстро решилась а мастер работал безо всяких проблем.

Попробую тоже написать работу с I2C девайсами врукопашную, может, будет получше...

ЗЫ: так и хочется уже отказаться от неустойчивого I2C в пользу SPI, но подкупает малое кол-во проводников...
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 2 2012, 11:28
Сообщение #116


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Забейте, батюшка, на I2C - заборете сейчас, так непременно сломается в будущем. Нервы дороже.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jan 2 2012, 12:40
Сообщение #117


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(aaarrr @ Jan 2 2012, 15:28) *
Забейте, батюшка, на I2C - заборете сейчас, так непременно сломается в будущем. Нервы дороже.

Это применительно к I2C вообще, или только к сэму?

Последнее время у меня с I2C частенько выскакивают проблемы, может быть, из-за наличия рядом с проводниками других цепей с частотами в десятки МГц?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 2 2012, 12:50
Сообщение #118


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Только к сэмам. Скажем, на AVR совершенно замечательный TWI, хотя и называется так же.
А что касается влияния высокочастотных цепей, то это вопрос к трассировке.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jan 2 2012, 15:49
Сообщение #119


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(aaarrr @ Jan 2 2012, 16:50) *
Только к сэмам. Скажем, на AVR совершенно замечательный TWI, хотя и называется так же.
А что касается влияния высокочастотных цепей, то это вопрос к трассировке.

Вот ведь позор то какой, на крошке AVR хороший TWI, а на крупных камнях - совсем никакой sad.gif
На девятых армах, интересно, как с этим дела?

Написал софтовый TWI, правда, пока без поддержки Clock Stretching и без фильтрации, и только в режиме мастера.
Но результат налицо - пока что ни одного глюка, убрал все кондёры с шины, и даже щупы осциллографа не мешают - ни одного чиха! sm.gif
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 2 2012, 16:15
Сообщение #120


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



На девятых такая же порнография. В последних железках не стал даже задействовать, так как результат немного предсказуем.
Go to the top of the page
 
+Quote Post

11 страниц V  « < 6 7 8 9 10 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 01:39
Рейтинг@Mail.ru


Страница сгенерированна за 0.01478 секунд с 7
ELECTRONIX ©2004-2016