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

TMS320C6455: проблемы с инициаизацией McBSP

Добрый всем день!

Столкнулся тут с неожиданной для себя проблемой - не могу запустить McBSP0 на процессоре С6455.

Ситуация: имеем работающий C6455 (EMIF, DDRAM, EMAC - то, что сконфигурировано и давно пашет). Появилась необходимость пользовать последовательный канал. Изначально McBSP1 выключен как класс (AEA5 задавлен при инициализации проца) и не планировался к использованию. В отличие от McBSP0, на который планы были.

И вот теперь, когда до McBSP0 дошли руки - выяснилось, что он не запускается. Во-первых, до установки соответствующего бита в PERCFG0 состояние модуля MCBSP0 - Static Powerdown (троечка в PERSTAT0). Это же состояние и у McBSP1 - что логично исходя из вышесказанного. Но у McBSP0 не должно быть по определению состояния Static powerdown! Смотрим картинки в приложении - McBSP0 должен быть изначально Disabled.

Ну да ладно. Пытаемся включить McBSP0, записав соответствующий битик в PERCFG0. Битик записывается и ... состояние модуля MCBSP0 не меняется (!) - все также Static Powerdown (как я уже писал - троечка в PERSTAT0). К слову - при попытке включить McBSP1 в моей ситуации - соответствующий битик в PERCFG0 не пишется, что и ожидаемо.

Танцы с бубнами (попытка снять сбросы в SPCR0) не привели ни к чему - биты банально не записываются - модуль McBSP0 неактивен...

По сему есть ряд вопросов. Первый - возможно, мы что-то упустили с питанием и для MсBSP что-то не завели. Но я нигде не нашел указаний, какие цепи питания проца питают McBSP. В частности, не были заведены цепи питания для SRIO ввиду отсутствия необходимости в этом интерфейсе и желания снизить энергопотребление. Но вроде это другой модуль, не связанный с McBSPx.

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

В общем - очень хотелось бы помощи, бо мысли (разумные) у нас кончились.

 

 

McBSP_States_2.jpg

McBSP_States_1.jpg

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


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

Как дополнение - не заведены (сидят на земле) следующие цепи питания:

1. DV DDR (1.8-V I/O supply voltage (SRIO regulator supply). NOTE: If  Rapid I/O is not used, this pin can be connected directly to VSS)

2. DV DDRM (SRIO interface supply: 1.25-V core supply voltage (-1000 and -1200 devices) DVDDRM S 1.2-V core supply voltage (-850 devices). V17 The source for this supply voltage must be the same as that of CVDD. NOTE: If RapidIO is not used, these pins can be connected directly to VSS)

3. DV DD12 (Main SRIO supply: 1.25-V I/O supply voltage (-1000 and -1200 devices) DVDD12 S 1.2-V I/O supply voltage (-850 devices). W18 Do not use core supply. NOTE: If RapidIO is not used, these pins can be connected directly to VSS)

4. DV DD15 ( RGMII / EMAC )

5. AV DDA (SRIO analog supply NOTE: If Rapid I/O is not used, these pins can be connected directly to VSS)

6. AV DDT (SRIO termination supply. NOTE: If RapidIO is not used, these pins can be connected directly to VSS)

7.  VREF HSTL ( RGMII / EMAC )

 

 

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


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

54 минуты назад, vovka1960 сказал:

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

В общем - очень хотелось бы помощи, бо мысли (разумные) у нас кончились.

а в этот документ https://www.ti.com/lit/ug/spru580g/spru580g.pdf смотрели? с пункта 7 вроде все расписано

из ваше описания не видно разрешение тактовой на этот узел..

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


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

1 hour ago, Jury093 said:

а в этот документ https://www.ti.com/lit/ug/spru580g/spru580g.pdf смотрели? с пункта 7 вроде все расписано

из ваше описания не видно разрешение тактовой на этот узел..

Хм. Дело в том, что то, что вы описываете, программируется уже после включения модуля McBSP. Т.е. внутри процессора есть области, функционально отвечающие за те или иные операции. Они могут быть включены или выключены (физически, а не логически). Т.е. за счет этого можно оперировать энергопотреблением в том числе. Так вот - если модуль не включен - любое обращение к регистрам этого модуля (то, что описано в 7 разделе указанного вами документа - к слову, мои скриншоты тоже оттуда ;)) невозможно. Это как нажимать на кнопки прибора, не включенного в сеть...

Так вот, состояние Static powerdown - это такое состояние, из которого нет выхода программным способом (т.е. выключено навсегда). Изменить это можно только изменив условия начальной инициализации процессора. Но! McBSP0 - согласно таблице - не может находится в этом состоянии. McBSP1 - может! По крайней мере - согласно документации. В этом и вопрос. Что загонятет McBSP0 в состояние Static powerdown...

 

И да - я писал об этом - попытки манипулирования с регистром управления SPCR0 привели к сожалению к ожидаемому результату (в свете того, что McBSP выключен) - т.е. регистр просто недоступен для записи... Ничего в него не пишется..

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


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

