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

Группа: Участник
Сообщений: 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В) Не может ли приводить к такому эффекту неверно настроенные порты МК или надо копать аппаратную часть? Заранее спасибо за помощь
|
|
|
|
|
 |
Ответов
|
Sep 2 2010, 19:17
|

Местный
  
Группа: Участник
Сообщений: 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 не заметил. Это просто общая точка для всей схемы
Сообщение отредактировал AndreyS - Sep 2 2010, 19:56
--------------------
Удачи.
|
|
|
|
Сообщений в этой теме
AndyS Настройка портов ввода-вывода в Silabs С8051F360 для сопряжения с внешним АЦП и памятью Aug 26 2010, 15:37 barabek Цитата(AndyS @ Aug 27 2010, 01:37) Доброг... Aug 27 2010, 08:27 AndyS Цитата(barabek @ Aug 27 2010, 12:27) Може... Aug 27 2010, 13:07  AndyS Цитата(AndyS @ Aug 27 2010, 17:07) теперь... Aug 30 2010, 14:28 rezident Как у вас организовано питание +5В и +3В? Возможна... Aug 30 2010, 16:51 alexPec Не могут ли какие-то цепи находиться в 3-м состоян... Aug 30 2010, 17:03  AndyS Цитата(alexPec @ Aug 30 2010, 21:03) надо... Aug 31 2010, 06:36   rezident Цитата(AndyS @ Aug 31 2010, 12:36) Скорос... Aug 31 2010, 11:36   barabek Цитата(AndyS @ Aug 31 2010, 17:36) А если... Aug 31 2010, 13:10    AndyS Цитата(barabek @ Aug 31 2010, 17:10) Эти ... Aug 31 2010, 14:14 AndyS Цитата(rezident @ Aug 30 2010, 20:51) Как... Aug 30 2010, 18:56 rezident Не знаю всех ваших подробностей/критериев выбора, ... Aug 30 2010, 20:15 barabek А функция Port_IO_Init когда вызывается? Я к тому... Aug 30 2010, 21:33
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|