Перейти к содержанию
    

Настройка портов ввода-вывода в Silabs С8051F360 для сопряжения с внешним АЦП и памятью

Доброго всем времени суток!

В устройстве к порту P3 сабжевого МК подключены АЦП AD7934 и микросхема флеш памяти MT29F4G08 (Micron).Управление работой м/сх флеш (CS, ALE, CLE) и АЦП (CS,HBEN) осуществляется через P1,P2 и P4 (RD,WR).

 

Конфигурация портов следующая:

 

sbit ACS = P1.3 // CS АЦП

sbit AST = P1.0 // старт преобразования

sbit BUSY = P1.1 // готовность рез-та преобразования

sbit CSF = P2.0 // chip select flash

sbit ALE = P2.1 // ALE flash

sbit CLE = P2.2 // CLE flash

sbit BUSY_F = P2.2 // готовность Flash

sbit HBEN = P1.2 // разрешение ст. байта АЦП

………………………………………………………………………………..

 

// для уменьшения энергопотребления переводим порты в пассивное состояние (спящий режим)

Port_IO_OFF:

mov SFRPAGE, #CONFIG_PAGE

mov P0MDIN, #0FFh

mov P2MDIN, #09Fh

mov P0MDOUT, #000h

mov P1MDOUT, #00Dh

mov P1MDIN, #0FFh

mov P2MDOUT, #09Fh

mov P3MDOUT, #000h

mov P4MDOUT, #000h

mov P0SKIP, #000h

mov P2SKIP, #000h

mov P1SKIP, #000h

mov P3SKIP, #000h

mov XBR0, #000h

mov XBR1, #000h

 

mov P4, #11111111b

mov P1, #11111111b

mov P2, #10001111b

 

…………………………………………………………………………………..

 

// перевод портов в активное состояние

 

Port_IO_Init:

 

mov SFRPAGE, #CONFIG_PAGE

mov P0MDIN, #09Fh

mov P2MDIN, #09Fh

mov P0MDOUT, #0FFh

mov P1MDOUT, #03Dh

mov P1MDIN, #0CFh

mov P2MDOUT, #09Fh

mov P3MDOUT, #0FFh

mov P4MDOUT, #030h

mov P0SKIP, #079h

mov P2SKIP, #0FFh

mov P1SKIP, #0FFh

mov P3SKIP, #0FFh

mov XBR0, #009h

mov XBR1, #040h

 

mov P4, #00111111b

mov P1, #10111110b

mov P2, #00101001b

 

После нескольких циклов включения/выключения (скольких сказать точно не могу, но в пределах от 15 и до….) наблюдается странное поведение устройства, (повышение тока потребления, «выгорание» линий порта Р3 МК и т.д - вплоть до КЗ по +3В)

Не может ли приводить к такому эффекту неверно настроенные порты МК или надо копать аппаратную часть? Заранее спасибо за помощь

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Доброго всем времени суток!

В устройстве к порту P3 сабжевого МК подключены АЦП AD7934 и микросхема флеш памяти MT29F4G08 (Micron).Управление работой м/сх флеш (CS, ALE, CLE) и АЦП (CS,HBEN) осуществляется через P1,P2 и P4 (RD,WR).

 

Может схему приведете, а то не совсем понятно что и как у Вас подключено, и, соответственно, не ясно для чего Вы сконфигурировали так. В том числе и для Вашего 3-го порта непонятно, почему перевели в пуш-пул. Может что-нибудь навстречу стреляет после включения, не обеспечивается время повер-он-ресет на этой шине. В общем, приходится гадать. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может схему приведете, а то не совсем понятно что и как у Вас подключено, и, соответственно, не ясно для чего Вы сконфигурировали так. В том числе и для Вашего 3-го порта непонятно, почему перевели в пуш-пул. Может что-нибудь навстречу стреляет после включения, не обеспечивается время повер-он-ресет на этой шине. В общем, приходится гадать. 

теперь только в понедельник, т.к. схема на работе :wassat:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как у вас организовано питание +5В и +3В? Возможна ли ситуация когда есть +5В, но еще или уже нет +3В?

