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

 
 
> SSP 1986ВЕ92У
woofer46
сообщение Apr 1 2016, 16:55
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 3-06-15
Пользователь №: 86 990



Добрый день!
Может кому-то приходилось работать с российским контроллером ARM Cortex M3, не могу разобраться почему SSP (SPI Texas Instruments) в режиме slave, нестабильно работает.

Передаю данные с частотой 1.5 Мбит, но некоторые данные стабильно теряются, в чем может быть ошибка?
Код
void main()
{
.......................................................
    MDR_RST_CLK->PER_CLOCK|=(1<<20)|(1<<23)|(1<<24);
    MDR_PORTD->ANALOG|=(1<<2)|(1<<6);              
    MDR_PORTD->FUNC=0x2020;                                        
    MDR_PORTD->PWR|=0x3030;                           
    MDR_PORTD->OE|=(1<<6);                          
    // PS! PD5 is broken! Not work!
    MDR_PORTC->ANALOG|=1|(1<<1);                    
    MDR_PORTC->FUNC=0x0F;                    
    MDR_PORTC->PWR|=0x0F;                              
    MDR_RST_CLK->SSP_CLOCK|=(1<<25);                 // Enable SSP2
           MDR_SSP2->CR0=15|(1<<4);                        
    MDR_SSP2->CR1|=1<<2;                                 // Slave
    MDR_SSP2->CR1|=1<<1;                                 // Start SSP2
...................................................................
}


Код
    while (1)
    {
...............
    while((MDR_SSP2->SR&4)==0);
    tx=MDR_SSP2->DR;
    while((MDR_UART1->FR&64)!=0);
    MDR_UART1->DR=tx;
...............
         }


В SSP передаю счетчик от 0 до 63, на выходе UART получаю со сбоями:

CODE
0
1
2
3
4
5
6
7
8
9
10
11
12
13
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
0
1
36

37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
0
1
2
36

37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
0
1
2
37

38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
0
1
2
37

38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
0
1
36

37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
0
36

37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
0
1
2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
37
38
39
40
41
42
43
44
45
46
47

Спасибо!

Сообщение отредактировал IgorKossak - Apr 1 2016, 17:43
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
adnega
сообщение Apr 1 2016, 20:11
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Советую не нарушать.

Т.е. выполнять из flash нужно только при MODE=001.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
woofer46
сообщение Apr 1 2016, 20:25
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 3-06-15
Пользователь №: 86 990



Цитата(adnega @ Apr 1 2016, 23:11) *
Советую не нарушать.

Т.е. выполнять из flash нужно только при MODE=001.

Спасибо, cейчас для прошивки использую PD1/TCK и PD0/TMS
PD2 используется для приема по SSP.
Соответственно если я линии программатора переопределю на JTAG A (MODE=001), то возможно проблема пропадет?
Go to the top of the page
 
+Quote Post
adnega
сообщение Apr 1 2016, 20:34
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(woofer46 @ Apr 1 2016, 23:25) *
Соответственно если я линии программатора переопределю на JTAG A (MODE=001), то возможно проблема пропадет?

Скажем так - пока не переопределите на MODE=001 будут чудеса.
Я долго страдал за выходы таймера на PB при MODE=000.
Прошивал по UART и из него же стартовал - все изумительно работало.
Как только перезагружался в MODE=000 все работало около секунды, затем некоторые ШИМ-выходы таймера пропадали.
Но в проекте нужно и PB, и PD. Как стартануть из flash без JTAG и/или без потери альтернативного функционала на ногах JTAG?
Судя по документации - никак. Камень после STM32 - что-то с чем-то sm.gif
Go to the top of the page
 
+Quote Post
woofer46
сообщение Apr 1 2016, 21:59
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 3-06-15
Пользователь №: 86 990



Цитата(adnega @ Apr 1 2016, 23:34) *
Скажем так - пока не переопределите на MODE=001 будут чудеса.
Я долго страдал за выходы таймера на PB при MODE=000.
Прошивал по UART и из него же стартовал - все изумительно работало.
Как только перезагружался в MODE=000 все работало около секунды, затем некоторые ШИМ-выходы таймера пропадали.
Но в проекте нужно и PB, и PD. Как стартануть из flash без JTAG и/или без потери альтернативного функционала на ногах JTAG?
Судя по документации - никак. Камень после STM32 - что-то с чем-то sm.gif

Спасибо! После выходных попробую : )
Go to the top of the page
 
+Quote Post



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

 


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


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