|
|
  |
Народ кто имел дело с EP9302, Как оно глюков много |
|
|
|
Sep 23 2006, 15:26
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(sff @ Sep 23 2006, 18:55)  Тоесть считать за глюк и лучше поставить буфер. А как было на старых? AC97 кодек с DVDD 3.3V. Цитата(sff @ Sep 23 2006, 18:55)  Именно pull-up, ведь ds1306 активна по высокому CE. И как написано в datasheet internally pull-down 55kohm? Тогда можете ничего не ставить. Просто CE лучше держать в неактивном состоянии во время сброса, например. Цитата(sff @ Sep 23 2006, 18:55)  А по SFRM я действительно что-то, видно, не понимаю. Нет не одни часики ещё SD/MMC в SPI. Почитав доку вот что у меня сложилось. Я рассматривал режимы SPI при SPO=1 SPH=1 8 битная передача и SPI в мастере. При этом в момент простоя SCLK будет в HIGH. [начальное состояние CE_DS1306 = 0; CS_SD = 1; ] Допустим нужно пообщаться с часиками. Устанавливаю CE_DS1306 = 1; // CS_DS1306 идёт на GPIO SSPDR=ADDR_SEC; //работаю напрямую с SSPDR записываю адрес (как я понимаю при этом появляется SCLK и по SSPTXD поплыли биты) SSPDR=NEW_SEC; //так как FIFO глубокий пишу сразу туда и байт данных while(~(SSPSR & (1 << TFE))); //Дожидаюсь завершения передачи // после опустошения SCLK переходи в HIGH и остается в нём. Устанавливаю CE_DS1306 = 0;
При работе с SD CS_SD = 0; // для простоты аналогично, хотя собираюсь, конечно, через DMA CS_SD = 1;
и у меня получилось что для этого случая SFRM мне не нужен. В чём ошибка? Для работы через polling SFRM действительно не нужен. SFRM нужен: - Если используется загрузка по SPI - Если Вы хотите по-человечески работать на прерываниях DMA для SPI лучше не использовать, так как придется использовать оба канала M2M DMA. Учитывая наличие FIFO и низкую скорость, вполне можно обойтись и прерываниями.
|
|
|
|
|
Sep 23 2006, 17:01
|
Частый гость
 
Группа: Свой
Сообщений: 172
Регистрация: 23-04-06
Пользователь №: 16 404

|
Цитата(aaarrr @ Sep 23 2006, 19:26)  AC97 кодек с DVDD 3.3V. Хмм и операционники тоже от 3.3? Вопрос чисто из любопытства =) Цитата(aaarrr @ Sep 23 2006, 19:26)  Просто CE лучше держать в неактивном состоянии во время сброса, например. Угу Цитата(aaarrr @ Sep 23 2006, 19:26)  - Если используется загрузка по SPI Через SPI DataFlash.. не слишком геморно для этого проца. Цитата(aaarrr @ Sep 23 2006, 19:26)  - Если Вы хотите по-человечески работать на прерываниях А вот про это поподробее, пожалуйста. Вот нету прерывания на конец передачи нету, что неудобно. Ну раз зашла речь о перрываниях под overrun interrupt что понимается, когда был принято слово и оно уже не помещается или когда наступил момент, что следущее принятое слово не влезет.
|
|
|
|
|
Sep 23 2006, 17:46
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(sff @ Sep 23 2006, 21:01)  Хмм и операционники тоже от 3.3? Вопрос чисто из любопытства =) Специально же написал: DVDD  Аналоговое питание там 5V. Цитата(sff @ Sep 23 2006, 21:01)  Через SPI DataFlash.. не слишком геморно для этого проца. Нет, нормально. Можно, например, небольшой свой загрузчик уложить в 25C256, а он будет на хост через TFTP ходить. Цитата(sff @ Sep 23 2006, 21:01)  А вот про это поподробее, пожалуйста. Вот нету прерывания на конец передачи нету, что неудобно. Ну раз зашла речь о перрываниях под overrun interrupt что понимается, когда был принято слово и оно уже не помещается или когда наступил момент, что следущее принятое слово не влезет. "Нету прерывания на конец передачи" - это не "неудобно", это пойти и удавиться. Как узнать, когда можно забирать данные, если устройство одно, или менять CS, если их несколько? Приделывать дополнительный механизм поллинга? А какие тормоза при этом будут? Под overrun interrupt понимается момент, когда данные уже потеряны
|
|
|
|
|
Sep 23 2006, 17:52
|
Частый гость
 
Группа: Свой
Сообщений: 172
Регистрация: 23-04-06
Пользователь №: 16 404

|
Цитата(aaarrr @ Sep 23 2006, 21:46)  Под overrun interrupt понимается момент, когда данные уже потеряны  Вот тогда, действительно, удавиться. А SFRM как выручает? просто на INTx заведено =)
|
|
|
|
|
Sep 23 2006, 20:03
|
Частый гость
 
