XMOS + AK4493 с нуля для ради удовольствия и науки
#41

Можно.
В даташите расписано в каких случаях нужно делать софтовый ресет.
Ответ
#42

(12-11-2023, 07:40 AM)Altor Audio Написал:  Кроме того, у меня та часть что до развязки - от самого USB питается.
Чем же если не секрет она питается? Никогда не видел готовых стабилизаторов на 1 вольт

Cовсем не могу понять зачем в АК4493 3 провод в линии i2c??? (csn) везде два, тут три. Причем адрес и управление регистрами задается совершенно другими пинами.
[Изображение: image.png]
Ответ
#43

(12-20-2023, 02:15 PM)ActiveStalker Написал:  
(12-11-2023, 07:40 AM)Altor Audio Написал:  Кроме того, у меня та часть что до развязки - от самого USB питается.
Чем же если не секрет она питается? Никогда не видел готовых стабилизаторов на 1 вольт

 В одних платах у меня стоит TPS72010, в других -  AP7365-10YG-13

Цитата:Cовсем не могу понять зачем в АК4493 3 провод в линии i2c??? (csn) везде два, тут три. Причем адрес и управление регистрами задается совершенно другими пинами.

На приведенной страничке, управлене не по I2C а по SPI.
Ответ
#44

(12-21-2023, 12:29 AM)Altor Audio Написал:  На приведенной страничке, управлене не по I2C а по SPI.
Да, это тяжелый ЦАП, не сразу все понятно. У меня только сейчас появилось время вдумчиво читать даташит. До этого с хмосом разбирался. Ну да, 13 нога (PSN) в LOW - управление через регистры, а 14 нога (i2c) в HIGH для того чтобы выбрать именно i2c режим. Кстати Вы ранее писали, что испытываете симпатии именно к SPI. Почему если не секрет? На провод меньше нужно пропускать через развязку, если i2c.

(12-21-2023, 12:29 AM)Altor Audio Написал:  В однихз платах у меня стоит TPS72010, в других -  AP7365-10YG-13
спасибо, обязательно изучу и учту.
Ответ
#45

I2C я тоже нежно люблю :)
Даже когда-то, лет 25 с лишним назад, переводил филипсовскую документацию на русский, для неотягощенных иностранными языками.

Вообще я и то и другое использую.

SPI быстрее, хотя это и не всегда нужно, ее несколько проще реализовать программно, если нет аппаратного порта.
С I2C это тоже не проблема, но с SPI несколько проще. (Я обычно программистам-эмбедщикам даю это как задание на интервью - написать ручкой на бумажке или на досе программный SPI-передатчик :)).

С развязкой конечно удобнее SPI, немотря на лишний провод - для I2C нужен отдельный чип развязки, спецально для I2C, или городить огород вокруг обычной развязки, из-за двунаправленности хотя бы SDA (причемтут как раз понадобится не 2 а 3 линии в развязке, как и в SPI).
Ответ
#46

(12-21-2023, 08:39 AM)Altor Audio Написал:  для I2C нужен отдельный чип развязки, спецально для I2C
Грустно. Этого я не знал, и не подумал. Хочется сказать - а меня же интересуют только операции записи, но тут же приходят в голову сигналы ACK/NACK. Читал, слэйв дергает линию на этих битах в зависимости от результата операции записи или чтения. Ну значит двунаправленное ISO1642 (дорогое зараза, нужно что - то попроще найти).

Для работы с i2c у xmosа есть отдельная библиотека (две недели разбирался как ей пользоваться... запуск, запись по кругу или отдельных регистров ели осилил). Написать код для spi подобного интерфейса - по сути библиотеку с нуля не рискну, могу запутаться.(соответственно в данный момент не пройду Ваше собеседование), но это пока - что. Посмотрел есть и SPI библиотека у XMOS. Но что - то мне подсказывает, возможно какое - то дурное предчувствие, что в AK4493 не совсем SPI а последовательная шина из трех проводов со своим кастомным протоколом. Вы для XMOS SPI используете библиотеку или сами написали протокол?
Ответ
#47