1 час назад, vovka1960 сказал:

Так вот, состояние Static powerdown - это такое состояние, из которого нет выхода программным способом (т.е. выключено навсегда). Изменить это можно только изменив условия начальной инициализации процессора. Но! McBSP0 - согласно таблице - не может находится в этом состоянии. McBSP1 - может! По крайней мере - согласно документации. В этом и вопрос. Что загонятет McBSP0 в состояние Static powerdown...

и все же про тактовую на модуль mcbsp я не услышал, хотя сначала надо выяснить кто его загоняет в powerdown.

у вас классика (убут-ядро-линукс) или что-то свое? если убут, то остановите загрузку и посмотрите содержимое регистров - если там disabled, а после ядра powerdown, то надо смотреть в код ядра (и убута конечно)

если убут или ваша софтина раннего доступа показывает powerdown этого узла сразу после включения, то надо попробовать оторвать "AEA5 задавлен" шарик, может это силикон балуется и кладет оба интерфейса

да, в доках Техаса встречаются ошибки, неточности и опечатки, тогда надо смотреть еррату и спрашивать на тамошнем форуме..

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


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

6 minutes ago, Jury093 said:

и все же про тактовую на модуль mcbsp я не услышал, хотя сначала надо выяснить кто его загоняет в powerdown.

у вас классика (убут-ядро-линукс) или что-то свое? если убут, то остановите загрузку и посмотрите содержимое регистров - если там disabled, а после ядра powerdown, то надо смотреть в код ядра (и убута конечно)

если убут или ваша софтина раннего доступа показывает powerdown этого узла сразу после включения, то надо попробовать оторвать "AEA5 задавлен" шарик, может это силикон балуется и кладет оба интерфейса

да, в доках Техаса встречаются ошибки, неточности и опечатки, тогда надо смотреть еррату и спрашивать на тамошнем форуме..

Софт чисто свой (никаких ОС). Смотрю практически сразу (до этого только настройка PLL, DRAM и EMIF) - в примере от TI первой командой идет включение модуля в PERCFG0 с контролем включение в PERSTAT0. "1" в PERCFG0 выставляется нормально (читается). Но PERSTAT0 вместо 001 (Enabled) возвращает 011 (powerdown).

На счет AEA5 - сам к такому решению пришел - в обед плата уехала в цех. Увы, джампера на это дело не предусмотрели.. Кто бы мог подумать...

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


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

На сколько я помню, перед записью в PERCFG0, его надо разблокировать...

У меня сделано так (SPI на McBSP0), правда сделано это было в 2013 году:

Скрытый текст

 

...............................................................................    
    *(int*)PERLOCK = 0x0F0A0B00 ;    // UNLOCK PERCFG0
    *(int*)PERCFG0 = 0x00015540 ;
/*
     *(int*)PERCFG0 |= (1<<6) ;        // TIMER0CTL = 1, Set Timer 0 to enabled mode
     *(int*)PERCFG0 |= (1<<14) ;        // McBSP0CTL = 1, Set McBSP0 to enabled mode
     *(int*)PERCFG0 |= (1<<10) ;        // GPIOCTL = 1, Set GPIO to enabled mode
*/

................................................................................

    //-------------------------- init McBSP0 (SPI_ADC) -------------------------------------    

    *(int*)SPCR0 &= ~(1<<23) ;    //    FRST RESET    
    *(int*)SPCR0 &= ~(1<<22) ;    //    GRST RESET
    *(int*)SPCR0 &= ~(1<<16) ;    //    XRST RESET
    *(int*)SPCR0 &= ~(1<<0) ;    //    RRST RESET

    *(int*)SPCR0 |= (1<<11) ;        
    *(int*)SPCR0 |= (1<<12) ;    //    CLKSTP = 3

    //*(int*)SPCR0 |= (1<<25) ;    //    FREE = 1 

    *(int*)SPCR0 &= ~ (1<<25) ;    //    FREE = 0 
    *(int*)SPCR0 &= ~ (1<<24) ;    //    SOFT = 0 


    //*(int*)RCR0 |= (1<<6) ;        //    RWDLEN1 = 2    Receive word 16 bits

    *(int*)RCR0 |= (1<<5) ;
    *(int*)RCR0 |= (1<<7) ;        //    RWDLEN1 = 5    Receive word 32 bits

    *(int*)RCR0 |= (1<<16) ;    //    RDATDLY = 1    1bit data delay receive

    //*(int*)XCR0 |= (1<<6) ;        //    XWDLEN1 = 2    transmit word 16 bits

    *(int*)XCR0 |= (1<<5) ;
    *(int*)XCR0 |= (1<<7) ;        //    XWDLEN1 = 5    transmit word 32 bits

    *(int*)XCR0 |= (1<<16) ;    //    XDATDLY = 1    1bit data delay transmit


    *(int*)SRGR0 = 0x09 ;        //    CLKGDV = 9, SCLK = 20 MHz (200/(9+1))
    //*(int*)SRGR0 = 0x13 ;        //    CLKGDV = 9, SCLK = 10 MHz (200/(19+1))


    *(int*)SRGR0 |= (1<<29) ;    //    CLKSM = 1

    *(int*)PCR0 |= (1<<0) ;        //    CLKRP = 1
    *(int*)PCR0 |= (1<<2) ;        //    FSRP = 1
    *(int*)PCR0 |= (1<<3) ;        //    FSXP = 1

    *(int*)PCR0 |= (1<<8) ;        //    CLKRM = 1    OUT
    *(int*)PCR0 |= (1<<9) ;        //    CLKXM = 1    OUT
    *(int*)PCR0 |= (1<<10) ;    //    FSRM = 1    OUT
    *(int*)PCR0 |= (1<<11) ;    //    FSXM = 1    OUT

    WAIT_FOR_2_CLK;

    *(int*)SPCR0 |= (1<<23) ;    //    FRST ON    
    *(int*)SPCR0 |= (1<<22) ;    //    GRST ON

    WAIT_FOR_2_CLK;

    *(int*)SPCR0 |= (1<<16) ;    //    XRST ON
    *(int*)SPCR0 |= (1<<0) ;    //    RRST ON

    WAIT_FOR_2_CLK;

 


 

 

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


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