Группа: Свой
Сообщений: 172
Регистрация: 23-04-06
Пользователь №: 16 404

|
Цитата(aaarrr @ Sep 23 2006, 22:06)  Цитата(sff @ Sep 23 2006, 21:52)  А SFRM как выручает? просто на INTx заведено =)
Не на INTx, а на какой-нибудь пин из EGPIO - их можно заставить работать по фронту. Спасибо. Ну и последний вопрос по прерываниям, на сегодня? который не не дает спокойно спать =) С разъёма SD/MMC я хочу подать CardDetect на EGPIO (Inserted-High) и сконфигурировать на прерывание по возрастающему фронту (отслеживается ввод карточи). И чтобы отследить вытаскивание карточки хочу в теле прерывания (когда вставили карточку) переконфигурировать на falling edge и потом записать "1" в GPIOxEOI. Ну и в теле прерывания при вытаскивании опять менять на rising edge. В этом нет ничего противозаконного?
|
|
|
|
|
Sep 25 2006, 08:45
|
Участник

Группа: Свой
Сообщений: 65
Регистрация: 25-01-05
Из: Мск регион.
Пользователь №: 2 161

|
Цитата(sff @ Sep 23 2006, 15:23)  Было решил что со схемой EDB всё ясно, но вот что обнаружилось: в datasheet сказано что все IO ноги по Input' у должны влезать в RVDD+0.3V Tolerance, но в EDB AC97 (CS4271 ) выход SDOUT подключен напрямую к МК, но сама CS4271 запитана от 5V. И как это понимать?
Так RTC подключить возможно или я что-то напутал? Относительно SPI, здесь SFRM учитывать не нужно? [attachment=7342:attachment] я на 20 пин тоже сначала завел 3.3в но потом пришлося завести 5в так как ds1306 в моменты переходов с батарейки на основное питание просто в какойто ступор впадала., и из регистров я считывал непонятно что. с 5в все ок.
|
|
|
|
|
Sep 25 2006, 13:09
|
Частый гость
 
Группа: Свой
Сообщений: 172
Регистрация: 23-04-06
Пользователь №: 16 404

|
Цитата(aaarrr @ Sep 25 2006, 16:34)  Цитата(MemoryTest @ Sep 25 2006, 12:45)  я на 20 пин тоже сначала завел 3.3в но потом пришлося завести 5в так как ds1306 в моменты переходов с батарейки на основное питание просто в какойто ступор впадала., и из регистров я считывал непонятно что. с 5в все ок.
Тогда проще уж отдельный генератор поставить. Зачем сразу так котигорично. MemoryTest, у вас VCCif запитано от 3.3 и только Vcc1 от 5? Тоесть при запитке Vcc1 всё равно все выводные уровни будут в 3.3 в диапазоне? Цитата(asen @ Sep 25 2006, 05:24)  я думаю что дребизг контактов при вводе и извлечении карты вам все испортит при использовании прирываний поэтому думаю что опрос с определенной переодичностью здесь будет более к месту. По крайне мере на бумаге очень красиво говорится про GPIOxDB. Как написано в доке это позволяет устранять дребизг в прерывании (811 страница UserGuide к 9315). Да, в принципе, это уже мелочи. Если не получится прерыванием сделаю опросом, благо в схеме при этом ничего не меняется. Сейчас хочется с аппаратной частью максимально разобраться, чтобы потом не пришлось доробатывать топором и напильником ну или хотябы минимально
|
|
|
|
|
Sep 25 2006, 14:07
|
Участник

Группа: Свой
Сообщений: 65
Регистрация: 25-01-05
Из: Мск регион.
Пользователь №: 2 161

|
Цитата(aaarrr @ Sep 25 2006, 17:15)  Цитата(sff @ Sep 25 2006, 17:09)  Зачем сразу так котигорично. MemoryTest, у вас VCCif запитано от 3.3 и только Vcc1 от 5? Тоесть при запитке Vcc1 всё равно все выводные уровни будут в 3.3 в диапазоне?
Затем. Перебор явный: 2 питания на одни часы + согласование уровня. Цитата(sff @ Sep 25 2006, 17:09)  Сейчас хочется с аппаратной частью максимально разобраться, чтобы потом не пришлось доробатывать топором и напильником ну или хотябы минимально  Здесь такой подход более чем оправдан  я использовал phy cs8952t там мне 5вольт нужны были по любому, поэтому получилося без проблем закинуть их же и на 20 пин rtc ds1306. Да у меня запитан от 5вольт только 20пин часов, VCCif = 3.3в да все выходные уровни ds1306 3.3в макс. то aaarrr Зачем генератор какой отдельный ставить? если еще и часы нужны.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|