Сам написал.

Самый обычный SPI там, 16-битный.

Можно и чисто программно:
Код:
#define OneTime  10   // Clk=1  in ns
#define ZeroTime 10   // Clk=0

static inline void SET_SPI_CS(   unsigned X)   {SPI_CS <:X;}
static inline void SET_SPI_CLK(  unsigned X)  {SPI_CLK <:X;}
static inline void SET_SPI_MOSI( unsigned X) {SPI_MOSI <:X;}

// 16 bit soft SPI function:
void SPI16_SEND(unsigned short din) { // 3.2 us

   timer t;
   unsigned time;
   unsigned short mask=0x8000;
   unsigned i;

   SET_SPI_CS(0); // start chip select
   for(i=0;i<16;i++) {
       SET_SPI_CLK(0);
       SET_SPI_MOSI(  (din & mask)!=0);
       mask>>=1;
       t :> time; time += ZeroTime; t when timerafter(time) :> int _;
       SET_SPI_CLK(1);
       t :> time; time += OneTime; t when timerafter(time) :> int _;
   }
   SET_SPI_CS(1);  // end chip select
}
The following 1 user says Thank You to Altor Audio for this post:
  • ActiveStalker (12-21-2023)
Ответ
#48

Таааак. Спасибо. Как работает код примерно понятно, осталось разобраться в протоколе. Большое спасибо. Может быть так даже удобней будет.
Ответ
#49

А как лучше поступить с землями вокруг процессора? Всё на один полигон (земли процессора, стабилизаторов напряжения, осцилятора, флешки, XTAG?) или пойти по принципу усилителя - сигнальные земли относятся к точке входа - земли USB разъема, а всю блокировку на отдельный слой и его соединить с точкой входа разъема USB? Наверное предполагается только 4 слойная плата?
Ответ
#50

Цитата:сигнальные земли относятся к точке входа - земли USB разъема,

USB оно дифференциальное, там не столько земля нужна, сколько импеданс и правила прокладки высокочастоныхз линий (тянуть дифпарой, над сплошным полигоном, выравнивать длину, избегать перехдных и "пньков" и т.п.).
Но открою страшную тайну - если от чипа до USB-разъема 2-3см, то все это пох.
Ну почти пох.

Цитата: Наверное предполагается только 4 слойная плата?

У меня большая часть плат на иксмосе - 2-х слойки, хотя есть и 4-х.
Ответ
#51

Как Вы считаете, XU208 нужно делать полный интерфейс для XTAG с xscope или достаточно основной? Я так понял, что мониторинг в реальном времени и мгновенный printf() будет работать только через xsim xTME compressor?
Что в таком случае будет с портом 8D?, для xscope используются только 4 последние пина(бита). Эти пины нужно как - то назначать в XN файле? или нужно просто не трогать порт 8D и 16B соответственно?
Какой XTAG лучше купить? 3 или 4? Читаю даташит на оба, у них 20 пин вых разъем но при этом совершенно разная распиновка. Странно конечно что они не совместимы. Ниже картинка распиновки для 4 го хтага, синий - базовые пины, зеленый - дополнительные для xscope

[Изображение: image.png]
Ответ
#52

(12-23-2023, 04:44 PM)Altor Audio Написал:  если от чипа до USB-разъема 2-3см, то все это пох.
Ну почти пох.
Если это USB2-то при 2 см-пох.
Если USB3- то нет

Nobody Is Perfect
Ответ
#53

(12-26-2023, 10:59 AM)begemot Написал:  
(12-23-2023, 04:44 PM)Altor Audio Написал:  если от чипа до USB-разъема 2-3см, то все это пох.
Ну почти пох.
Если это USB2-то при 2 см-пох.
Если USB3- то нет

Тут только 2-й.
Ответ
#54

(12-26-2023, 09:31 AM)ActiveStalker Написал:  Как Вы считаете, XU208 нужно делать полный интерфейс для XTAG с xscope или достаточно основной? 