Вообще тактически неправильно сажать на одну шину устройства с разным питанием. Я понимаю, что у вас цифровая цасть АЦП запитана тем же напряжением, что и МК (3В) и это не противоречит даташиту AD7934, но не исключен вариант, когда при переходных процессах через какие-то внутренние защитные цепи кристалла +5В попадает на его цифровые пины.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не могут ли какие-то цепи находиться в 3-м состоянии? Если да, то такие цепи надо защитить диодами на + питания (наименьшего, если устройства цепи от разных источников питаются) и на землю, если внутри кристалла таких нет. А если есть - согласен с rezident - надо проследить чтоб на 3,3-вольтовую микросхему не попадало 5В - иначе защитные диоды превращаются в открытый тиристор с + питания на землю, у самого такая беда с камнем альтеры была - вобще разогревался, задеть нельзя было.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как у вас организовано питание +5В и +3В? Возможна ли ситуация когда есть +5В, но еще или уже нет +3В?

Вообще тактически неправильно сажать на одну шину устройства с разным питанием.

Понятно что нежелательно...,но другого выхода я не увидел :cranky: Была задача оцифровывать сигнал от 0 до +5В,интерфейс сделал 3В для снижения потребления+камень Silabs почти идеально подошел по быстродействию что было на первом месте при разработки системы.

По осциллограмме +3В и +5В вроде как одновеменно появляются при включении.Снятие питания еще не смотрел

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не знаю всех ваших подробностей/критериев выбора, но лично я уже как-то привык к последовательным интерфейсам. Поэтому на вашем месте вряд ли бы стал выбирать АЦП с параллельным интерфейсом. Да еще и МК для этого АЦП специально выбирать соответственно с параллельной шиной.

В вашем случае я могу посоветовать включить резисторы 47-100 Ом последовательно со всеми цифровыми выходами АЦП - шина данных и сигнал BUSY. Тогда даже при явном перекосе питаний ток будет ограничен на безопасном для защитных диодов обоих кристаллов уровне.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 А функция Port_IO_Init когда вызывается? Я к тому, что может Вы рано переводите порт 3 в пуш-пул? Нужно ведь это делать только при записи во флэш, во всех остальных случаях при чтении только опендрейн.

 

 

Еще. Непонятно для чего Вы делаете mov P0MDIN, #09Fh (2 ноги перевели в аналоговый входной режим), а затем все ноги этого порта переводите в пуш-пул. Не знаю как на это реагирует камень, может и ничего страшного, но как-то некорректно.

 

остальное не смотрел.

 

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

надо проследить чтоб на 3,3-вольтовую микросхему не попадало 5В - иначе защитные диоды превращаются в открытый тиристор с + питания на землю, у самого такая беда с камнем альтеры была - вобще разогревался, задеть нельзя было.

А если поставить м/сх шинного формирователя, например 74LCX245 для развязки +5В и +3В?

 

 

Не знаю всех ваших подробностей/критериев выбора, но лично я уже как-то привык к последовательным интерфейсам. Поэтому на вашем месте вряд ли бы стал выбирать АЦП с параллельным интерфейсом. Да еще и МК для этого АЦП специально выбирать соответственно с параллельной шиной.

В вашем случае я могу посоветовать включить резисторы 47-100 Ом последовательно со всеми цифровыми выходами АЦП - шина данных и сигнал BUSY. Тогда даже при явном перекосе питаний ток будет ограничен на безопасном для защитных диодов обоих кристаллов уровне.

Скорость у последовательного интерфейса слишком мала...По ТЗ частота дискретизации аналогового сигнала не более 6,6мкс

Насчет резисторов - попробую,но не скоро-надо переразводить плату

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Скорость у последовательного интерфейса слишком мала...По ТЗ частота дискретизации аналогового сигнала не более 6,6мкс

У той же C8051F360 максимальная частота тактирования SPI в режиме master - 12,5МГц. 16-и битный результат оцифровки АЦП передается за 3-4 байта. Соответственно получается 4*8бит/12,5МГц=2,56мкс - вполне удовлетворяет вашему требованию.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А если поставить м/сх шинного формирователя, например 74LCX245 для развязки +5В и +3В?

 

