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

 
 
> Настройка портов ввода-вывода в Silabs С8051F360 для сопряжения с внешним АЦП и памятью, нужна помощь
AndyS
сообщение Aug 26 2010, 15:37
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 5-02-07
Пользователь №: 25 086



Доброго всем времени суток!
В устройстве к порту 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В)
Не может ли приводить к такому эффекту неверно настроенные порты МК или надо копать аппаратную часть? Заранее спасибо за помощь
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AndreyS
сообщение Sep 2 2010, 19:17
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 235
Регистрация: 28-01-05
Из: Санкт-Петербург
Пользователь №: 2 276



Добрый день.

У вас, 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 не заметил. Это просто общая точка для всей схемы smile.gif

Сообщение отредактировал AndreyS - Sep 2 2010, 19:56


--------------------
Удачи.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


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


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