Я с 208-м только 6 сигналов использую - RST_N, TDI, IDO, TMS, TCK, GND.
Ответ
#55

(12-26-2023, 12:11 PM)Altor Audio Написал:  Я с 208-м только 6 сигналов использую - RST_N, TDI, IDO, TMS, TCK, GND.
Я тоже так и понял. Дополнительные 4 нужны только для xsim. Но наверное было бы неплохо реализовать полный интерфейс для того, чтобы не распаивая часть ЦАП визуально убедится в том что оно не кирпич. Одновременно подключить хtag и подавать туда разные форматы PCM, DSD, смотреть как срабатывает код i2c шины при переключении форматов
Ответ
#56

Когда я 10+ лет назад только начинал с иксмосами, у меня были их родные эвалуейшн борды, с полным 20-пиновые джитагом.
А на "боевых" платах он нафиг не нужен, ставлю 10-пиновый IDC, который даже не запаиваю - для прошивки есть прибамбас с подпруджиненными иголками по IDC10, или в некоторых платах - пятячки и дырочки под Tag-Connect.
Ответ
#57

Есть ли реальный смысл в разнесении задач и портов на два тайла? Хмосы часто показывают в примерах XUD на одном тайле, а AudioHub и остальное на втором, или это для сложных многозадачных конфигураций и в моем случае некритично?
Ответ
#58

У меня все на одном тейле крутится, и то не полном. Зачем множить сущности? :)
Второй тейл луше задействоваь под что-то ресурсоемкое, например DSP, если цифрокросс делать, или спдиф-приемник (хотя имхо луше "железный" поставить, и не морочить себе голову).
The following 1 user says Thank You to Altor Audio for this post:
  • ActiveStalker (12-28-2023)
Ответ
#59

Как сейчас обстоят дела с культурой питания? Какой идеологии сейчас стараются придерживаться? (я помню было много вариантов, вплоть от отдельных источников с отдельными трансформаторами и десятками отдельных линий питания) Флешка, часть процессора (IO, USB PHY) осцилятор, и гальваноразвязки питаются от 3.3в. Есть ли смысл разбивать на несколько стабилизаторов, или развязывать RC или Ferrite Bead/С?. Я не уверен но думаю в цифровых МС нет PSRR. На что нужно обратить внимание при решении этой задачи? Хочется хоть немного в лучшую сторону отличатся от китайских поделок с Ali...

Мне кажется, я могу быть не прав. Ту часть которая берет 5 вольт с USB нужно разбить на питания 3.3 и 0.9 в двумя отдельными стабами - по одному на каждое напряжение. Все блоки процессора, как они рисуют спараллелить толстыми дорожками или полигонами, и как они говорят возле каждого пина по 100 нан на землю. Чтоб всё это не зазвенело по пути последовательно стабу поставить небольшое сопротивление вроде 0.5 Ом. Отдельные МС ( память, осцилятор, гальвано-развязки ) вывести отдельными лучами и разделить RC или LC цепями с блокировкой по месту небольшими электролитами и керамикой. Последовательно выходу стаба везде небольшой резистор, а низкий импеданс достигается локально за счет блокировки.
Ответ
#60

Все 3.3в (проц, еепромка, phy, осциллятор и изолятор) у меня от одного 1117-3.3 с танталом на выходе идут, без бидов.

5в с USB идет на него, и плюс на стаб 1.8в (в одних устройствах линейный, 1117-1.8, в других степ-даун) а с него налинейный 1в.
1.8 мне нужно в платах на XS1, там от него PHY питается. В патах с 208-м я не стал менять, хотя само 1.8 не используется.

1117 несмотря ни на что, нормально на керамику работает, AP7365-10YG-13 и TPS72010 тем более.
Ответ


Возможно похожие темы ...
Тема / Автор Ответы Просмотры Последний пост

Перейти к форуму:


Пользователи, просматривающие эту тему: 8 Гость(ей)