Эти камни выдерживают 5 вольт на входе при питании от 3.3 , согласно документации максимум 5.8 В, а не Vdd+0.3 как это принято. На то они и 5В толерантными называются. На мой пост Вы не ответили, на счет инициализации. Смею посоветовать еще одну вещь. По Вашему первому сообщению получается что выход из строя происходит хорошо повторяющийся. Тогда пожертвуйте еще одним камнем. Но в программе полностью уберите перевод в пуш-пул выходов, оставив их в опендрейне. Конечно, функционировать нормально Ваше устройство вряд ли будет из-за завалившихся фронтов. Однако увидите, будет ли в этом случае выгорать. Видимо бывают моменты когда МК и флэш или ацп работают оба на выход. Можно даже вообще запретить обмен с флэшем (например, СЕ в еденицу подвесить). Если в этом случае камень гореть не будет - хорошо. Останется разобраться с прогой. Появится еще один труп - тогда "Кац предлагает сдаться" (цэ), (в смысле придется разбираться с железом)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Эти камни выдерживают 5 вольт на входе при питании от 3.3 , согласно документации максимум 5.8 В, а не Vdd+0.3 как это принято. На то они и 5В толерантными называются. На мой пост Вы не ответили, на счет инициализации. Смею посоветовать еще одну вещь. По Вашему первому сообщению получается что выход из строя происходит хорошо повторяющийся. Тогда пожертвуйте еще одним камнем. Но в программе полностью уберите перевод в пуш-пул выходов, оставив их в опендрейне. Конечно, функционировать нормально Ваше устройство вряд ли будет из-за завалившихся фронтов. Однако увидите, будет ли в этом случае выгорать. Видимо бывают моменты когда МК и флэш или ацп работают оба на выход. Можно даже вообще запретить обмен с флэшем (например, СЕ в еденицу подвесить). Если в этом случае камень гореть не будет - хорошо. Останется разобраться с прогой. Появится еще один труп - тогда "Кац предлагает сдаться" (цэ), (в смысле придется разбираться с железом)

К сожалению сжечь последний прибор не позволит начальство :maniac:

побробую завтра поигаться с инициализацией на свой страх и риск

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день.

 

У вас, AndyS, на порту P3 висит и флешь и АЦП. Так?

Видимо как минимум с АЦП вы считываете данные, а это значит что порт P3 не имеет право быть PUSH-PULL. Так как в таком режиме он не имеет Z состояния. Т.е. вы выставите на нем 1 и это означает что у вас на порту будет включен транзистор верхнего плеча и выдаст свое Vio. В этот момент, не дай бог АЦП выставит на этот пин 0. Тогда произойдет конфликт по логике. И первое. Вы скорее всего получите неправильные данные и ко всему прочему еще и вызжете этот пин. Ну дай бог внутри АЦП будет защита по току (скорее нет). Вообще в данном случае этот порт не может быть в режиме пуш пул, он у вас работает в двунаправленом режиме. Ставть подтяжки и переводите порт в открытый коллектор. Вот если бы вы только записывали во шлешь через этот порт, тогда да, можно. Ну как мера, можно при смене направления менять настройки порта с пуш плуа на открытый коллектор, вы ведь мастер в данном случае, а не АЦП. Но нужно посмотреть сколько времни будет выполняться этот переход(думаю что ваша прошивка успеет). У меня было странно выгорание портов в этом проце (именно в ф360) только при перегреве чипа, вернее при достижении на ядре близкой к его максимально допустимой. Выгорали пины, которыми часто дергали в этот момент (ШИМ, УАРТ на большой частоте в нескольок МГц).

 

Удачи

 

PS. В процедуре Port_IO_OFF: не возымеют должного эффекта последние 3 строки (mov P4, #11111111b

mov P1, #11111111b

mov P2, #10001111b

), так как перед ними вы выключили кросбар (почитайте даташит, если я не ошибаюсь, просото сейчас работаю с Ф410, то это у них у всех. Как выключаете кроссбар, то управлять портами вы не можете. Т.е. что бы просто подрыгать ногами проца, как минимум нужно включить кроссбар XBR1=0x40;

 

До кучи. Глядя на вашу реализацию и на даташитв идно что вы АЦП и флешь не отобразили во внешнем адресном пространстве. А обращаетесь к ним вручную, т.е. не используете команды MOVX A,@DPTR. Коли у вас весь интерфейс сделан полность программным, то после режима записи параллельный интерфейс, переключайте порт P3 в режим открытого коллектора. Тогда ненужны будут подтяжки по порту. Но честно говоря геморная реализация. У вас в проце есть интерфейс внешней памяти, а вы его не используете.

 

Ради повышения своих знаний, зачем вы управляете общей точкой питания Vss флешки (т.е. отрезаете ей шину земли) с проца. У вас Vss флешки заведен на порт P0.0 через резюк. Интересно как себя поведет флешка, когда вы ей вырубите Vss (дадите туда лог 1) и при этом попытаетесь с нее что-нибудь считать или записать, да еще и пушпулом? Как все это тянет порт P0.0 (какой ток течет через резюк R58)?

 

PSS Упс. С Vss не заметил. Это просто общая точка для всей схемы :)

Изменено пользователем AndreyS

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...