2 минуты назад, Den сказал:

На сколько я помню, перед записью в PERCFG0, его надо разблокировать...

у ТС этот узел сразу улетает в powerdown, откуда его вывести похоже непросто или невозможно - по первой картинке из состояния RESET. про PERLOCK я и спрашивать не стал, раз пишет в PERCFG0 и вычитывает правильно

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


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

On 4/13/2021 at 4:15 PM, vovka1960 said:

На счет AEA5 - сам к такому решению пришел - в обед плата уехала в цех. Увы, джампера на это дело не предусмотрели.. Кто бы мог подумать...

Ну в общем - не помогло.  Оба (уже оба!) безвылазно сидят в Static Powerdown. Грешу на питание, но где???

Пошел задавать вопрос на E2E...

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


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

13.04.2021 в 16:15, vovka1960 сказал:

На счет AEA5 - сам к такому решению пришел - в обед плата уехала в цех. Увы, джампера на это дело не предусмотрели.. Кто бы мог подумать...

обед видимо уже закончился, что там с ae5e, полегчало?

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


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

16 hours ago, Jury093 said:

обед видимо уже закончился, что там с ae5e, полегчало?

Не поверите - таки да! И более того! А если серьезно - я там, выше, уже отписался, что AEA5 не помог..

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


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

On 4/21/2021 at 10:52 AM, vovka1960 said:

Ну в общем - не помогло.  Оба (уже оба!) безвылазно сидят в Static Powerdown. Грешу на питание, но где???

Пошел задавать вопрос на E2E...

По ходу, E2E помог. Собираюсь пробовать. Очень интересное объяснение... Если кому интересно - советую прочесть...

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


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

On 5/13/2021 at 8:48 AM, vovka1960 said:

По ходу, E2E помог. Собираюсь пробовать. Очень интересное объяснение... Если кому интересно - советую прочесть...

В общем - опробовано. Действительно, имеет место факт недокументированной фичи.

Итого, имеем разряд AEA7, для которого в описании кроме как в качестве адресного разряда не значится ничего. Лишь замечание, что он IPD (internally pulled down - внутренняя подтяжка к земле) и просьба не подтягивать снаружи вверх. Тот факт, что значение этого разряда при инициализации можно прочесть в DEVSTAT (12 разряд) вообще никак не указывается, но имеет место факт - бит, отмеченный как Reserved, означает значение на AEA7 в момент запуска.

Далее. Этот разряд (AEA7) подключен у меня через буферный резистор 33 Ома к входу ПЛИС. Третий циклон. Никаких внутренних подтяжек в циклоне не включено (специально проверил проект). Никаких других цепей на этот разряд не заведено. И вот неожиданно, при чтении DEVSTAT.12 выясняется, что там высокий уровень. И неожиданно оказывается, что высокий уровень выключает оба McBSP! И все это подробно описано в документации на родственника С6455 - TCI6482. Там - да, а тут - ни слова...

В общем, добавление резистора 15 кОм на землю моментально исправило положение. И теперь я могу спокойно настраивать последовательный стык.

Всем спасибо, вопрос закрыт. К счастью - с положительным результатом.

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


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

 

59 minutes ago, vovka1960 said:

Лишь замечание, что он IPD (internally pulled down - внутренняя подтяжка к земле) и просьба не подтягивать снаружи вверх.

Какой у вас интересный перевод фразы. 

AEA7 N27 IPD For proper C6455 device operation, do not oppose the IPD on this pin.

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


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

39 minutes ago, Tpeck said:

 

Какой у вас интересный перевод фразы. 

AEA7 N27 IPD For proper C6455 device operation, do not oppose the IPD on this pin.

Киньте в меня камнем, если я что-то наврал!

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


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

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

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

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

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

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

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

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

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

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